From d91067220faa5e3761b48ee89fa7ced1a9257236 Mon Sep 17 00:00:00 2001 From: Niels Date: Thu, 13 Oct 2016 21:00:48 +0200 Subject: [PATCH 01/19] added missing overflow check for #329 --- README.md | 2 +- src/json.hpp | 7 +++++++ src/json.hpp.re2c | 7 +++++++ test/src/unit-regression.cpp | 6 ++++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0691419d..8fde28bc 100644 --- a/README.md +++ b/README.md @@ -516,7 +516,7 @@ To compile and run the tests, you need to execute $ make check =============================================================================== -All tests passed (8905168 assertions in 35 test cases) +All tests passed (8905169 assertions in 35 test cases) ``` Alternatively, you can use [https://cmake.org](CMake) and run diff --git a/src/json.hpp b/src/json.hpp index 7e7701a9..35a211fc 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -8960,6 +8960,13 @@ basic_json_parser_63: { // parse with strtod result.m_value.number_float = str_to_float_t(static_cast(nullptr), NULL); + + // replace infinity and NAN by null + if (not std::isfinite(result.m_value.number_float)) + { + type = value_t::null; + result.m_value = basic_json::json_value(); + } } // save the type diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index c74bf11f..b9c538f9 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -8257,6 +8257,13 @@ class basic_json { // parse with strtod result.m_value.number_float = str_to_float_t(static_cast(nullptr), NULL); + + // replace infinity and NAN by null + if (not std::isfinite(result.m_value.number_float)) + { + type = value_t::null; + result.m_value = basic_json::json_value(); + } } // save the type diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index 6d93e744..fee861e9 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -489,4 +489,10 @@ TEST_CASE("regression tests") j["/this/that"_json_pointer] = 27; CHECK(j == json({{"this", {{"that", 27}}}})); } + + SECTION("issue #329 - serialized value not always can be parsed") + { + json j = json::parse("22e2222"); + CHECK(j == json()); + } } From cb2d41e3a08cfa38c92cca93b87a34ca8c0e7fc1 Mon Sep 17 00:00:00 2001 From: Denis Andrejew Date: Sun, 16 Oct 2016 02:46:43 +0200 Subject: [PATCH 02/19] fix minor grammar/style issue in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aa698c76..d3c10703 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ There are myriads of [JSON](http://json.org) libraries out there, and each may even have its reason to exist. Our class had these design goals: -- **Intuitive syntax**. In languages such as Python, JSON feels like a first class data type. We used all the operator magic of modern C++ to achieve the same feeling in your code. Check out the [examples below](#examples) and you know, what I mean. +- **Intuitive syntax**. In languages such as Python, JSON feels like a first class data type. We used all the operator magic of modern C++ to achieve the same feeling in your code. Check out the [examples below](#examples) and you'll know what I mean. - **Trivial integration**. Our whole code consists of a single header file [`json.hpp`](https://github.com/nlohmann/json/blob/develop/src/json.hpp). That's it. No library, no subproject, no dependencies, no complex build system. The class is written in vanilla C++11. All in all, everything should require no adjustment of your compiler flags or project settings. From e310850353216d87023e076e21c7a9d9a4f131c9 Mon Sep 17 00:00:00 2001 From: Niels Date: Sun, 16 Oct 2016 23:46:24 +0200 Subject: [PATCH 03/19] cleanup after #336 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d3c10703..9a651cf1 100644 --- a/README.md +++ b/README.md @@ -498,6 +498,7 @@ I deeply appreciate the help of the following people. - [Vasil Dimov](https://github.com/vasild) fixed the documentation regarding conversions from `std::multiset`. - [ChristophJud](https://github.com/ChristophJud) overworked the CMake files to ease project inclusion. - [Vladimir Petrigo](https://github.com/vpetrigo) made a SFINAE hack more readable. +- [Denis Andrejew](https://github.com/seeekr) fixed a grammar issue in the README file. Thanks a lot for helping out! From 79d9fdc0161214b2084744a15b200996a7428fc9 Mon Sep 17 00:00:00 2001 From: Niels Date: Sat, 22 Oct 2016 18:57:58 +0200 Subject: [PATCH 04/19] user-defined string literals exploit string length (#340) --- src/json.hpp | 10 ++++++---- src/json.hpp.re2c | 10 ++++++---- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 9c0df9d4..83cbfdb1 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -10590,13 +10590,14 @@ can be used by adding `"_json"` to a string literal and returns a JSON object if no parse error occurred. @param[in] s a string representation of a JSON object +@param[in] n the length of string @a s @return a JSON object @since version 1.0.0 */ -inline nlohmann::json operator "" _json(const char* s, std::size_t) +inline nlohmann::json operator "" _json(const char* s, std::size_t n) { - return nlohmann::json::parse(s); + return nlohmann::json::parse(s, s + n); } /*! @@ -10607,13 +10608,14 @@ can be used by adding `"_json_pointer"` to a string literal and returns a JSON p object if no parse error occurred. @param[in] s a string representation of a JSON Pointer +@param[in] n the length of string @a s @return a JSON pointer object @since version 2.0.0 */ -inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t) +inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t n) { - return nlohmann::json::json_pointer(s); + return nlohmann::json::json_pointer(std::string(s, n)); } // restore GCC/clang diagnostic settings diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 656e13b3..f36879f8 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -9887,13 +9887,14 @@ can be used by adding `"_json"` to a string literal and returns a JSON object if no parse error occurred. @param[in] s a string representation of a JSON object +@param[in] n the length of string @a s @return a JSON object @since version 1.0.0 */ -inline nlohmann::json operator "" _json(const char* s, std::size_t) +inline nlohmann::json operator "" _json(const char* s, std::size_t n) { - return nlohmann::json::parse(s); + return nlohmann::json::parse(s, s + n); } /*! @@ -9904,13 +9905,14 @@ can be used by adding `"_json_pointer"` to a string literal and returns a JSON p object if no parse error occurred. @param[in] s a string representation of a JSON Pointer +@param[in] n the length of string @a s @return a JSON pointer object @since version 2.0.0 */ -inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t) +inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t n) { - return nlohmann::json::json_pointer(s); + return nlohmann::json::json_pointer(std::string(s, n)); } // restore GCC/clang diagnostic settings From 3ebe28970a7c53ad974e14360154d09e2ca0a2a5 Mon Sep 17 00:00:00 2001 From: Niels Date: Sun, 23 Oct 2016 17:25:07 +0200 Subject: [PATCH 05/19] small fixes --- doc/json.gif | Bin 449740 -> 454722 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/json.gif b/doc/json.gif index 2770cfb36fa4e0b944646f7c0e8bf03fa28381c6..943c06af6606c7aa89f687984cf09a3115d5b441 100644 GIT binary patch delta 76738 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%0DmpxXxk* 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 UieTWhBo5Rc^leF;!DPw*0Ui}-pa1{> From a29fcae409767fe9947e28c3c06938da320a5152 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Wed, 26 Oct 2016 09:20:40 +0200 Subject: [PATCH 06/19] fixed Cmake link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9a651cf1..1f265bf1 100644 --- a/README.md +++ b/README.md @@ -520,7 +520,7 @@ $ make check All tests passed (8905168 assertions in 35 test cases) ``` -Alternatively, you can use [https://cmake.org](CMake) and run +Alternatively, you can use [CMake](https://cmake.org) and run ```sh $ mkdir build From a2808322c66324cedc3a2f5a9dba0f43267f715b Mon Sep 17 00:00:00 2001 From: Niels Date: Wed, 26 Oct 2016 18:57:56 +0200 Subject: [PATCH 07/19] add test files from https://github.com/nst/JSONTestSuite --- test/data/nst_json_testsuite/LICENSE | 21 ++++++++++++++++++ .../i_number_neg_int_huge_exp.json | 1 + .../i_number_pos_double_huge_exp.json | 1 + .../i_object_key_lone_2nd_surrogate.json | 1 + ..._string_1st_surrogate_but_2nd_missing.json | 1 + ...tring_1st_valid_surrogate_2nd_invalid.json | 1 + ...tring_UTF-16_invalid_lonely_surrogate.json | 1 + .../i_string_UTF-16_invalid_surrogate.json | 1 + .../i_string_UTF-8_invalid_sequence.json | 1 + ...incomplete_surrogate_and_escape_valid.json | 1 + .../i_string_incomplete_surrogate_pair.json | 1 + ...ng_incomplete_surrogates_escape_valid.json | 1 + .../i_string_inverted_surrogates_U+1D11E.json | 1 + .../i_string_lone_second_surrogate.json | 1 + .../i_string_not_in_unicode_range.json | 1 + .../i_string_truncated-utf-8.json | 1 + .../i_string_unicode_U+10FFFE_nonchar.json | 1 + .../i_string_unicode_U+1FFFE_nonchar.json | 1 + .../i_string_unicode_U+FDD0_nonchar.json | 1 + .../i_string_unicode_U+FFFE_nonchar.json | 1 + .../i_structure_500_nested_arrays.json | 1 + .../i_structure_UTF-8_BOM_empty_object.json | 1 + .../n_array_1_true_without_comma.json | 1 + .../test_parsing/n_array_a_invalid_utf8.json | 1 + .../n_array_colon_instead_of_comma.json | 1 + .../n_array_comma_after_close.json | 1 + .../n_array_comma_and_number.json | 1 + .../test_parsing/n_array_double_comma.json | 1 + .../n_array_double_extra_comma.json | 1 + .../test_parsing/n_array_extra_close.json | 1 + .../test_parsing/n_array_extra_comma.json | 1 + .../test_parsing/n_array_incomplete.json | 1 + .../n_array_incomplete_invalid_value.json | 1 + .../n_array_inner_array_no_comma.json | 1 + .../test_parsing/n_array_invalid_utf8.json | 1 + .../n_array_items_separated_by_semicolon.json | 1 + .../test_parsing/n_array_just_comma.json | 1 + .../test_parsing/n_array_just_minus.json | 1 + .../test_parsing/n_array_missing_value.json | 1 + .../n_array_newlines_unclosed.json | 3 +++ .../n_array_number_and_comma.json | 1 + .../n_array_number_and_several_commas.json | 1 + .../n_array_spaces_vertical_tab_formfeed.json | 1 + .../test_parsing/n_array_star_inside.json | 1 + .../test_parsing/n_array_unclosed.json | 1 + .../n_array_unclosed_trailing_comma.json | 1 + .../n_array_unclosed_with_new_lines.json | 3 +++ .../n_array_unclosed_with_object_inside.json | 1 + .../test_parsing/n_incomplete_false.json | 1 + .../test_parsing/n_incomplete_null.json | 1 + .../test_parsing/n_incomplete_true.json | 1 + .../test_parsing/n_number_++.json | 1 + .../test_parsing/n_number_+1.json | 1 + .../test_parsing/n_number_+Inf.json | 1 + .../test_parsing/n_number_-01.json | 1 + .../test_parsing/n_number_-1.0..json | 1 + .../test_parsing/n_number_-2..json | 1 + .../test_parsing/n_number_-NaN.json | 1 + .../test_parsing/n_number_.-1.json | 1 + .../test_parsing/n_number_.2e-3.json | 1 + .../test_parsing/n_number_0.1.2.json | 1 + .../test_parsing/n_number_0.3e+.json | 1 + .../test_parsing/n_number_0.3e.json | 1 + .../test_parsing/n_number_0.e1.json | 1 + .../test_parsing/n_number_0_capital_E+.json | 1 + .../test_parsing/n_number_0_capital_E.json | 1 + .../test_parsing/n_number_0e+.json | 1 + .../test_parsing/n_number_0e.json | 1 + .../test_parsing/n_number_1.0e+.json | 1 + .../test_parsing/n_number_1.0e-.json | 1 + .../test_parsing/n_number_1.0e.json | 1 + .../test_parsing/n_number_1_000.json | 1 + .../test_parsing/n_number_1eE2.json | 1 + .../test_parsing/n_number_2.e+3.json | 1 + .../test_parsing/n_number_2.e-3.json | 1 + .../test_parsing/n_number_2.e3.json | 1 + .../test_parsing/n_number_9.e+.json | 1 + .../test_parsing/n_number_Inf.json | 1 + .../test_parsing/n_number_NaN.json | 1 + .../n_number_U+FF11_fullwidth_digit_one.json | 1 + .../test_parsing/n_number_expression.json | 1 + .../test_parsing/n_number_hex_1_digit.json | 1 + .../test_parsing/n_number_hex_2_digits.json | 1 + .../test_parsing/n_number_infinity.json | 1 + .../test_parsing/n_number_invalid+-.json | 1 + .../n_number_invalid-negative-real.json | 1 + .../n_number_invalid-utf-8-in-bigger-int.json | 1 + .../n_number_invalid-utf-8-in-exponent.json | 1 + .../n_number_invalid-utf-8-in-int.json | 1 + .../test_parsing/n_number_minus_infinity.json | 1 + ...mber_minus_sign_with_trailing_garbage.json | 1 + .../test_parsing/n_number_minus_space_1.json | 1 + .../n_number_neg_int_starting_with_zero.json | 1 + .../n_number_neg_real_without_int_part.json | 1 + .../n_number_neg_with_garbage_at_end.json | 1 + .../n_number_real_garbage_after_e.json | 1 + ...number_real_with_invalid_utf8_after_e.json | 1 + ...n_number_real_without_fractional_part.json | 1 + .../n_number_starting_with_dot.json | 1 + .../test_parsing/n_number_then_00.json | Bin 0 -> 2 bytes .../test_parsing/n_number_with_alpha.json | 1 + .../n_number_with_alpha_char.json | 1 + .../n_number_with_leading_zero.json | 1 + .../test_parsing/n_object_bad_value.json | 1 + .../test_parsing/n_object_bracket_key.json | 1 + .../n_object_comma_instead_of_colon.json | 1 + .../test_parsing/n_object_double_colon.json | 1 + .../test_parsing/n_object_emoji.json | 1 + .../test_parsing/n_object_garbage_at_end.json | 1 + .../n_object_key_with_single_quotes.json | 1 + .../test_parsing/n_object_missing_colon.json | 1 + .../test_parsing/n_object_missing_key.json | 1 + .../n_object_missing_semicolon.json | 1 + .../test_parsing/n_object_missing_value.json | 1 + .../test_parsing/n_object_no-colon.json | 1 + .../test_parsing/n_object_non_string_key.json | 1 + ...on_string_key_but_huge_number_instead.json | 1 + ...n_object_pi_in_key_and_trailing_comma.json | 1 + .../n_object_repeated_null_null.json | 1 + .../n_object_several_trailing_commas.json | 1 + .../test_parsing/n_object_single_quote.json | 1 + .../test_parsing/n_object_trailing_comma.json | 1 + .../n_object_trailing_comment.json | 1 + .../n_object_trailing_comment_open.json | 1 + .../n_object_trailing_comment_slash_open.json | 1 + ...railing_comment_slash_open_incomplete.json | 1 + .../n_object_two_commas_in_a_row.json | 1 + .../test_parsing/n_object_unquoted_key.json | 1 + .../n_object_unterminated-value.json | 1 + .../n_object_with_single_string.json | 1 + .../n_object_with_trailing_garbage.json | 1 + .../test_parsing/n_single_space.json | 1 + .../n_string_1_surrogate_then_escape u.json | 1 + .../n_string_1_surrogate_then_escape u1.json | 1 + .../n_string_1_surrogate_then_escape u1x.json | 1 + .../n_string_1_surrogate_then_escape.json | 1 + .../n_string_UTF-16_incomplete_surrogate.json | 1 + .../n_string_UTF8_surrogate_U+D800.json | 1 + .../n_string_accentuated_char_no_quotes.json | 1 + .../test_parsing/n_string_backslash_00.json | Bin 0 -> 6 bytes .../test_parsing/n_string_escape_x.json | 1 + .../n_string_escaped_backslash_bad.json | 1 + .../n_string_escaped_ctrl_char_tab.json | 1 + .../test_parsing/n_string_escaped_emoji.json | 1 + .../n_string_incomplete_escape.json | 1 + ...n_string_incomplete_escaped_character.json | 1 + ...g_incomplete_surrogate_escape_invalid.json | 1 + .../n_string_invalid-utf-8-in-escape.json | 1 + .../n_string_invalid_backslash_esc.json | 1 + .../n_string_invalid_unicode_escape.json | 1 + .../test_parsing/n_string_invalid_utf-8.json | 1 + .../n_string_invalid_utf8_after_escape.json | 1 + .../test_parsing/n_string_iso_latin_1.json | 1 + .../n_string_leading_uescaped_thinspace.json | 1 + .../n_string_lone_utf8_continuation_byte.json | 1 + .../n_string_no_quotes_with_bad_escape.json | 1 + .../n_string_overlong_sequence_2_bytes.json | 1 + .../n_string_overlong_sequence_6_bytes.json | 1 + ...string_overlong_sequence_6_bytes_null.json | 1 + .../n_string_single_doublequote.json | 1 + .../test_parsing/n_string_single_quote.json | 1 + ...string_single_string_no_double_quotes.json | 1 + .../n_string_start_escape_unclosed.json | 1 + .../n_string_unescaped_crtl_char.json | Bin 0 -> 7 bytes .../n_string_unescaped_newline.json | 2 ++ .../test_parsing/n_string_unescaped_tab.json | 1 + .../n_string_unicode_CapitalU.json | 1 + .../n_string_with_trailing_garbage.json | 1 + .../n_structure_100000_opening_arrays.json | 1 + .../test_parsing/n_structure_<.>.json | 1 + .../test_parsing/n_structure_.json | 1 + .../n_structure_U+2060_word_joined.json | 1 + .../n_structure_UTF8_BOM_no_data.json | 1 + .../n_structure_array_trailing_garbage.json | 1 + ...tructure_array_with_extra_array_close.json | 1 + ..._structure_array_with_unclosed_string.json | 1 + .../n_structure_ascii-unicode-identifier.json | 1 + .../n_structure_capitalized_True.json | 1 + .../n_structure_close_unopened_array.json | 1 + ...ucture_comma_instead_of_closing_brace.json | 1 + .../n_structure_double_array.json | 1 + .../test_parsing/n_structure_end_array.json | 1 + .../n_structure_incomplete_UTF8_BOM.json | 1 + .../n_structure_lone-invalid-utf-8.json | 1 + .../n_structure_lone-open-bracket.json | 1 + .../test_parsing/n_structure_no_data.json | 0 .../n_structure_null-byte-outside-string.json | Bin 0 -> 3 bytes ...tructure_number_with_trailing_garbage.json | 1 + ...ure_object_followed_by_closing_object.json | 1 + .../n_structure_object_unclosed_no_value.json | 1 + .../n_structure_object_with_comment.json | 1 + ...tructure_object_with_trailing_garbage.json | 1 + .../n_structure_open_array_apostrophe.json | 1 + .../n_structure_open_array_comma.json | 1 + .../n_structure_open_array_object.json | 1 + .../n_structure_open_array_open_object.json | 1 + .../n_structure_open_array_open_string.json | 1 + .../n_structure_open_array_string.json | 1 + .../test_parsing/n_structure_open_object.json | 1 + .../n_structure_open_object_close_array.json | 1 + .../n_structure_open_object_comma.json | 1 + .../n_structure_open_object_open_array.json | 1 + .../n_structure_open_object_open_string.json | 1 + ...e_open_object_string_with_apostrophes.json | 1 + .../test_parsing/n_structure_open_open.json | 1 + .../n_structure_single_point.json | 1 + .../test_parsing/n_structure_single_star.json | 1 + .../test_parsing/n_structure_trailing_#.json | 1 + ...n_structure_uescaped_LF_before_string.json | 1 + .../n_structure_unclosed_array.json | 1 + ...structure_unclosed_array_partial_null.json | 1 + ...cture_unclosed_array_unfinished_false.json | 1 + ...ucture_unclosed_array_unfinished_true.json | 1 + .../n_structure_unclosed_object.json | 1 + .../n_structure_unicode-identifier.json | 1 + ...ructure_whitespace_U+2060_word_joiner.json | 1 + .../n_structure_whitespace_formfeed.json | 1 + .../y_array_arraysWithSpaces.json | 1 + .../test_parsing/y_array_empty-string.json | 1 + .../test_parsing/y_array_empty.json | 1 + .../y_array_ending_with_newline.json | 1 + .../test_parsing/y_array_false.json | 1 + .../test_parsing/y_array_heterogeneous.json | 1 + .../test_parsing/y_array_null.json | 1 + .../y_array_with_1_and_newline.json | 2 ++ .../y_array_with_leading_space.json | 1 + .../y_array_with_several_null.json | 1 + .../y_array_with_trailing_space.json | 1 + .../test_parsing/y_number.json | 1 + .../test_parsing/y_number_0e+1.json | 1 + .../test_parsing/y_number_0e1.json | 1 + .../test_parsing/y_number_after_space.json | 1 + .../y_number_double_close_to_zero.json | 1 + .../y_number_double_huge_neg_exp.json | 1 + .../test_parsing/y_number_huge_exp.json | 1 + .../test_parsing/y_number_int_with_exp.json | 1 + .../test_parsing/y_number_minus_zero.json | 1 + .../test_parsing/y_number_negative_int.json | 1 + .../test_parsing/y_number_negative_one.json | 1 + .../test_parsing/y_number_negative_zero.json | 1 + .../test_parsing/y_number_real_capital_e.json | 1 + .../y_number_real_capital_e_neg_exp.json | 1 + .../y_number_real_capital_e_pos_exp.json | 1 + .../test_parsing/y_number_real_exponent.json | 1 + .../y_number_real_fraction_exponent.json | 1 + .../test_parsing/y_number_real_neg_exp.json | 1 + .../y_number_real_neg_overflow.json | 1 + .../y_number_real_pos_exponent.json | 1 + .../y_number_real_pos_overflow.json | 1 + .../test_parsing/y_number_real_underflow.json | 1 + .../test_parsing/y_number_simple_int.json | 1 + .../test_parsing/y_number_simple_real.json | 1 + .../y_number_too_big_neg_int.json | 1 + .../y_number_too_big_pos_int.json | 1 + .../y_number_very_big_negative_int.json | 1 + .../test_parsing/y_object.json | 1 + .../test_parsing/y_object_basic.json | 1 + .../test_parsing/y_object_duplicated_key.json | 1 + .../y_object_duplicated_key_and_value.json | 1 + .../test_parsing/y_object_empty.json | 1 + .../test_parsing/y_object_empty_key.json | 1 + .../y_object_escaped_null_in_key.json | 1 + .../y_object_extreme_numbers.json | 1 + .../test_parsing/y_object_long_strings.json | 1 + .../test_parsing/y_object_simple.json | 1 + .../test_parsing/y_object_string_unicode.json | 1 + .../test_parsing/y_object_with_newlines.json | 3 +++ .../y_string_1_2_3_bytes_UTF-8_sequences.json | 1 + ...rogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json | 1 + .../y_string_accepted_surrogate_pair.json | 1 + .../y_string_accepted_surrogate_pairs.json | 1 + .../y_string_allowed_escapes.json | 1 + ...y_string_backslash_and_u_escaped_zero.json | 1 + .../y_string_backslash_doublequotes.json | 1 + .../test_parsing/y_string_comments.json | 1 + .../y_string_double_escape_a.json | 1 + .../y_string_double_escape_n.json | 1 + .../y_string_escaped_control_character.json | 1 + .../y_string_escaped_noncharacter.json | 1 + .../test_parsing/y_string_in_array.json | 1 + .../y_string_in_array_with_leading_space.json | 1 + .../y_string_last_surrogates_1_and_2.json | 1 + .../y_string_newline_uescaped.json | 1 + ...y_string_nonCharacterInUTF-8_U+10FFFF.json | 1 + .../y_string_nonCharacterInUTF-8_U+1FFFF.json | 1 + .../y_string_nonCharacterInUTF-8_U+FFFF.json | 1 + .../test_parsing/y_string_null_escape.json | 1 + .../test_parsing/y_string_one-byte-utf-8.json | 1 + .../test_parsing/y_string_pi.json | 1 + .../test_parsing/y_string_simple_ascii.json | 1 + .../test_parsing/y_string_space.json | 1 + .../y_string_three-byte-utf-8.json | 1 + .../test_parsing/y_string_two-byte-utf-8.json | 1 + .../y_string_u+2028_line_sep.json | 1 + .../test_parsing/y_string_u+2029_par_sep.json | 1 + .../test_parsing/y_string_uEscape.json | 1 + .../y_string_unescaped_char_delete.json | 1 + .../test_parsing/y_string_unicode.json | 1 + .../y_string_unicodeEscapedBackslash.json | 1 + .../test_parsing/y_string_unicode_2.json | 1 + ...tring_unicode_U+200B_ZERO_WIDTH_SPACE.json | 1 + ..._string_unicode_U+2064_invisible_plus.json | 1 + ...y_string_unicode_escaped_double_quote.json | 1 + .../test_parsing/y_string_utf16.json | Bin 0 -> 12 bytes .../test_parsing/y_string_utf8.json | 1 + .../y_string_with_del_character.json | 1 + .../y_structure_lonely_false.json | 1 + .../test_parsing/y_structure_lonely_int.json | 1 + .../y_structure_lonely_negative_real.json | 1 + .../test_parsing/y_structure_lonely_null.json | 1 + .../y_structure_lonely_string.json | 1 + .../test_parsing/y_structure_lonely_true.json | 1 + .../y_structure_string_empty.json | 1 + .../y_structure_trailing_newline.json | 1 + .../y_structure_true_in_array.json | 1 + .../y_structure_whitespace_array.json | 1 + 316 files changed, 338 insertions(+) create mode 100644 test/data/nst_json_testsuite/LICENSE create mode 100755 test/data/nst_json_testsuite/test_parsing/i_number_neg_int_huge_exp.json create mode 100755 test/data/nst_json_testsuite/test_parsing/i_number_pos_double_huge_exp.json create mode 100644 test/data/nst_json_testsuite/test_parsing/i_object_key_lone_2nd_surrogate.json create mode 100644 test/data/nst_json_testsuite/test_parsing/i_string_1st_surrogate_but_2nd_missing.json create mode 100644 test/data/nst_json_testsuite/test_parsing/i_string_1st_valid_surrogate_2nd_invalid.json create mode 100755 test/data/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_lonely_surrogate.json create mode 100755 test/data/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_surrogate.json create mode 100755 test/data/nst_json_testsuite/test_parsing/i_string_UTF-8_invalid_sequence.json create mode 100755 test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_and_escape_valid.json create mode 100755 test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_pair.json create mode 100755 test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogates_escape_valid.json create mode 100755 test/data/nst_json_testsuite/test_parsing/i_string_inverted_surrogates_U+1D11E.json create mode 100644 test/data/nst_json_testsuite/test_parsing/i_string_lone_second_surrogate.json create mode 100644 test/data/nst_json_testsuite/test_parsing/i_string_not_in_unicode_range.json create mode 100644 test/data/nst_json_testsuite/test_parsing/i_string_truncated-utf-8.json create mode 100644 test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+10FFFE_nonchar.json create mode 100644 test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+1FFFE_nonchar.json create mode 100644 test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+FDD0_nonchar.json create mode 100644 test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+FFFE_nonchar.json create mode 100644 test/data/nst_json_testsuite/test_parsing/i_structure_500_nested_arrays.json create mode 100755 test/data/nst_json_testsuite/test_parsing/i_structure_UTF-8_BOM_empty_object.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_1_true_without_comma.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_a_invalid_utf8.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_colon_instead_of_comma.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_comma_after_close.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_array_comma_and_number.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_array_double_comma.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_double_extra_comma.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_extra_close.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_extra_comma.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_incomplete.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_incomplete_invalid_value.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_inner_array_no_comma.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_invalid_utf8.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_array_items_separated_by_semicolon.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_array_just_comma.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_array_just_minus.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_missing_value.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_newlines_unclosed.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_array_number_and_comma.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_array_number_and_several_commas.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_array_spaces_vertical_tab_formfeed.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_array_star_inside.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_unclosed.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_unclosed_trailing_comma.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_unclosed_with_new_lines.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_array_unclosed_with_object_inside.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_incomplete_false.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_incomplete_null.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_incomplete_true.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_++.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_+1.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_+Inf.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_-01.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_-1.0..json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_-2..json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_-NaN.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_.-1.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_.2e-3.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_0.1.2.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_0.3e+.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_0.3e.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_0.e1.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_0_capital_E+.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_0_capital_E.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_0e+.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_0e.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_1.0e+.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_1.0e-.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_1.0e.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_1_000.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_1eE2.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_2.e+3.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_2.e-3.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_2.e3.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_9.e+.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_Inf.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_NaN.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_U+FF11_fullwidth_digit_one.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_expression.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_hex_1_digit.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_hex_2_digits.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_infinity.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_invalid+-.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_invalid-negative-real.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-bigger-int.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-exponent.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-int.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_minus_infinity.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_minus_sign_with_trailing_garbage.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_minus_space_1.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_neg_int_starting_with_zero.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_neg_real_without_int_part.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_neg_with_garbage_at_end.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_real_garbage_after_e.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_real_with_invalid_utf8_after_e.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_real_without_fractional_part.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_starting_with_dot.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_then_00.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_with_alpha.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_number_with_alpha_char.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_number_with_leading_zero.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_bad_value.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_bracket_key.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_comma_instead_of_colon.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_double_colon.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_emoji.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_garbage_at_end.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_object_key_with_single_quotes.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_missing_colon.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_object_missing_key.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_object_missing_semicolon.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_missing_value.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_no-colon.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_object_non_string_key.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_object_non_string_key_but_huge_number_instead.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_pi_in_key_and_trailing_comma.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_object_repeated_null_null.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_object_several_trailing_commas.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_single_quote.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_object_trailing_comma.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_open.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open_incomplete.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_object_two_commas_in_a_row.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_unquoted_key.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_unterminated-value.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_with_single_string.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_object_with_trailing_garbage.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_single_space.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1x.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_string_UTF-16_incomplete_surrogate.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_UTF8_surrogate_U+D800.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_accentuated_char_no_quotes.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_backslash_00.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_escape_x.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_string_escaped_backslash_bad.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_escaped_ctrl_char_tab.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_escaped_emoji.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_string_incomplete_escape.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_string_incomplete_escaped_character.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_string_incomplete_surrogate_escape_invalid.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_invalid-utf-8-in-escape.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_string_invalid_backslash_esc.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_invalid_unicode_escape.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf-8.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf8_after_escape.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_iso_latin_1.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_string_leading_uescaped_thinspace.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_lone_utf8_continuation_byte.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_no_quotes_with_bad_escape.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_2_bytes.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes_null.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_string_single_doublequote.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_single_quote.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_string_single_string_no_double_quotes.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_start_escape_unclosed.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_string_unescaped_crtl_char.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_unescaped_newline.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_unescaped_tab.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_unicode_CapitalU.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_string_with_trailing_garbage.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_100000_opening_arrays.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_structure_<.>.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_structure_.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_U+2060_word_joined.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_structure_UTF8_BOM_no_data.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_array_trailing_garbage.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_structure_array_with_extra_array_close.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_structure_array_with_unclosed_string.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_ascii-unicode-identifier.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_structure_capitalized_True.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_structure_close_unopened_array.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_comma_instead_of_closing_brace.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_structure_double_array.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_end_array.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_structure_incomplete_UTF8_BOM.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_lone-invalid-utf-8.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_lone-open-bracket.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_no_data.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_null-byte-outside-string.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_number_with_trailing_garbage.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_object_followed_by_closing_object.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_object_unclosed_no_value.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_object_with_comment.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_object_with_trailing_garbage.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_open_array_apostrophe.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_open_array_comma.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_open_array_object.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_open_array_open_object.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_open_array_open_string.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_open_array_string.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_open_object.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_structure_open_object_close_array.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_open_object_comma.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_open_object_open_array.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_open_object_open_string.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_open_object_string_with_apostrophes.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_open_open.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_single_point.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_structure_single_star.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_trailing_#.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_structure_uescaped_LF_before_string.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_partial_null.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_false.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_true.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_object.json create mode 100644 test/data/nst_json_testsuite/test_parsing/n_structure_unicode-identifier.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_structure_whitespace_U+2060_word_joiner.json create mode 100755 test/data/nst_json_testsuite/test_parsing/n_structure_whitespace_formfeed.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_array_arraysWithSpaces.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_array_empty-string.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_array_empty.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_array_ending_with_newline.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_array_false.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_array_heterogeneous.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_array_null.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_array_with_1_and_newline.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_array_with_leading_space.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_array_with_several_null.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_array_with_trailing_space.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_number_0e+1.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_number_0e1.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_after_space.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_number_double_close_to_zero.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_double_huge_neg_exp.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_huge_exp.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_number_int_with_exp.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_number_minus_zero.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_negative_int.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_negative_one.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_negative_zero.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e_neg_exp.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e_pos_exp.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_real_exponent.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_real_fraction_exponent.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_real_neg_exp.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_real_neg_overflow.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_real_pos_exponent.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_real_pos_overflow.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_real_underflow.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_simple_int.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_simple_real.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_too_big_neg_int.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_number_too_big_pos_int.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_number_very_big_negative_int.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_object.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_object_basic.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_object_duplicated_key.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_object_duplicated_key_and_value.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_object_empty.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_object_empty_key.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_object_escaped_null_in_key.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_object_extreme_numbers.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_object_long_strings.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_object_simple.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_object_string_unicode.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_object_with_newlines.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_UTF-16_Surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pair.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pairs.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_allowed_escapes.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_backslash_and_u_escaped_zero.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_backslash_doublequotes.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_comments.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_double_escape_a.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_double_escape_n.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_escaped_control_character.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_escaped_noncharacter.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_in_array.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_in_array_with_leading_space.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_last_surrogates_1_and_2.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_newline_uescaped.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+1FFFF.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_null_escape.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_one-byte-utf-8.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_pi.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_simple_ascii.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_space.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_three-byte-utf-8.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_two-byte-utf-8.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_u+2028_line_sep.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_u+2029_par_sep.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_uEscape.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_unescaped_char_delete.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_unicode.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_unicodeEscapedBackslash.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_unicode_2.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_unicode_U+2064_invisible_plus.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_unicode_escaped_double_quote.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_utf16.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_string_utf8.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_string_with_del_character.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_structure_lonely_false.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_structure_lonely_int.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_structure_lonely_negative_real.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_structure_lonely_null.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_structure_lonely_string.json create mode 100755 test/data/nst_json_testsuite/test_parsing/y_structure_lonely_true.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_structure_string_empty.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_structure_trailing_newline.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_structure_true_in_array.json create mode 100644 test/data/nst_json_testsuite/test_parsing/y_structure_whitespace_array.json diff --git a/test/data/nst_json_testsuite/LICENSE b/test/data/nst_json_testsuite/LICENSE new file mode 100644 index 00000000..c4b3621d --- /dev/null +++ b/test/data/nst_json_testsuite/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Nicolas Seriot + +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", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/test/data/nst_json_testsuite/test_parsing/i_number_neg_int_huge_exp.json b/test/data/nst_json_testsuite/test_parsing/i_number_neg_int_huge_exp.json new file mode 100755 index 00000000..3abd58a5 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_number_neg_int_huge_exp.json @@ -0,0 +1 @@ +[-1e+9999] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_number_pos_double_huge_exp.json b/test/data/nst_json_testsuite/test_parsing/i_number_pos_double_huge_exp.json new file mode 100755 index 00000000..e10a7eb6 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_number_pos_double_huge_exp.json @@ -0,0 +1 @@ +[1.5e+9999] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_object_key_lone_2nd_surrogate.json b/test/data/nst_json_testsuite/test_parsing/i_object_key_lone_2nd_surrogate.json new file mode 100644 index 00000000..5be7ebaf --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_object_key_lone_2nd_surrogate.json @@ -0,0 +1 @@ +{"\uDFAA":0} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_string_1st_surrogate_but_2nd_missing.json b/test/data/nst_json_testsuite/test_parsing/i_string_1st_surrogate_but_2nd_missing.json new file mode 100644 index 00000000..3b9e37c6 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_string_1st_surrogate_but_2nd_missing.json @@ -0,0 +1 @@ +["\uDADA"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_string_1st_valid_surrogate_2nd_invalid.json b/test/data/nst_json_testsuite/test_parsing/i_string_1st_valid_surrogate_2nd_invalid.json new file mode 100644 index 00000000..48759283 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_string_1st_valid_surrogate_2nd_invalid.json @@ -0,0 +1 @@ +["\uD888\u1234"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_lonely_surrogate.json b/test/data/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_lonely_surrogate.json new file mode 100755 index 00000000..3abbd8d8 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_lonely_surrogate.json @@ -0,0 +1 @@ +["\ud800"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_surrogate.json b/test/data/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_surrogate.json new file mode 100755 index 00000000..ffddc04f --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_surrogate.json @@ -0,0 +1 @@ +["\ud800abc"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_string_UTF-8_invalid_sequence.json b/test/data/nst_json_testsuite/test_parsing/i_string_UTF-8_invalid_sequence.json new file mode 100755 index 00000000..e2a968a1 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_string_UTF-8_invalid_sequence.json @@ -0,0 +1 @@ +["日шú"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_and_escape_valid.json b/test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_and_escape_valid.json new file mode 100755 index 00000000..3cb11d22 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_and_escape_valid.json @@ -0,0 +1 @@ +["\uD800\n"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_pair.json b/test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_pair.json new file mode 100755 index 00000000..38ec23bb --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_pair.json @@ -0,0 +1 @@ +["\uDd1ea"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogates_escape_valid.json b/test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogates_escape_valid.json new file mode 100755 index 00000000..c9cd6f6c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogates_escape_valid.json @@ -0,0 +1 @@ +["\uD800\uD800\n"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_string_inverted_surrogates_U+1D11E.json b/test/data/nst_json_testsuite/test_parsing/i_string_inverted_surrogates_U+1D11E.json new file mode 100755 index 00000000..0d5456cc --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_string_inverted_surrogates_U+1D11E.json @@ -0,0 +1 @@ +["\uDd1e\uD834"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_string_lone_second_surrogate.json b/test/data/nst_json_testsuite/test_parsing/i_string_lone_second_surrogate.json new file mode 100644 index 00000000..1dbd397f --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_string_lone_second_surrogate.json @@ -0,0 +1 @@ +["\uDFAA"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_string_not_in_unicode_range.json b/test/data/nst_json_testsuite/test_parsing/i_string_not_in_unicode_range.json new file mode 100644 index 00000000..df90a291 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_string_not_in_unicode_range.json @@ -0,0 +1 @@ +["ô¿¿¿"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_string_truncated-utf-8.json b/test/data/nst_json_testsuite/test_parsing/i_string_truncated-utf-8.json new file mode 100644 index 00000000..63c7777f --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_string_truncated-utf-8.json @@ -0,0 +1 @@ +["àÿ"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+10FFFE_nonchar.json b/test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+10FFFE_nonchar.json new file mode 100644 index 00000000..9a8370b9 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+10FFFE_nonchar.json @@ -0,0 +1 @@ +["\uDBFF\uDFFE"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+1FFFE_nonchar.json b/test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+1FFFE_nonchar.json new file mode 100644 index 00000000..c51f8ae4 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+1FFFE_nonchar.json @@ -0,0 +1 @@ +["\uD83F\uDFFE"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+FDD0_nonchar.json b/test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+FDD0_nonchar.json new file mode 100644 index 00000000..18ef151b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+FDD0_nonchar.json @@ -0,0 +1 @@ +["\uFDD0"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+FFFE_nonchar.json b/test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+FFFE_nonchar.json new file mode 100644 index 00000000..13d261fd --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+FFFE_nonchar.json @@ -0,0 +1 @@ +["\uFFFE"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_structure_500_nested_arrays.json b/test/data/nst_json_testsuite/test_parsing/i_structure_500_nested_arrays.json new file mode 100644 index 00000000..71184058 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_structure_500_nested_arrays.json @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/i_structure_UTF-8_BOM_empty_object.json b/test/data/nst_json_testsuite/test_parsing/i_structure_UTF-8_BOM_empty_object.json new file mode 100755 index 00000000..22fdca1b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/i_structure_UTF-8_BOM_empty_object.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_1_true_without_comma.json b/test/data/nst_json_testsuite/test_parsing/n_array_1_true_without_comma.json new file mode 100644 index 00000000..c14e3f6b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_1_true_without_comma.json @@ -0,0 +1 @@ +[1 true] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_a_invalid_utf8.json b/test/data/nst_json_testsuite/test_parsing/n_array_a_invalid_utf8.json new file mode 100644 index 00000000..38a86e2e --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_a_invalid_utf8.json @@ -0,0 +1 @@ +[aå] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_colon_instead_of_comma.json b/test/data/nst_json_testsuite/test_parsing/n_array_colon_instead_of_comma.json new file mode 100644 index 00000000..0d02ad44 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_colon_instead_of_comma.json @@ -0,0 +1 @@ +["": 1] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_comma_after_close.json b/test/data/nst_json_testsuite/test_parsing/n_array_comma_after_close.json new file mode 100644 index 00000000..2ccba8d9 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_comma_after_close.json @@ -0,0 +1 @@ +[""], \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_comma_and_number.json b/test/data/nst_json_testsuite/test_parsing/n_array_comma_and_number.json new file mode 100755 index 00000000..d2c84e37 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_comma_and_number.json @@ -0,0 +1 @@ +[,1] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_double_comma.json b/test/data/nst_json_testsuite/test_parsing/n_array_double_comma.json new file mode 100755 index 00000000..0431712b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_double_comma.json @@ -0,0 +1 @@ +[1,,2] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_double_extra_comma.json b/test/data/nst_json_testsuite/test_parsing/n_array_double_extra_comma.json new file mode 100644 index 00000000..3f01d312 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_double_extra_comma.json @@ -0,0 +1 @@ +["x",,] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_extra_close.json b/test/data/nst_json_testsuite/test_parsing/n_array_extra_close.json new file mode 100644 index 00000000..c12f9fae --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_extra_close.json @@ -0,0 +1 @@ +["x"]] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_extra_comma.json b/test/data/nst_json_testsuite/test_parsing/n_array_extra_comma.json new file mode 100644 index 00000000..5f8ce18e --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_extra_comma.json @@ -0,0 +1 @@ +["",] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_incomplete.json b/test/data/nst_json_testsuite/test_parsing/n_array_incomplete.json new file mode 100644 index 00000000..cc65b0b5 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_incomplete.json @@ -0,0 +1 @@ +["x" \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_incomplete_invalid_value.json b/test/data/nst_json_testsuite/test_parsing/n_array_incomplete_invalid_value.json new file mode 100644 index 00000000..c21a8f6c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_incomplete_invalid_value.json @@ -0,0 +1 @@ +[x \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_inner_array_no_comma.json b/test/data/nst_json_testsuite/test_parsing/n_array_inner_array_no_comma.json new file mode 100644 index 00000000..c70b7164 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_inner_array_no_comma.json @@ -0,0 +1 @@ +[3[4]] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_invalid_utf8.json b/test/data/nst_json_testsuite/test_parsing/n_array_invalid_utf8.json new file mode 100644 index 00000000..6099d344 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_invalid_utf8.json @@ -0,0 +1 @@ +[ÿ] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_items_separated_by_semicolon.json b/test/data/nst_json_testsuite/test_parsing/n_array_items_separated_by_semicolon.json new file mode 100755 index 00000000..d4bd7314 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_items_separated_by_semicolon.json @@ -0,0 +1 @@ +[1:2] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_just_comma.json b/test/data/nst_json_testsuite/test_parsing/n_array_just_comma.json new file mode 100755 index 00000000..9d7077c6 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_just_comma.json @@ -0,0 +1 @@ +[,] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_just_minus.json b/test/data/nst_json_testsuite/test_parsing/n_array_just_minus.json new file mode 100755 index 00000000..29501c6c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_just_minus.json @@ -0,0 +1 @@ +[-] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_missing_value.json b/test/data/nst_json_testsuite/test_parsing/n_array_missing_value.json new file mode 100644 index 00000000..3a6ba86f --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_missing_value.json @@ -0,0 +1 @@ +[ , ""] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_newlines_unclosed.json b/test/data/nst_json_testsuite/test_parsing/n_array_newlines_unclosed.json new file mode 100644 index 00000000..64668006 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_newlines_unclosed.json @@ -0,0 +1,3 @@ +["a", +4 +,1, \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_number_and_comma.json b/test/data/nst_json_testsuite/test_parsing/n_array_number_and_comma.json new file mode 100755 index 00000000..13f6f1d1 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_number_and_comma.json @@ -0,0 +1 @@ +[1,] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_number_and_several_commas.json b/test/data/nst_json_testsuite/test_parsing/n_array_number_and_several_commas.json new file mode 100755 index 00000000..0ac408cb --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_number_and_several_commas.json @@ -0,0 +1 @@ +[1,,] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_spaces_vertical_tab_formfeed.json b/test/data/nst_json_testsuite/test_parsing/n_array_spaces_vertical_tab_formfeed.json new file mode 100755 index 00000000..6cd7cf58 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_spaces_vertical_tab_formfeed.json @@ -0,0 +1 @@ +[" a"\f] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_star_inside.json b/test/data/nst_json_testsuite/test_parsing/n_array_star_inside.json new file mode 100755 index 00000000..5a519464 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_star_inside.json @@ -0,0 +1 @@ +[*] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_unclosed.json b/test/data/nst_json_testsuite/test_parsing/n_array_unclosed.json new file mode 100644 index 00000000..06073305 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_unclosed.json @@ -0,0 +1 @@ +["" \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_unclosed_trailing_comma.json b/test/data/nst_json_testsuite/test_parsing/n_array_unclosed_trailing_comma.json new file mode 100644 index 00000000..6604698f --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_unclosed_trailing_comma.json @@ -0,0 +1 @@ +[1, \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_unclosed_with_new_lines.json b/test/data/nst_json_testsuite/test_parsing/n_array_unclosed_with_new_lines.json new file mode 100644 index 00000000..4f61de3f --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_unclosed_with_new_lines.json @@ -0,0 +1,3 @@ +[1, +1 +,1 \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_array_unclosed_with_object_inside.json b/test/data/nst_json_testsuite/test_parsing/n_array_unclosed_with_object_inside.json new file mode 100644 index 00000000..043a87e2 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_array_unclosed_with_object_inside.json @@ -0,0 +1 @@ +[{} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_incomplete_false.json b/test/data/nst_json_testsuite/test_parsing/n_incomplete_false.json new file mode 100644 index 00000000..eb18c6a1 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_incomplete_false.json @@ -0,0 +1 @@ +[fals] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_incomplete_null.json b/test/data/nst_json_testsuite/test_parsing/n_incomplete_null.json new file mode 100644 index 00000000..c18ef538 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_incomplete_null.json @@ -0,0 +1 @@ +[nul] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_incomplete_true.json b/test/data/nst_json_testsuite/test_parsing/n_incomplete_true.json new file mode 100644 index 00000000..f451ac6d --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_incomplete_true.json @@ -0,0 +1 @@ +[tru] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_++.json b/test/data/nst_json_testsuite/test_parsing/n_number_++.json new file mode 100644 index 00000000..bdb62aaf --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_++.json @@ -0,0 +1 @@ +[++1234] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_+1.json b/test/data/nst_json_testsuite/test_parsing/n_number_+1.json new file mode 100755 index 00000000..3cbe58c9 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_+1.json @@ -0,0 +1 @@ +[+1] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_+Inf.json b/test/data/nst_json_testsuite/test_parsing/n_number_+Inf.json new file mode 100755 index 00000000..871ae14d --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_+Inf.json @@ -0,0 +1 @@ +[+Inf] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_-01.json b/test/data/nst_json_testsuite/test_parsing/n_number_-01.json new file mode 100755 index 00000000..0df32bac --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_-01.json @@ -0,0 +1 @@ +[-01] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_-1.0..json b/test/data/nst_json_testsuite/test_parsing/n_number_-1.0..json new file mode 100755 index 00000000..7cf55a85 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_-1.0..json @@ -0,0 +1 @@ +[-1.0.] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_-2..json b/test/data/nst_json_testsuite/test_parsing/n_number_-2..json new file mode 100755 index 00000000..9be84365 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_-2..json @@ -0,0 +1 @@ +[-2.] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_-NaN.json b/test/data/nst_json_testsuite/test_parsing/n_number_-NaN.json new file mode 100755 index 00000000..f61615d4 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_-NaN.json @@ -0,0 +1 @@ +[-NaN] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_.-1.json b/test/data/nst_json_testsuite/test_parsing/n_number_.-1.json new file mode 100644 index 00000000..1c9f2dd1 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_.-1.json @@ -0,0 +1 @@ +[.-1] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_.2e-3.json b/test/data/nst_json_testsuite/test_parsing/n_number_.2e-3.json new file mode 100755 index 00000000..c6c976f2 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_.2e-3.json @@ -0,0 +1 @@ +[.2e-3] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_0.1.2.json b/test/data/nst_json_testsuite/test_parsing/n_number_0.1.2.json new file mode 100755 index 00000000..c83a2562 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_0.1.2.json @@ -0,0 +1 @@ +[0.1.2] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_0.3e+.json b/test/data/nst_json_testsuite/test_parsing/n_number_0.3e+.json new file mode 100644 index 00000000..a55a1bfe --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_0.3e+.json @@ -0,0 +1 @@ +[0.3e+] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_0.3e.json b/test/data/nst_json_testsuite/test_parsing/n_number_0.3e.json new file mode 100644 index 00000000..3dd5df4b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_0.3e.json @@ -0,0 +1 @@ +[0.3e] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_0.e1.json b/test/data/nst_json_testsuite/test_parsing/n_number_0.e1.json new file mode 100644 index 00000000..c92c71cc --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_0.e1.json @@ -0,0 +1 @@ +[0.e1] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_0_capital_E+.json b/test/data/nst_json_testsuite/test_parsing/n_number_0_capital_E+.json new file mode 100644 index 00000000..3ba2c7d6 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_0_capital_E+.json @@ -0,0 +1 @@ +[0E+] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_0_capital_E.json b/test/data/nst_json_testsuite/test_parsing/n_number_0_capital_E.json new file mode 100755 index 00000000..5301840d --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_0_capital_E.json @@ -0,0 +1 @@ +[0E] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_0e+.json b/test/data/nst_json_testsuite/test_parsing/n_number_0e+.json new file mode 100644 index 00000000..8ab0bc4b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_0e+.json @@ -0,0 +1 @@ +[0e+] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_0e.json b/test/data/nst_json_testsuite/test_parsing/n_number_0e.json new file mode 100644 index 00000000..47ec421b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_0e.json @@ -0,0 +1 @@ +[0e] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_1.0e+.json b/test/data/nst_json_testsuite/test_parsing/n_number_1.0e+.json new file mode 100755 index 00000000..cd84b9f6 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_1.0e+.json @@ -0,0 +1 @@ +[1.0e+] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_1.0e-.json b/test/data/nst_json_testsuite/test_parsing/n_number_1.0e-.json new file mode 100755 index 00000000..4eb7afa0 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_1.0e-.json @@ -0,0 +1 @@ +[1.0e-] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_1.0e.json b/test/data/nst_json_testsuite/test_parsing/n_number_1.0e.json new file mode 100755 index 00000000..21753f4c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_1.0e.json @@ -0,0 +1 @@ +[1.0e] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_1_000.json b/test/data/nst_json_testsuite/test_parsing/n_number_1_000.json new file mode 100755 index 00000000..7b18b66b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_1_000.json @@ -0,0 +1 @@ +[1 000.0] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_1eE2.json b/test/data/nst_json_testsuite/test_parsing/n_number_1eE2.json new file mode 100755 index 00000000..4318a341 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_1eE2.json @@ -0,0 +1 @@ +[1eE2] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_2.e+3.json b/test/data/nst_json_testsuite/test_parsing/n_number_2.e+3.json new file mode 100755 index 00000000..4442f394 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_2.e+3.json @@ -0,0 +1 @@ +[2.e+3] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_2.e-3.json b/test/data/nst_json_testsuite/test_parsing/n_number_2.e-3.json new file mode 100755 index 00000000..a65060ed --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_2.e-3.json @@ -0,0 +1 @@ +[2.e-3] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_2.e3.json b/test/data/nst_json_testsuite/test_parsing/n_number_2.e3.json new file mode 100755 index 00000000..66f7cf70 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_2.e3.json @@ -0,0 +1 @@ +[2.e3] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_9.e+.json b/test/data/nst_json_testsuite/test_parsing/n_number_9.e+.json new file mode 100644 index 00000000..732a7b11 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_9.e+.json @@ -0,0 +1 @@ +[9.e+] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_Inf.json b/test/data/nst_json_testsuite/test_parsing/n_number_Inf.json new file mode 100755 index 00000000..c40c734c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_Inf.json @@ -0,0 +1 @@ +[Inf] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_NaN.json b/test/data/nst_json_testsuite/test_parsing/n_number_NaN.json new file mode 100755 index 00000000..49923179 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_NaN.json @@ -0,0 +1 @@ +[NaN] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_U+FF11_fullwidth_digit_one.json b/test/data/nst_json_testsuite/test_parsing/n_number_U+FF11_fullwidth_digit_one.json new file mode 100644 index 00000000..b14587e5 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_U+FF11_fullwidth_digit_one.json @@ -0,0 +1 @@ +[1] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_expression.json b/test/data/nst_json_testsuite/test_parsing/n_number_expression.json new file mode 100644 index 00000000..76fdbc8a --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_expression.json @@ -0,0 +1 @@ +[1+2] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_hex_1_digit.json b/test/data/nst_json_testsuite/test_parsing/n_number_hex_1_digit.json new file mode 100644 index 00000000..3b214880 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_hex_1_digit.json @@ -0,0 +1 @@ +[0x1] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_hex_2_digits.json b/test/data/nst_json_testsuite/test_parsing/n_number_hex_2_digits.json new file mode 100644 index 00000000..83e516ab --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_hex_2_digits.json @@ -0,0 +1 @@ +[0x42] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_infinity.json b/test/data/nst_json_testsuite/test_parsing/n_number_infinity.json new file mode 100755 index 00000000..8c2baf78 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_infinity.json @@ -0,0 +1 @@ +[Infinity] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_invalid+-.json b/test/data/nst_json_testsuite/test_parsing/n_number_invalid+-.json new file mode 100644 index 00000000..1cce602b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_invalid+-.json @@ -0,0 +1 @@ +[0e+-1] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_invalid-negative-real.json b/test/data/nst_json_testsuite/test_parsing/n_number_invalid-negative-real.json new file mode 100644 index 00000000..5fc3c1ef --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_invalid-negative-real.json @@ -0,0 +1 @@ +[-123.123foo] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-bigger-int.json b/test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-bigger-int.json new file mode 100644 index 00000000..3b97e580 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-bigger-int.json @@ -0,0 +1 @@ +[123å] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-exponent.json b/test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-exponent.json new file mode 100644 index 00000000..ea35d723 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-exponent.json @@ -0,0 +1 @@ +[1e1å] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-int.json b/test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-int.json new file mode 100644 index 00000000..371226e4 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-int.json @@ -0,0 +1 @@ +[0å] diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_minus_infinity.json b/test/data/nst_json_testsuite/test_parsing/n_number_minus_infinity.json new file mode 100755 index 00000000..cf4133d2 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_minus_infinity.json @@ -0,0 +1 @@ +[-Infinity] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_minus_sign_with_trailing_garbage.json b/test/data/nst_json_testsuite/test_parsing/n_number_minus_sign_with_trailing_garbage.json new file mode 100644 index 00000000..a6d8e78e --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_minus_sign_with_trailing_garbage.json @@ -0,0 +1 @@ +[-foo] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_minus_space_1.json b/test/data/nst_json_testsuite/test_parsing/n_number_minus_space_1.json new file mode 100644 index 00000000..9a5ebedf --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_minus_space_1.json @@ -0,0 +1 @@ +[- 1] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_neg_int_starting_with_zero.json b/test/data/nst_json_testsuite/test_parsing/n_number_neg_int_starting_with_zero.json new file mode 100644 index 00000000..67af0960 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_neg_int_starting_with_zero.json @@ -0,0 +1 @@ +[-012] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_neg_real_without_int_part.json b/test/data/nst_json_testsuite/test_parsing/n_number_neg_real_without_int_part.json new file mode 100755 index 00000000..1f2a4349 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_neg_real_without_int_part.json @@ -0,0 +1 @@ +[-.123] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_neg_with_garbage_at_end.json b/test/data/nst_json_testsuite/test_parsing/n_number_neg_with_garbage_at_end.json new file mode 100644 index 00000000..2aa73119 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_neg_with_garbage_at_end.json @@ -0,0 +1 @@ +[-1x] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_real_garbage_after_e.json b/test/data/nst_json_testsuite/test_parsing/n_number_real_garbage_after_e.json new file mode 100644 index 00000000..9213dfca --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_real_garbage_after_e.json @@ -0,0 +1 @@ +[1ea] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_real_with_invalid_utf8_after_e.json b/test/data/nst_json_testsuite/test_parsing/n_number_real_with_invalid_utf8_after_e.json new file mode 100644 index 00000000..1e52ef96 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_real_with_invalid_utf8_after_e.json @@ -0,0 +1 @@ +[1eå] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_real_without_fractional_part.json b/test/data/nst_json_testsuite/test_parsing/n_number_real_without_fractional_part.json new file mode 100755 index 00000000..1de287cf --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_real_without_fractional_part.json @@ -0,0 +1 @@ +[1.] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_starting_with_dot.json b/test/data/nst_json_testsuite/test_parsing/n_number_starting_with_dot.json new file mode 100755 index 00000000..f682dbdc --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_starting_with_dot.json @@ -0,0 +1 @@ +[.123] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_then_00.json b/test/data/nst_json_testsuite/test_parsing/n_number_then_00.json new file mode 100644 index 0000000000000000000000000000000000000000..0e7ef541921d888956f987fefacfb70f6117498a GIT binary patch literal 2 JcmXqH0001F05Sjo literal 0 HcmV?d00001 diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_with_alpha.json b/test/data/nst_json_testsuite/test_parsing/n_number_with_alpha.json new file mode 100644 index 00000000..1e42d818 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_with_alpha.json @@ -0,0 +1 @@ +[1.2a-3] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_with_alpha_char.json b/test/data/nst_json_testsuite/test_parsing/n_number_with_alpha_char.json new file mode 100644 index 00000000..b79daccb --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_with_alpha_char.json @@ -0,0 +1 @@ +[1.8011670033376514H-308] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_number_with_leading_zero.json b/test/data/nst_json_testsuite/test_parsing/n_number_with_leading_zero.json new file mode 100755 index 00000000..7106da1f --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_number_with_leading_zero.json @@ -0,0 +1 @@ +[012] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_bad_value.json b/test/data/nst_json_testsuite/test_parsing/n_object_bad_value.json new file mode 100644 index 00000000..a03a8c03 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_bad_value.json @@ -0,0 +1 @@ +["x", truth] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_bracket_key.json b/test/data/nst_json_testsuite/test_parsing/n_object_bracket_key.json new file mode 100644 index 00000000..cc443b48 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_bracket_key.json @@ -0,0 +1 @@ +{[: "x"} diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_comma_instead_of_colon.json b/test/data/nst_json_testsuite/test_parsing/n_object_comma_instead_of_colon.json new file mode 100644 index 00000000..8d563770 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_comma_instead_of_colon.json @@ -0,0 +1 @@ +{"x", null} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_double_colon.json b/test/data/nst_json_testsuite/test_parsing/n_object_double_colon.json new file mode 100644 index 00000000..80e8c7b8 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_double_colon.json @@ -0,0 +1 @@ +{"x"::"b"} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_emoji.json b/test/data/nst_json_testsuite/test_parsing/n_object_emoji.json new file mode 100644 index 00000000..cb4078ea --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_emoji.json @@ -0,0 +1 @@ +{🇨🇭} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_garbage_at_end.json b/test/data/nst_json_testsuite/test_parsing/n_object_garbage_at_end.json new file mode 100644 index 00000000..80c42cba --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_garbage_at_end.json @@ -0,0 +1 @@ +{"a":"a" 123} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_key_with_single_quotes.json b/test/data/nst_json_testsuite/test_parsing/n_object_key_with_single_quotes.json new file mode 100755 index 00000000..77c32759 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_key_with_single_quotes.json @@ -0,0 +1 @@ +{key: 'value'} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_missing_colon.json b/test/data/nst_json_testsuite/test_parsing/n_object_missing_colon.json new file mode 100644 index 00000000..b98eff62 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_missing_colon.json @@ -0,0 +1 @@ +{"a" b} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_missing_key.json b/test/data/nst_json_testsuite/test_parsing/n_object_missing_key.json new file mode 100755 index 00000000..b4fb0f52 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_missing_key.json @@ -0,0 +1 @@ +{:"b"} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_missing_semicolon.json b/test/data/nst_json_testsuite/test_parsing/n_object_missing_semicolon.json new file mode 100755 index 00000000..e3451384 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_missing_semicolon.json @@ -0,0 +1 @@ +{"a" "b"} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_missing_value.json b/test/data/nst_json_testsuite/test_parsing/n_object_missing_value.json new file mode 100644 index 00000000..3ef538a6 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_missing_value.json @@ -0,0 +1 @@ +{"a": \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_no-colon.json b/test/data/nst_json_testsuite/test_parsing/n_object_no-colon.json new file mode 100644 index 00000000..f3797b35 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_no-colon.json @@ -0,0 +1 @@ +{"a" \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_non_string_key.json b/test/data/nst_json_testsuite/test_parsing/n_object_non_string_key.json new file mode 100755 index 00000000..b9945b34 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_non_string_key.json @@ -0,0 +1 @@ +{1:1} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_non_string_key_but_huge_number_instead.json b/test/data/nst_json_testsuite/test_parsing/n_object_non_string_key_but_huge_number_instead.json new file mode 100755 index 00000000..b37fa86c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_non_string_key_but_huge_number_instead.json @@ -0,0 +1 @@ +{9999E9999:1} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_pi_in_key_and_trailing_comma.json b/test/data/nst_json_testsuite/test_parsing/n_object_pi_in_key_and_trailing_comma.json new file mode 100644 index 00000000..aa2cb637 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_pi_in_key_and_trailing_comma.json @@ -0,0 +1 @@ +{"¹":"0",} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_repeated_null_null.json b/test/data/nst_json_testsuite/test_parsing/n_object_repeated_null_null.json new file mode 100755 index 00000000..f7d2959d --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_repeated_null_null.json @@ -0,0 +1 @@ +{null:null,null:null} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_several_trailing_commas.json b/test/data/nst_json_testsuite/test_parsing/n_object_several_trailing_commas.json new file mode 100755 index 00000000..3c9afe8d --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_several_trailing_commas.json @@ -0,0 +1 @@ +{"id":0,,,,,} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_single_quote.json b/test/data/nst_json_testsuite/test_parsing/n_object_single_quote.json new file mode 100644 index 00000000..e5cdf976 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_single_quote.json @@ -0,0 +1 @@ +{'a':0} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_trailing_comma.json b/test/data/nst_json_testsuite/test_parsing/n_object_trailing_comma.json new file mode 100755 index 00000000..a4b02509 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_trailing_comma.json @@ -0,0 +1 @@ +{"id":0,} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment.json b/test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment.json new file mode 100644 index 00000000..a372c655 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment.json @@ -0,0 +1 @@ +{"a":"b"}/**/ \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_open.json b/test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_open.json new file mode 100644 index 00000000..d557f41c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_open.json @@ -0,0 +1 @@ +{"a":"b"}/**// \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open.json b/test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open.json new file mode 100644 index 00000000..e335136c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open.json @@ -0,0 +1 @@ +{"a":"b"}// \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open_incomplete.json b/test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open_incomplete.json new file mode 100644 index 00000000..d892e49f --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open_incomplete.json @@ -0,0 +1 @@ +{"a":"b"}/ \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_two_commas_in_a_row.json b/test/data/nst_json_testsuite/test_parsing/n_object_two_commas_in_a_row.json new file mode 100755 index 00000000..7c639ae6 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_two_commas_in_a_row.json @@ -0,0 +1 @@ +{"a":"b",,"c":"d"} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_unquoted_key.json b/test/data/nst_json_testsuite/test_parsing/n_object_unquoted_key.json new file mode 100644 index 00000000..8ba13729 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_unquoted_key.json @@ -0,0 +1 @@ +{a: "b"} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_unterminated-value.json b/test/data/nst_json_testsuite/test_parsing/n_object_unterminated-value.json new file mode 100644 index 00000000..7fe699a6 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_unterminated-value.json @@ -0,0 +1 @@ +{"a":"a \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_with_single_string.json b/test/data/nst_json_testsuite/test_parsing/n_object_with_single_string.json new file mode 100644 index 00000000..d63f7fbb --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_with_single_string.json @@ -0,0 +1 @@ +{ "foo" : "bar", "a" } \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_object_with_trailing_garbage.json b/test/data/nst_json_testsuite/test_parsing/n_object_with_trailing_garbage.json new file mode 100644 index 00000000..787c8f0a --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_object_with_trailing_garbage.json @@ -0,0 +1 @@ +{"a":"b"}# \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_single_space.json b/test/data/nst_json_testsuite/test_parsing/n_single_space.json new file mode 100755 index 00000000..0519ecba --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_single_space.json @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u.json b/test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u.json new file mode 100644 index 00000000..e834b05e --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u.json @@ -0,0 +1 @@ +["\uD800\u"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1.json b/test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1.json new file mode 100644 index 00000000..a04cd348 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1.json @@ -0,0 +1 @@ +["\uD800\u1"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1x.json b/test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1x.json new file mode 100644 index 00000000..bfbd2340 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1x.json @@ -0,0 +1 @@ +["\uD800\u1x"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape.json b/test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape.json new file mode 100644 index 00000000..acec66d8 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape.json @@ -0,0 +1 @@ +["\uD800\"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_UTF-16_incomplete_surrogate.json b/test/data/nst_json_testsuite/test_parsing/n_string_UTF-16_incomplete_surrogate.json new file mode 100755 index 00000000..75504a65 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_UTF-16_incomplete_surrogate.json @@ -0,0 +1 @@ +["\uD834\uDd"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_UTF8_surrogate_U+D800.json b/test/data/nst_json_testsuite/test_parsing/n_string_UTF8_surrogate_U+D800.json new file mode 100644 index 00000000..916bff92 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_UTF8_surrogate_U+D800.json @@ -0,0 +1 @@ +["í €"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_accentuated_char_no_quotes.json b/test/data/nst_json_testsuite/test_parsing/n_string_accentuated_char_no_quotes.json new file mode 100644 index 00000000..fd689569 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_accentuated_char_no_quotes.json @@ -0,0 +1 @@ +[é] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_backslash_00.json b/test/data/nst_json_testsuite/test_parsing/n_string_backslash_00.json new file mode 100644 index 0000000000000000000000000000000000000000..b5bf267b5d4ee922d20cec1543b66d1530ff76cf GIT binary patch literal 6 Ncma!6ieXTS1pox&0a*Y5 literal 0 HcmV?d00001 diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_escape_x.json b/test/data/nst_json_testsuite/test_parsing/n_string_escape_x.json new file mode 100644 index 00000000..fae29193 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_escape_x.json @@ -0,0 +1 @@ +["\x00"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_escaped_backslash_bad.json b/test/data/nst_json_testsuite/test_parsing/n_string_escaped_backslash_bad.json new file mode 100755 index 00000000..016fcb47 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_escaped_backslash_bad.json @@ -0,0 +1 @@ +["\\\"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_escaped_ctrl_char_tab.json b/test/data/nst_json_testsuite/test_parsing/n_string_escaped_ctrl_char_tab.json new file mode 100644 index 00000000..f35ea382 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_escaped_ctrl_char_tab.json @@ -0,0 +1 @@ +["\ "] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_escaped_emoji.json b/test/data/nst_json_testsuite/test_parsing/n_string_escaped_emoji.json new file mode 100644 index 00000000..a2777542 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_escaped_emoji.json @@ -0,0 +1 @@ +["\🌀"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_incomplete_escape.json b/test/data/nst_json_testsuite/test_parsing/n_string_incomplete_escape.json new file mode 100755 index 00000000..3415c33c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_incomplete_escape.json @@ -0,0 +1 @@ +["\"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_incomplete_escaped_character.json b/test/data/nst_json_testsuite/test_parsing/n_string_incomplete_escaped_character.json new file mode 100755 index 00000000..0f2197ea --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_incomplete_escaped_character.json @@ -0,0 +1 @@ +["\u00A"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_incomplete_surrogate_escape_invalid.json b/test/data/nst_json_testsuite/test_parsing/n_string_incomplete_surrogate_escape_invalid.json new file mode 100755 index 00000000..bd965606 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_incomplete_surrogate_escape_invalid.json @@ -0,0 +1 @@ +["\uD800\uD800\x"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_invalid-utf-8-in-escape.json b/test/data/nst_json_testsuite/test_parsing/n_string_invalid-utf-8-in-escape.json new file mode 100644 index 00000000..0c430064 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_invalid-utf-8-in-escape.json @@ -0,0 +1 @@ +["\uå"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_invalid_backslash_esc.json b/test/data/nst_json_testsuite/test_parsing/n_string_invalid_backslash_esc.json new file mode 100755 index 00000000..d1eb6092 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_invalid_backslash_esc.json @@ -0,0 +1 @@ +["\a"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_invalid_unicode_escape.json b/test/data/nst_json_testsuite/test_parsing/n_string_invalid_unicode_escape.json new file mode 100644 index 00000000..7608cb6b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_invalid_unicode_escape.json @@ -0,0 +1 @@ +["\uqqqq"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf-8.json b/test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf-8.json new file mode 100644 index 00000000..8e45a7ec --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf-8.json @@ -0,0 +1 @@ +["ÿ"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf8_after_escape.json b/test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf8_after_escape.json new file mode 100644 index 00000000..2f757a25 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf8_after_escape.json @@ -0,0 +1 @@ +["\å"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_iso_latin_1.json b/test/data/nst_json_testsuite/test_parsing/n_string_iso_latin_1.json new file mode 100644 index 00000000..9389c982 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_iso_latin_1.json @@ -0,0 +1 @@ +["é"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_leading_uescaped_thinspace.json b/test/data/nst_json_testsuite/test_parsing/n_string_leading_uescaped_thinspace.json new file mode 100755 index 00000000..7b297c63 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_leading_uescaped_thinspace.json @@ -0,0 +1 @@ +[\u0020"asd"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_lone_utf8_continuation_byte.json b/test/data/nst_json_testsuite/test_parsing/n_string_lone_utf8_continuation_byte.json new file mode 100644 index 00000000..729337c0 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_lone_utf8_continuation_byte.json @@ -0,0 +1 @@ +[""] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_no_quotes_with_bad_escape.json b/test/data/nst_json_testsuite/test_parsing/n_string_no_quotes_with_bad_escape.json new file mode 100644 index 00000000..01bc70ab --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_no_quotes_with_bad_escape.json @@ -0,0 +1 @@ +[\n] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_2_bytes.json b/test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_2_bytes.json new file mode 100644 index 00000000..c8cee5e0 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_2_bytes.json @@ -0,0 +1 @@ +["À¯"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes.json b/test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes.json new file mode 100755 index 00000000..9a91da79 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes.json @@ -0,0 +1 @@ +["üƒ¿¿¿¿"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes_null.json b/test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes_null.json new file mode 100755 index 00000000..d24fffdd --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes_null.json @@ -0,0 +1 @@ +["ü€€€€€"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_single_doublequote.json b/test/data/nst_json_testsuite/test_parsing/n_string_single_doublequote.json new file mode 100755 index 00000000..9d68933c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_single_doublequote.json @@ -0,0 +1 @@ +" \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_single_quote.json b/test/data/nst_json_testsuite/test_parsing/n_string_single_quote.json new file mode 100644 index 00000000..caff239b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_single_quote.json @@ -0,0 +1 @@ +['single quote'] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_single_string_no_double_quotes.json b/test/data/nst_json_testsuite/test_parsing/n_string_single_string_no_double_quotes.json new file mode 100755 index 00000000..f2ba8f84 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_single_string_no_double_quotes.json @@ -0,0 +1 @@ +abc \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_start_escape_unclosed.json b/test/data/nst_json_testsuite/test_parsing/n_string_start_escape_unclosed.json new file mode 100644 index 00000000..db62a46f --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_start_escape_unclosed.json @@ -0,0 +1 @@ +["\ \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_unescaped_crtl_char.json b/test/data/nst_json_testsuite/test_parsing/n_string_unescaped_crtl_char.json new file mode 100755 index 0000000000000000000000000000000000000000..9f21348071d3d736bdd469f159cea674c09237af GIT binary patch literal 7 Ocma!6N@Pe>iUj}$`2oKG literal 0 HcmV?d00001 diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_unescaped_newline.json b/test/data/nst_json_testsuite/test_parsing/n_string_unescaped_newline.json new file mode 100644 index 00000000..700d3608 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_unescaped_newline.json @@ -0,0 +1,2 @@ +["new +line"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_unescaped_tab.json b/test/data/nst_json_testsuite/test_parsing/n_string_unescaped_tab.json new file mode 100644 index 00000000..160264a2 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_unescaped_tab.json @@ -0,0 +1 @@ +[" "] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_unicode_CapitalU.json b/test/data/nst_json_testsuite/test_parsing/n_string_unicode_CapitalU.json new file mode 100644 index 00000000..17332bb1 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_unicode_CapitalU.json @@ -0,0 +1 @@ +"\UA66D" \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_string_with_trailing_garbage.json b/test/data/nst_json_testsuite/test_parsing/n_string_with_trailing_garbage.json new file mode 100644 index 00000000..efe3bd27 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_string_with_trailing_garbage.json @@ -0,0 +1 @@ +""x \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_100000_opening_arrays.json b/test/data/nst_json_testsuite/test_parsing/n_structure_100000_opening_arrays.json new file mode 100644 index 00000000..a4823eec --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_100000_opening_arrays.json @@ -0,0 +1 @@ +[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_<.>.json b/test/data/nst_json_testsuite/test_parsing/n_structure_<.>.json new file mode 100755 index 00000000..a56fef0b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_<.>.json @@ -0,0 +1 @@ +<.> \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_.json b/test/data/nst_json_testsuite/test_parsing/n_structure_.json new file mode 100755 index 00000000..617f2625 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_U+2060_word_joined.json b/test/data/nst_json_testsuite/test_parsing/n_structure_U+2060_word_joined.json new file mode 100644 index 00000000..81156a69 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_U+2060_word_joined.json @@ -0,0 +1 @@ +[â ] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_UTF8_BOM_no_data.json b/test/data/nst_json_testsuite/test_parsing/n_structure_UTF8_BOM_no_data.json new file mode 100755 index 00000000..5f282702 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_UTF8_BOM_no_data.json @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_array_trailing_garbage.json b/test/data/nst_json_testsuite/test_parsing/n_structure_array_trailing_garbage.json new file mode 100644 index 00000000..5a745e6f --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_array_trailing_garbage.json @@ -0,0 +1 @@ +[1]x \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_array_with_extra_array_close.json b/test/data/nst_json_testsuite/test_parsing/n_structure_array_with_extra_array_close.json new file mode 100755 index 00000000..6cfb1398 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_array_with_extra_array_close.json @@ -0,0 +1 @@ +[1]] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_array_with_unclosed_string.json b/test/data/nst_json_testsuite/test_parsing/n_structure_array_with_unclosed_string.json new file mode 100755 index 00000000..ba6b1788 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_array_with_unclosed_string.json @@ -0,0 +1 @@ +["asd] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_ascii-unicode-identifier.json b/test/data/nst_json_testsuite/test_parsing/n_structure_ascii-unicode-identifier.json new file mode 100644 index 00000000..ef2ab62f --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_ascii-unicode-identifier.json @@ -0,0 +1 @@ +aÃ¥ \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_capitalized_True.json b/test/data/nst_json_testsuite/test_parsing/n_structure_capitalized_True.json new file mode 100755 index 00000000..7cd88469 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_capitalized_True.json @@ -0,0 +1 @@ +[True] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_close_unopened_array.json b/test/data/nst_json_testsuite/test_parsing/n_structure_close_unopened_array.json new file mode 100755 index 00000000..d2af0c64 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_close_unopened_array.json @@ -0,0 +1 @@ +1] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_comma_instead_of_closing_brace.json b/test/data/nst_json_testsuite/test_parsing/n_structure_comma_instead_of_closing_brace.json new file mode 100644 index 00000000..ac61b820 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_comma_instead_of_closing_brace.json @@ -0,0 +1 @@ +{"x": true, \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_double_array.json b/test/data/nst_json_testsuite/test_parsing/n_structure_double_array.json new file mode 100755 index 00000000..058d1626 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_double_array.json @@ -0,0 +1 @@ +[][] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_end_array.json b/test/data/nst_json_testsuite/test_parsing/n_structure_end_array.json new file mode 100644 index 00000000..54caf60b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_end_array.json @@ -0,0 +1 @@ +] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_incomplete_UTF8_BOM.json b/test/data/nst_json_testsuite/test_parsing/n_structure_incomplete_UTF8_BOM.json new file mode 100755 index 00000000..bfcdd514 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_incomplete_UTF8_BOM.json @@ -0,0 +1 @@ +ï»{} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_lone-invalid-utf-8.json b/test/data/nst_json_testsuite/test_parsing/n_structure_lone-invalid-utf-8.json new file mode 100644 index 00000000..8b1296ca --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_lone-invalid-utf-8.json @@ -0,0 +1 @@ +å \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_lone-open-bracket.json b/test/data/nst_json_testsuite/test_parsing/n_structure_lone-open-bracket.json new file mode 100644 index 00000000..8e2f0bef --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_lone-open-bracket.json @@ -0,0 +1 @@ +[ \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_no_data.json b/test/data/nst_json_testsuite/test_parsing/n_structure_no_data.json new file mode 100644 index 00000000..e69de29b diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_null-byte-outside-string.json b/test/data/nst_json_testsuite/test_parsing/n_structure_null-byte-outside-string.json new file mode 100644 index 0000000000000000000000000000000000000000..326db14422a756e9bd39221edf37b844cb8471c7 GIT binary patch literal 3 Kcma!Mhy?%vaR9jh literal 0 HcmV?d00001 diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_number_with_trailing_garbage.json b/test/data/nst_json_testsuite/test_parsing/n_structure_number_with_trailing_garbage.json new file mode 100644 index 00000000..0746539d --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_number_with_trailing_garbage.json @@ -0,0 +1 @@ +2@ \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_object_followed_by_closing_object.json b/test/data/nst_json_testsuite/test_parsing/n_structure_object_followed_by_closing_object.json new file mode 100644 index 00000000..aa9ebaec --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_object_followed_by_closing_object.json @@ -0,0 +1 @@ +{}} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_object_unclosed_no_value.json b/test/data/nst_json_testsuite/test_parsing/n_structure_object_unclosed_no_value.json new file mode 100644 index 00000000..17d04514 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_object_unclosed_no_value.json @@ -0,0 +1 @@ +{"": \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_object_with_comment.json b/test/data/nst_json_testsuite/test_parsing/n_structure_object_with_comment.json new file mode 100644 index 00000000..ed1b569b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_object_with_comment.json @@ -0,0 +1 @@ +{"a":/*comment*/"b"} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_object_with_trailing_garbage.json b/test/data/nst_json_testsuite/test_parsing/n_structure_object_with_trailing_garbage.json new file mode 100644 index 00000000..9ca2336d --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_object_with_trailing_garbage.json @@ -0,0 +1 @@ +{"a": true} "x" \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_apostrophe.json b/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_apostrophe.json new file mode 100644 index 00000000..8bebe3af --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_apostrophe.json @@ -0,0 +1 @@ +[' \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_comma.json b/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_comma.json new file mode 100644 index 00000000..6295fdc3 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_comma.json @@ -0,0 +1 @@ +[, \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_object.json b/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_object.json new file mode 100644 index 00000000..e870445b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_object.json @@ -0,0 +1 @@ +[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"":[{"": diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_open_object.json b/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_open_object.json new file mode 100644 index 00000000..7a63c8c5 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_open_object.json @@ -0,0 +1 @@ +[{ \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_open_string.json b/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_open_string.json new file mode 100644 index 00000000..9822a6ba --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_open_string.json @@ -0,0 +1 @@ +["a \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_string.json b/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_string.json new file mode 100644 index 00000000..42a61936 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_open_array_string.json @@ -0,0 +1 @@ +["a" \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_open_object.json b/test/data/nst_json_testsuite/test_parsing/n_structure_open_object.json new file mode 100644 index 00000000..81750b96 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_open_object.json @@ -0,0 +1 @@ +{ \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_open_object_close_array.json b/test/data/nst_json_testsuite/test_parsing/n_structure_open_object_close_array.json new file mode 100755 index 00000000..eebc700a --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_open_object_close_array.json @@ -0,0 +1 @@ +{] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_open_object_comma.json b/test/data/nst_json_testsuite/test_parsing/n_structure_open_object_comma.json new file mode 100644 index 00000000..47bc9106 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_open_object_comma.json @@ -0,0 +1 @@ +{, \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_open_object_open_array.json b/test/data/nst_json_testsuite/test_parsing/n_structure_open_object_open_array.json new file mode 100644 index 00000000..381ede5d --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_open_object_open_array.json @@ -0,0 +1 @@ +{[ \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_open_object_open_string.json b/test/data/nst_json_testsuite/test_parsing/n_structure_open_object_open_string.json new file mode 100644 index 00000000..328c30cd --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_open_object_open_string.json @@ -0,0 +1 @@ +{"a \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_open_object_string_with_apostrophes.json b/test/data/nst_json_testsuite/test_parsing/n_structure_open_object_string_with_apostrophes.json new file mode 100644 index 00000000..9dba1709 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_open_object_string_with_apostrophes.json @@ -0,0 +1 @@ +{'a' \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_open_open.json b/test/data/nst_json_testsuite/test_parsing/n_structure_open_open.json new file mode 100644 index 00000000..841fd5f8 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_open_open.json @@ -0,0 +1 @@ +["\{["\{["\{["\{ \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_single_point.json b/test/data/nst_json_testsuite/test_parsing/n_structure_single_point.json new file mode 100644 index 00000000..92a39f39 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_single_point.json @@ -0,0 +1 @@ +é \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_single_star.json b/test/data/nst_json_testsuite/test_parsing/n_structure_single_star.json new file mode 100755 index 00000000..f59ec20a --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_single_star.json @@ -0,0 +1 @@ +* \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_trailing_#.json b/test/data/nst_json_testsuite/test_parsing/n_structure_trailing_#.json new file mode 100644 index 00000000..89861108 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_trailing_#.json @@ -0,0 +1 @@ +{"a":"b"}#{} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_uescaped_LF_before_string.json b/test/data/nst_json_testsuite/test_parsing/n_structure_uescaped_LF_before_string.json new file mode 100755 index 00000000..df2f0f24 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_uescaped_LF_before_string.json @@ -0,0 +1 @@ +[\u000A""] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array.json b/test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array.json new file mode 100755 index 00000000..11209515 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array.json @@ -0,0 +1 @@ +[1 \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_partial_null.json b/test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_partial_null.json new file mode 100644 index 00000000..0d591762 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_partial_null.json @@ -0,0 +1 @@ +[ false, nul \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_false.json b/test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_false.json new file mode 100644 index 00000000..a2ff8504 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_false.json @@ -0,0 +1 @@ +[ true, fals \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_true.json b/test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_true.json new file mode 100644 index 00000000..3149e8f5 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_true.json @@ -0,0 +1 @@ +[ false, tru \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_object.json b/test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_object.json new file mode 100755 index 00000000..694d69db --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_object.json @@ -0,0 +1 @@ +{"asd":"asd" \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_unicode-identifier.json b/test/data/nst_json_testsuite/test_parsing/n_structure_unicode-identifier.json new file mode 100644 index 00000000..7284aea3 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_unicode-identifier.json @@ -0,0 +1 @@ +Ã¥ \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_whitespace_U+2060_word_joiner.json b/test/data/nst_json_testsuite/test_parsing/n_structure_whitespace_U+2060_word_joiner.json new file mode 100755 index 00000000..81156a69 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_whitespace_U+2060_word_joiner.json @@ -0,0 +1 @@ +[â ] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_whitespace_formfeed.json b/test/data/nst_json_testsuite/test_parsing/n_structure_whitespace_formfeed.json new file mode 100755 index 00000000..a9ea535d --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/n_structure_whitespace_formfeed.json @@ -0,0 +1 @@ +[ ] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_array_arraysWithSpaces.json b/test/data/nst_json_testsuite/test_parsing/y_array_arraysWithSpaces.json new file mode 100755 index 00000000..58229079 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_array_arraysWithSpaces.json @@ -0,0 +1 @@ +[[] ] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_array_empty-string.json b/test/data/nst_json_testsuite/test_parsing/y_array_empty-string.json new file mode 100644 index 00000000..93b6be2b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_array_empty-string.json @@ -0,0 +1 @@ +[""] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_array_empty.json b/test/data/nst_json_testsuite/test_parsing/y_array_empty.json new file mode 100755 index 00000000..0637a088 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_array_empty.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_array_ending_with_newline.json b/test/data/nst_json_testsuite/test_parsing/y_array_ending_with_newline.json new file mode 100755 index 00000000..eac5f7b4 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_array_ending_with_newline.json @@ -0,0 +1 @@ +["a"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_array_false.json b/test/data/nst_json_testsuite/test_parsing/y_array_false.json new file mode 100644 index 00000000..67b2f076 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_array_false.json @@ -0,0 +1 @@ +[false] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_array_heterogeneous.json b/test/data/nst_json_testsuite/test_parsing/y_array_heterogeneous.json new file mode 100755 index 00000000..d3c1e264 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_array_heterogeneous.json @@ -0,0 +1 @@ +[null, 1, "1", {}] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_array_null.json b/test/data/nst_json_testsuite/test_parsing/y_array_null.json new file mode 100644 index 00000000..500db4a8 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_array_null.json @@ -0,0 +1 @@ +[null] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_array_with_1_and_newline.json b/test/data/nst_json_testsuite/test_parsing/y_array_with_1_and_newline.json new file mode 100644 index 00000000..99482550 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_array_with_1_and_newline.json @@ -0,0 +1,2 @@ +[1 +] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_array_with_leading_space.json b/test/data/nst_json_testsuite/test_parsing/y_array_with_leading_space.json new file mode 100755 index 00000000..18bfe642 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_array_with_leading_space.json @@ -0,0 +1 @@ + [1] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_array_with_several_null.json b/test/data/nst_json_testsuite/test_parsing/y_array_with_several_null.json new file mode 100755 index 00000000..99f6c5d1 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_array_with_several_null.json @@ -0,0 +1 @@ +[1,null,null,null,2] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_array_with_trailing_space.json b/test/data/nst_json_testsuite/test_parsing/y_array_with_trailing_space.json new file mode 100755 index 00000000..de9e7a94 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_array_with_trailing_space.json @@ -0,0 +1 @@ +[2] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number.json b/test/data/nst_json_testsuite/test_parsing/y_number.json new file mode 100644 index 00000000..e5f5cc33 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number.json @@ -0,0 +1 @@ +[123e65] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_0e+1.json b/test/data/nst_json_testsuite/test_parsing/y_number_0e+1.json new file mode 100755 index 00000000..d1d39670 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_0e+1.json @@ -0,0 +1 @@ +[0e+1] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_0e1.json b/test/data/nst_json_testsuite/test_parsing/y_number_0e1.json new file mode 100755 index 00000000..3283a793 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_0e1.json @@ -0,0 +1 @@ +[0e1] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_after_space.json b/test/data/nst_json_testsuite/test_parsing/y_number_after_space.json new file mode 100644 index 00000000..623570d9 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_after_space.json @@ -0,0 +1 @@ +[ 4] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_double_close_to_zero.json b/test/data/nst_json_testsuite/test_parsing/y_number_double_close_to_zero.json new file mode 100755 index 00000000..96555ff7 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_double_close_to_zero.json @@ -0,0 +1 @@ +[-0.000000000000000000000000000000000000000000000000000000000000000000000000000001] diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_double_huge_neg_exp.json b/test/data/nst_json_testsuite/test_parsing/y_number_double_huge_neg_exp.json new file mode 100644 index 00000000..ae4c7b71 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_double_huge_neg_exp.json @@ -0,0 +1 @@ +[123.456e-789] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_huge_exp.json b/test/data/nst_json_testsuite/test_parsing/y_number_huge_exp.json new file mode 100644 index 00000000..9b5efa23 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_huge_exp.json @@ -0,0 +1 @@ +[0.4e00669999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999969999999006] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_int_with_exp.json b/test/data/nst_json_testsuite/test_parsing/y_number_int_with_exp.json new file mode 100755 index 00000000..a4ca9e75 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_int_with_exp.json @@ -0,0 +1 @@ +[20e1] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_minus_zero.json b/test/data/nst_json_testsuite/test_parsing/y_number_minus_zero.json new file mode 100755 index 00000000..37af1312 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_minus_zero.json @@ -0,0 +1 @@ +[-0] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_negative_int.json b/test/data/nst_json_testsuite/test_parsing/y_number_negative_int.json new file mode 100644 index 00000000..8e30f8bd --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_negative_int.json @@ -0,0 +1 @@ +[-123] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_negative_one.json b/test/data/nst_json_testsuite/test_parsing/y_number_negative_one.json new file mode 100644 index 00000000..99d21a2a --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_negative_one.json @@ -0,0 +1 @@ +[-1] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_negative_zero.json b/test/data/nst_json_testsuite/test_parsing/y_number_negative_zero.json new file mode 100644 index 00000000..37af1312 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_negative_zero.json @@ -0,0 +1 @@ +[-0] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e.json b/test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e.json new file mode 100644 index 00000000..6edbdfcb --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e.json @@ -0,0 +1 @@ +[1E22] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e_neg_exp.json b/test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e_neg_exp.json new file mode 100644 index 00000000..0a01bd3e --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e_neg_exp.json @@ -0,0 +1 @@ +[1E-2] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e_pos_exp.json b/test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e_pos_exp.json new file mode 100644 index 00000000..5a8fc097 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e_pos_exp.json @@ -0,0 +1 @@ +[1E+2] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_real_exponent.json b/test/data/nst_json_testsuite/test_parsing/y_number_real_exponent.json new file mode 100644 index 00000000..da2522d6 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_real_exponent.json @@ -0,0 +1 @@ +[123e45] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_real_fraction_exponent.json b/test/data/nst_json_testsuite/test_parsing/y_number_real_fraction_exponent.json new file mode 100644 index 00000000..3944a7a4 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_real_fraction_exponent.json @@ -0,0 +1 @@ +[123.456e78] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_real_neg_exp.json b/test/data/nst_json_testsuite/test_parsing/y_number_real_neg_exp.json new file mode 100644 index 00000000..ca40d3c2 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_real_neg_exp.json @@ -0,0 +1 @@ +[1e-2] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_real_neg_overflow.json b/test/data/nst_json_testsuite/test_parsing/y_number_real_neg_overflow.json new file mode 100644 index 00000000..3d628a99 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_real_neg_overflow.json @@ -0,0 +1 @@ +[-123123e100000] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_real_pos_exponent.json b/test/data/nst_json_testsuite/test_parsing/y_number_real_pos_exponent.json new file mode 100644 index 00000000..343601d5 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_real_pos_exponent.json @@ -0,0 +1 @@ +[1e+2] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_real_pos_overflow.json b/test/data/nst_json_testsuite/test_parsing/y_number_real_pos_overflow.json new file mode 100644 index 00000000..54d7d3dc --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_real_pos_overflow.json @@ -0,0 +1 @@ +[123123e100000] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_real_underflow.json b/test/data/nst_json_testsuite/test_parsing/y_number_real_underflow.json new file mode 100644 index 00000000..c5236eb2 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_real_underflow.json @@ -0,0 +1 @@ +[123e-10000000] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_simple_int.json b/test/data/nst_json_testsuite/test_parsing/y_number_simple_int.json new file mode 100644 index 00000000..e47f69af --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_simple_int.json @@ -0,0 +1 @@ +[123] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_simple_real.json b/test/data/nst_json_testsuite/test_parsing/y_number_simple_real.json new file mode 100644 index 00000000..b02878e5 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_simple_real.json @@ -0,0 +1 @@ +[123.456789] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_too_big_neg_int.json b/test/data/nst_json_testsuite/test_parsing/y_number_too_big_neg_int.json new file mode 100644 index 00000000..dfa38461 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_too_big_neg_int.json @@ -0,0 +1 @@ +[-123123123123123123123123123123] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_too_big_pos_int.json b/test/data/nst_json_testsuite/test_parsing/y_number_too_big_pos_int.json new file mode 100644 index 00000000..338a8c3c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_too_big_pos_int.json @@ -0,0 +1 @@ +[100000000000000000000] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_number_very_big_negative_int.json b/test/data/nst_json_testsuite/test_parsing/y_number_very_big_negative_int.json new file mode 100755 index 00000000..e2d9738c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_number_very_big_negative_int.json @@ -0,0 +1 @@ +[-237462374673276894279832749832423479823246327846] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_object.json b/test/data/nst_json_testsuite/test_parsing/y_object.json new file mode 100755 index 00000000..78262eda --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_object.json @@ -0,0 +1 @@ +{"asd":"sdf", "dfg":"fgh"} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_object_basic.json b/test/data/nst_json_testsuite/test_parsing/y_object_basic.json new file mode 100755 index 00000000..646bbe7b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_object_basic.json @@ -0,0 +1 @@ +{"asd":"sdf"} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_object_duplicated_key.json b/test/data/nst_json_testsuite/test_parsing/y_object_duplicated_key.json new file mode 100755 index 00000000..bbc2e1ce --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_object_duplicated_key.json @@ -0,0 +1 @@ +{"a":"b","a":"c"} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_object_duplicated_key_and_value.json b/test/data/nst_json_testsuite/test_parsing/y_object_duplicated_key_and_value.json new file mode 100755 index 00000000..211581c2 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_object_duplicated_key_and_value.json @@ -0,0 +1 @@ +{"a":"b","a":"b"} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_object_empty.json b/test/data/nst_json_testsuite/test_parsing/y_object_empty.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_object_empty.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_object_empty_key.json b/test/data/nst_json_testsuite/test_parsing/y_object_empty_key.json new file mode 100755 index 00000000..c0013d3b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_object_empty_key.json @@ -0,0 +1 @@ +{"":0} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_object_escaped_null_in_key.json b/test/data/nst_json_testsuite/test_parsing/y_object_escaped_null_in_key.json new file mode 100644 index 00000000..593f0f67 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_object_escaped_null_in_key.json @@ -0,0 +1 @@ +{"foo\u0000bar": 42} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_object_extreme_numbers.json b/test/data/nst_json_testsuite/test_parsing/y_object_extreme_numbers.json new file mode 100644 index 00000000..56a90892 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_object_extreme_numbers.json @@ -0,0 +1 @@ +{ "min": -1.0e+28, "max": 1.0e+28 } diff --git a/test/data/nst_json_testsuite/test_parsing/y_object_long_strings.json b/test/data/nst_json_testsuite/test_parsing/y_object_long_strings.json new file mode 100644 index 00000000..bdc4a087 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_object_long_strings.json @@ -0,0 +1 @@ +{"x":[{"id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}], "id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_object_simple.json b/test/data/nst_json_testsuite/test_parsing/y_object_simple.json new file mode 100644 index 00000000..dacac917 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_object_simple.json @@ -0,0 +1 @@ +{"a":[]} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_object_string_unicode.json b/test/data/nst_json_testsuite/test_parsing/y_object_string_unicode.json new file mode 100644 index 00000000..8effdb29 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_object_string_unicode.json @@ -0,0 +1 @@ +{"title":"\u041f\u043e\u043b\u0442\u043e\u0440\u0430 \u0417\u0435\u043c\u043b\u0435\u043a\u043e\u043f\u0430" } \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_object_with_newlines.json b/test/data/nst_json_testsuite/test_parsing/y_object_with_newlines.json new file mode 100644 index 00000000..246ec6b3 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_object_with_newlines.json @@ -0,0 +1,3 @@ +{ +"a": "b" +} \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json b/test/data/nst_json_testsuite/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json new file mode 100755 index 00000000..9967ddeb --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json @@ -0,0 +1 @@ +["\u0060\u012a\u12AB"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_UTF-16_Surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json b/test/data/nst_json_testsuite/test_parsing/y_string_UTF-16_Surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json new file mode 100755 index 00000000..7620b665 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_UTF-16_Surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json @@ -0,0 +1 @@ +["\uD834\uDd1e"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pair.json b/test/data/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pair.json new file mode 100755 index 00000000..996875cc --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pair.json @@ -0,0 +1 @@ +["\uD801\udc37"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pairs.json b/test/data/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pairs.json new file mode 100755 index 00000000..3401021e --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pairs.json @@ -0,0 +1 @@ +["\ud83d\ude39\ud83d\udc8d"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_allowed_escapes.json b/test/data/nst_json_testsuite/test_parsing/y_string_allowed_escapes.json new file mode 100644 index 00000000..7f495532 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_allowed_escapes.json @@ -0,0 +1 @@ +["\"\\\/\b\f\n\r\t"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_backslash_and_u_escaped_zero.json b/test/data/nst_json_testsuite/test_parsing/y_string_backslash_and_u_escaped_zero.json new file mode 100755 index 00000000..d4439eda --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_backslash_and_u_escaped_zero.json @@ -0,0 +1 @@ +["\\u0000"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_backslash_doublequotes.json b/test/data/nst_json_testsuite/test_parsing/y_string_backslash_doublequotes.json new file mode 100644 index 00000000..ae03243b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_backslash_doublequotes.json @@ -0,0 +1 @@ +["\""] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_comments.json b/test/data/nst_json_testsuite/test_parsing/y_string_comments.json new file mode 100644 index 00000000..2260c20c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_comments.json @@ -0,0 +1 @@ +["a/*b*/c/*d//e"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_double_escape_a.json b/test/data/nst_json_testsuite/test_parsing/y_string_double_escape_a.json new file mode 100644 index 00000000..6715d6f4 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_double_escape_a.json @@ -0,0 +1 @@ +["\\a"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_double_escape_n.json b/test/data/nst_json_testsuite/test_parsing/y_string_double_escape_n.json new file mode 100644 index 00000000..44ca56c4 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_double_escape_n.json @@ -0,0 +1 @@ +["\\n"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_escaped_control_character.json b/test/data/nst_json_testsuite/test_parsing/y_string_escaped_control_character.json new file mode 100644 index 00000000..5b014a9c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_escaped_control_character.json @@ -0,0 +1 @@ +["\u0012"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_escaped_noncharacter.json b/test/data/nst_json_testsuite/test_parsing/y_string_escaped_noncharacter.json new file mode 100755 index 00000000..2ff52e2c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_escaped_noncharacter.json @@ -0,0 +1 @@ +["\uFFFF"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_in_array.json b/test/data/nst_json_testsuite/test_parsing/y_string_in_array.json new file mode 100755 index 00000000..21d7ae4c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_in_array.json @@ -0,0 +1 @@ +["asd"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_in_array_with_leading_space.json b/test/data/nst_json_testsuite/test_parsing/y_string_in_array_with_leading_space.json new file mode 100755 index 00000000..9e1887c1 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_in_array_with_leading_space.json @@ -0,0 +1 @@ +[ "asd"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_last_surrogates_1_and_2.json b/test/data/nst_json_testsuite/test_parsing/y_string_last_surrogates_1_and_2.json new file mode 100644 index 00000000..3919cef7 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_last_surrogates_1_and_2.json @@ -0,0 +1 @@ +["\uDBFF\uDFFF"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_newline_uescaped.json b/test/data/nst_json_testsuite/test_parsing/y_string_newline_uescaped.json new file mode 100644 index 00000000..2085ab1a --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_newline_uescaped.json @@ -0,0 +1 @@ +["new\u00A0line"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json b/test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json new file mode 100755 index 00000000..059e4d9d --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json @@ -0,0 +1 @@ +["ô¿¿"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+1FFFF.json b/test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+1FFFF.json new file mode 100755 index 00000000..10a33a17 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+1FFFF.json @@ -0,0 +1 @@ +["𛿿"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json b/test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json new file mode 100755 index 00000000..4c913bd4 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json @@ -0,0 +1 @@ +["ï¿¿"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_null_escape.json b/test/data/nst_json_testsuite/test_parsing/y_string_null_escape.json new file mode 100644 index 00000000..c1ad8440 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_null_escape.json @@ -0,0 +1 @@ +["\u0000"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_one-byte-utf-8.json b/test/data/nst_json_testsuite/test_parsing/y_string_one-byte-utf-8.json new file mode 100644 index 00000000..15718592 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_one-byte-utf-8.json @@ -0,0 +1 @@ +["\u002c"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_pi.json b/test/data/nst_json_testsuite/test_parsing/y_string_pi.json new file mode 100644 index 00000000..9df11ae8 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_pi.json @@ -0,0 +1 @@ +["Ï€"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_simple_ascii.json b/test/data/nst_json_testsuite/test_parsing/y_string_simple_ascii.json new file mode 100644 index 00000000..8cadf7d0 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_simple_ascii.json @@ -0,0 +1 @@ +["asd "] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_space.json b/test/data/nst_json_testsuite/test_parsing/y_string_space.json new file mode 100644 index 00000000..efd782cc --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_space.json @@ -0,0 +1 @@ +" " \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_three-byte-utf-8.json b/test/data/nst_json_testsuite/test_parsing/y_string_three-byte-utf-8.json new file mode 100644 index 00000000..108f1d67 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_three-byte-utf-8.json @@ -0,0 +1 @@ +["\u0821"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_two-byte-utf-8.json b/test/data/nst_json_testsuite/test_parsing/y_string_two-byte-utf-8.json new file mode 100644 index 00000000..461503c3 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_two-byte-utf-8.json @@ -0,0 +1 @@ +["\u0123"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_u+2028_line_sep.json b/test/data/nst_json_testsuite/test_parsing/y_string_u+2028_line_sep.json new file mode 100755 index 00000000..897b6021 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_u+2028_line_sep.json @@ -0,0 +1 @@ +["
"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_u+2029_par_sep.json b/test/data/nst_json_testsuite/test_parsing/y_string_u+2029_par_sep.json new file mode 100755 index 00000000..8cd998c8 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_u+2029_par_sep.json @@ -0,0 +1 @@ +["
"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_uEscape.json b/test/data/nst_json_testsuite/test_parsing/y_string_uEscape.json new file mode 100755 index 00000000..f7b41a02 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_uEscape.json @@ -0,0 +1 @@ +["\u0061\u30af\u30EA\u30b9"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_unescaped_char_delete.json b/test/data/nst_json_testsuite/test_parsing/y_string_unescaped_char_delete.json new file mode 100755 index 00000000..7d064f49 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_unescaped_char_delete.json @@ -0,0 +1 @@ +[""] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_unicode.json b/test/data/nst_json_testsuite/test_parsing/y_string_unicode.json new file mode 100644 index 00000000..3598095b --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_unicode.json @@ -0,0 +1 @@ +["\uA66D"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_unicodeEscapedBackslash.json b/test/data/nst_json_testsuite/test_parsing/y_string_unicodeEscapedBackslash.json new file mode 100755 index 00000000..0bb3b51e --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_unicodeEscapedBackslash.json @@ -0,0 +1 @@ +["\u005C"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_unicode_2.json b/test/data/nst_json_testsuite/test_parsing/y_string_unicode_2.json new file mode 100644 index 00000000..a7dcb976 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_unicode_2.json @@ -0,0 +1 @@ +["â‚㈴â‚"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json b/test/data/nst_json_testsuite/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json new file mode 100644 index 00000000..626d5f81 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json @@ -0,0 +1 @@ +["\u200B"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_unicode_U+2064_invisible_plus.json b/test/data/nst_json_testsuite/test_parsing/y_string_unicode_U+2064_invisible_plus.json new file mode 100644 index 00000000..1e23972c --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_unicode_U+2064_invisible_plus.json @@ -0,0 +1 @@ +["\u2064"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_unicode_escaped_double_quote.json b/test/data/nst_json_testsuite/test_parsing/y_string_unicode_escaped_double_quote.json new file mode 100755 index 00000000..4e625785 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_unicode_escaped_double_quote.json @@ -0,0 +1 @@ +["\u0022"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_utf16.json b/test/data/nst_json_testsuite/test_parsing/y_string_utf16.json new file mode 100644 index 0000000000000000000000000000000000000000..2a79c0629a49133d8f715bddbef19cfb3ef025bd GIT binary patch literal 12 ScmezWFPcG#;Uy5qG5`P~Km+3d literal 0 HcmV?d00001 diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_utf8.json b/test/data/nst_json_testsuite/test_parsing/y_string_utf8.json new file mode 100644 index 00000000..40878435 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_utf8.json @@ -0,0 +1 @@ +["€ð„ž"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_string_with_del_character.json b/test/data/nst_json_testsuite/test_parsing/y_string_with_del_character.json new file mode 100755 index 00000000..8bd24907 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_string_with_del_character.json @@ -0,0 +1 @@ +["aa"] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_false.json b/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_false.json new file mode 100644 index 00000000..02e4a84d --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_false.json @@ -0,0 +1 @@ +false \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_int.json b/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_int.json new file mode 100755 index 00000000..f70d7bba --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_int.json @@ -0,0 +1 @@ +42 \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_negative_real.json b/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_negative_real.json new file mode 100755 index 00000000..b5135a20 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_negative_real.json @@ -0,0 +1 @@ +-0.1 \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_null.json b/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_null.json new file mode 100644 index 00000000..ec747fa4 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_null.json @@ -0,0 +1 @@ +null \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_string.json b/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_string.json new file mode 100755 index 00000000..b6e982ca --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_string.json @@ -0,0 +1 @@ +"asd" \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_true.json b/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_true.json new file mode 100755 index 00000000..f32a5804 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_structure_lonely_true.json @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_structure_string_empty.json b/test/data/nst_json_testsuite/test_parsing/y_structure_string_empty.json new file mode 100644 index 00000000..3cc762b5 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_structure_string_empty.json @@ -0,0 +1 @@ +"" \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_structure_trailing_newline.json b/test/data/nst_json_testsuite/test_parsing/y_structure_trailing_newline.json new file mode 100644 index 00000000..0c3426d4 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_structure_trailing_newline.json @@ -0,0 +1 @@ +["a"] diff --git a/test/data/nst_json_testsuite/test_parsing/y_structure_true_in_array.json b/test/data/nst_json_testsuite/test_parsing/y_structure_true_in_array.json new file mode 100644 index 00000000..de601e30 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_structure_true_in_array.json @@ -0,0 +1 @@ +[true] \ No newline at end of file diff --git a/test/data/nst_json_testsuite/test_parsing/y_structure_whitespace_array.json b/test/data/nst_json_testsuite/test_parsing/y_structure_whitespace_array.json new file mode 100644 index 00000000..2bedf7f2 --- /dev/null +++ b/test/data/nst_json_testsuite/test_parsing/y_structure_whitespace_array.json @@ -0,0 +1 @@ + [] \ No newline at end of file From 2fdba9de1975a6cc2de4420f190befd10811f56f Mon Sep 17 00:00:00 2001 From: Niels Date: Wed, 26 Oct 2016 23:45:11 +0200 Subject: [PATCH 08/19] added "y" cases --- test/src/unit-testsuites.cpp | 330 +++++++++++++++++++++++++++++++++++ 1 file changed, 330 insertions(+) diff --git a/test/src/unit-testsuites.cpp b/test/src/unit-testsuites.cpp index f717a98a..79da2f32 100644 --- a/test/src/unit-testsuites.cpp +++ b/test/src/unit-testsuites.cpp @@ -434,3 +434,333 @@ TEST_CASE("RFC 7159 examples") CHECK(json::parse("true") == json(true)); } } + +TEST_CASE("nst's JSONTestSuite") +{ + SECTION("test_parsing") + { + SECTION("y") + { + for (auto filename : + { + "test/data/nst_json_testsuite/test_parsing/y_array_arraysWithSpaces.json", + "test/data/nst_json_testsuite/test_parsing/y_array_empty-string.json", + "test/data/nst_json_testsuite/test_parsing/y_array_empty.json", + "test/data/nst_json_testsuite/test_parsing/y_array_ending_with_newline.json", + "test/data/nst_json_testsuite/test_parsing/y_array_false.json", + "test/data/nst_json_testsuite/test_parsing/y_array_heterogeneous.json", + "test/data/nst_json_testsuite/test_parsing/y_array_null.json", + "test/data/nst_json_testsuite/test_parsing/y_array_with_1_and_newline.json", + "test/data/nst_json_testsuite/test_parsing/y_array_with_leading_space.json", + "test/data/nst_json_testsuite/test_parsing/y_array_with_several_null.json", + "test/data/nst_json_testsuite/test_parsing/y_array_with_trailing_space.json", + "test/data/nst_json_testsuite/test_parsing/y_number.json", + "test/data/nst_json_testsuite/test_parsing/y_number_0e+1.json", + "test/data/nst_json_testsuite/test_parsing/y_number_0e1.json", + "test/data/nst_json_testsuite/test_parsing/y_number_after_space.json", + "test/data/nst_json_testsuite/test_parsing/y_number_double_close_to_zero.json", + "test/data/nst_json_testsuite/test_parsing/y_number_double_huge_neg_exp.json", + "test/data/nst_json_testsuite/test_parsing/y_number_huge_exp.json", + "test/data/nst_json_testsuite/test_parsing/y_number_int_with_exp.json", + "test/data/nst_json_testsuite/test_parsing/y_number_minus_zero.json", + "test/data/nst_json_testsuite/test_parsing/y_number_negative_int.json", + "test/data/nst_json_testsuite/test_parsing/y_number_negative_one.json", + "test/data/nst_json_testsuite/test_parsing/y_number_negative_zero.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e_neg_exp.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_capital_e_pos_exp.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_exponent.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_fraction_exponent.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_neg_exp.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_neg_overflow.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_pos_exponent.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_pos_overflow.json", + "test/data/nst_json_testsuite/test_parsing/y_number_real_underflow.json", + "test/data/nst_json_testsuite/test_parsing/y_number_simple_int.json", + "test/data/nst_json_testsuite/test_parsing/y_number_simple_real.json", + "test/data/nst_json_testsuite/test_parsing/y_number_too_big_neg_int.json", + "test/data/nst_json_testsuite/test_parsing/y_number_too_big_pos_int.json", + "test/data/nst_json_testsuite/test_parsing/y_number_very_big_negative_int.json", + "test/data/nst_json_testsuite/test_parsing/y_object.json", + "test/data/nst_json_testsuite/test_parsing/y_object_basic.json", + "test/data/nst_json_testsuite/test_parsing/y_object_duplicated_key.json", + "test/data/nst_json_testsuite/test_parsing/y_object_duplicated_key_and_value.json", + "test/data/nst_json_testsuite/test_parsing/y_object_empty.json", + "test/data/nst_json_testsuite/test_parsing/y_object_empty_key.json", + "test/data/nst_json_testsuite/test_parsing/y_object_escaped_null_in_key.json", + "test/data/nst_json_testsuite/test_parsing/y_object_extreme_numbers.json", + "test/data/nst_json_testsuite/test_parsing/y_object_long_strings.json", + "test/data/nst_json_testsuite/test_parsing/y_object_simple.json", + "test/data/nst_json_testsuite/test_parsing/y_object_string_unicode.json", + "test/data/nst_json_testsuite/test_parsing/y_object_with_newlines.json", + "test/data/nst_json_testsuite/test_parsing/y_string_1_2_3_bytes_UTF-8_sequences.json", + "test/data/nst_json_testsuite/test_parsing/y_string_UTF-16_Surrogates_U+1D11E_MUSICAL_SYMBOL_G_CLEF.json", + "test/data/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pair.json", + "test/data/nst_json_testsuite/test_parsing/y_string_accepted_surrogate_pairs.json", + "test/data/nst_json_testsuite/test_parsing/y_string_allowed_escapes.json", + "test/data/nst_json_testsuite/test_parsing/y_string_backslash_and_u_escaped_zero.json", + "test/data/nst_json_testsuite/test_parsing/y_string_backslash_doublequotes.json", + "test/data/nst_json_testsuite/test_parsing/y_string_comments.json", + "test/data/nst_json_testsuite/test_parsing/y_string_double_escape_a.json", + "test/data/nst_json_testsuite/test_parsing/y_string_double_escape_n.json", + "test/data/nst_json_testsuite/test_parsing/y_string_escaped_control_character.json", + "test/data/nst_json_testsuite/test_parsing/y_string_escaped_noncharacter.json", + "test/data/nst_json_testsuite/test_parsing/y_string_in_array.json", + "test/data/nst_json_testsuite/test_parsing/y_string_in_array_with_leading_space.json", + "test/data/nst_json_testsuite/test_parsing/y_string_last_surrogates_1_and_2.json", + "test/data/nst_json_testsuite/test_parsing/y_string_newline_uescaped.json", + "test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+10FFFF.json", + "test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+1FFFF.json", + "test/data/nst_json_testsuite/test_parsing/y_string_nonCharacterInUTF-8_U+FFFF.json", + "test/data/nst_json_testsuite/test_parsing/y_string_null_escape.json", + "test/data/nst_json_testsuite/test_parsing/y_string_one-byte-utf-8.json", + "test/data/nst_json_testsuite/test_parsing/y_string_pi.json", + "test/data/nst_json_testsuite/test_parsing/y_string_simple_ascii.json", + "test/data/nst_json_testsuite/test_parsing/y_string_space.json", + "test/data/nst_json_testsuite/test_parsing/y_string_three-byte-utf-8.json", + "test/data/nst_json_testsuite/test_parsing/y_string_two-byte-utf-8.json", + "test/data/nst_json_testsuite/test_parsing/y_string_u+2028_line_sep.json", + "test/data/nst_json_testsuite/test_parsing/y_string_u+2029_par_sep.json", + "test/data/nst_json_testsuite/test_parsing/y_string_uEscape.json", + "test/data/nst_json_testsuite/test_parsing/y_string_unescaped_char_delete.json", + "test/data/nst_json_testsuite/test_parsing/y_string_unicode.json", + "test/data/nst_json_testsuite/test_parsing/y_string_unicodeEscapedBackslash.json", + "test/data/nst_json_testsuite/test_parsing/y_string_unicode_2.json", + "test/data/nst_json_testsuite/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json", + "test/data/nst_json_testsuite/test_parsing/y_string_unicode_U+2064_invisible_plus.json", + "test/data/nst_json_testsuite/test_parsing/y_string_unicode_escaped_double_quote.json", + "test/data/nst_json_testsuite/test_parsing/y_string_utf16.json", + "test/data/nst_json_testsuite/test_parsing/y_string_utf8.json", + "test/data/nst_json_testsuite/test_parsing/y_string_with_del_character.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_lonely_false.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_lonely_int.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_lonely_negative_real.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_lonely_null.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_lonely_string.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_lonely_true.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_string_empty.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_trailing_newline.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_true_in_array.json", + "test/data/nst_json_testsuite/test_parsing/y_structure_whitespace_array.json" + } + ) + { + CAPTURE(filename); + std::ifstream f(filename); + json j; + CHECK_NOTHROW(j << f); + } + } + + /* + SECTION("n") + { + for (auto filename : + { + "test/data/nst_json_testsuite/test_parsing/n_array_1_true_without_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_a_invalid_utf8.json", + "test/data/nst_json_testsuite/test_parsing/n_array_colon_instead_of_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_comma_after_close.json", + "test/data/nst_json_testsuite/test_parsing/n_array_comma_and_number.json", + "test/data/nst_json_testsuite/test_parsing/n_array_double_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_double_extra_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_extra_close.json", + "test/data/nst_json_testsuite/test_parsing/n_array_extra_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_incomplete.json", + "test/data/nst_json_testsuite/test_parsing/n_array_incomplete_invalid_value.json", + "test/data/nst_json_testsuite/test_parsing/n_array_inner_array_no_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_invalid_utf8.json", + "test/data/nst_json_testsuite/test_parsing/n_array_items_separated_by_semicolon.json", + "test/data/nst_json_testsuite/test_parsing/n_array_just_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_just_minus.json", + "test/data/nst_json_testsuite/test_parsing/n_array_missing_value.json", + "test/data/nst_json_testsuite/test_parsing/n_array_newlines_unclosed.json", + "test/data/nst_json_testsuite/test_parsing/n_array_number_and_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_number_and_several_commas.json", + "test/data/nst_json_testsuite/test_parsing/n_array_spaces_vertical_tab_formfeed.json", + "test/data/nst_json_testsuite/test_parsing/n_array_star_inside.json", + "test/data/nst_json_testsuite/test_parsing/n_array_unclosed.json", + "test/data/nst_json_testsuite/test_parsing/n_array_unclosed_trailing_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_unclosed_with_new_lines.json", + "test/data/nst_json_testsuite/test_parsing/n_array_unclosed_with_object_inside.json", + "test/data/nst_json_testsuite/test_parsing/n_incomplete_false.json", + "test/data/nst_json_testsuite/test_parsing/n_incomplete_null.json", + "test/data/nst_json_testsuite/test_parsing/n_incomplete_true.json", + "test/data/nst_json_testsuite/test_parsing/n_number_++.json", + "test/data/nst_json_testsuite/test_parsing/n_number_+1.json", + "test/data/nst_json_testsuite/test_parsing/n_number_+Inf.json", + "test/data/nst_json_testsuite/test_parsing/n_number_-01.json", + "test/data/nst_json_testsuite/test_parsing/n_number_-1.0..json", + "test/data/nst_json_testsuite/test_parsing/n_number_-2..json", + "test/data/nst_json_testsuite/test_parsing/n_number_-NaN.json", + "test/data/nst_json_testsuite/test_parsing/n_number_.-1.json", + "test/data/nst_json_testsuite/test_parsing/n_number_.2e-3.json", + "test/data/nst_json_testsuite/test_parsing/n_number_0.1.2.json", + "test/data/nst_json_testsuite/test_parsing/n_number_0.3e+.json", + "test/data/nst_json_testsuite/test_parsing/n_number_0.3e.json", + "test/data/nst_json_testsuite/test_parsing/n_number_0.e1.json", + "test/data/nst_json_testsuite/test_parsing/n_number_0_capital_E+.json", + "test/data/nst_json_testsuite/test_parsing/n_number_0_capital_E.json", + "test/data/nst_json_testsuite/test_parsing/n_number_0e+.json", + "test/data/nst_json_testsuite/test_parsing/n_number_0e.json", + "test/data/nst_json_testsuite/test_parsing/n_number_1.0e+.json", + "test/data/nst_json_testsuite/test_parsing/n_number_1.0e-.json", + "test/data/nst_json_testsuite/test_parsing/n_number_1.0e.json", + "test/data/nst_json_testsuite/test_parsing/n_number_1_000.json", + "test/data/nst_json_testsuite/test_parsing/n_number_1eE2.json", + "test/data/nst_json_testsuite/test_parsing/n_number_2.e+3.json", + "test/data/nst_json_testsuite/test_parsing/n_number_2.e-3.json", + "test/data/nst_json_testsuite/test_parsing/n_number_2.e3.json", + "test/data/nst_json_testsuite/test_parsing/n_number_9.e+.json", + "test/data/nst_json_testsuite/test_parsing/n_number_Inf.json", + "test/data/nst_json_testsuite/test_parsing/n_number_NaN.json", + "test/data/nst_json_testsuite/test_parsing/n_number_U+FF11_fullwidth_digit_one.json", + "test/data/nst_json_testsuite/test_parsing/n_number_expression.json", + "test/data/nst_json_testsuite/test_parsing/n_number_hex_1_digit.json", + "test/data/nst_json_testsuite/test_parsing/n_number_hex_2_digits.json", + "test/data/nst_json_testsuite/test_parsing/n_number_infinity.json", + "test/data/nst_json_testsuite/test_parsing/n_number_invalid+-.json", + "test/data/nst_json_testsuite/test_parsing/n_number_invalid-negative-real.json", + "test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-bigger-int.json", + "test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-exponent.json", + "test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-int.json", + "test/data/nst_json_testsuite/test_parsing/n_number_minus_infinity.json", + "test/data/nst_json_testsuite/test_parsing/n_number_minus_sign_with_trailing_garbage.json", + "test/data/nst_json_testsuite/test_parsing/n_number_minus_space_1.json", + "test/data/nst_json_testsuite/test_parsing/n_number_neg_int_starting_with_zero.json", + "test/data/nst_json_testsuite/test_parsing/n_number_neg_real_without_int_part.json", + "test/data/nst_json_testsuite/test_parsing/n_number_neg_with_garbage_at_end.json", + "test/data/nst_json_testsuite/test_parsing/n_number_real_garbage_after_e.json", + "test/data/nst_json_testsuite/test_parsing/n_number_real_with_invalid_utf8_after_e.json", + "test/data/nst_json_testsuite/test_parsing/n_number_real_without_fractional_part.json", + "test/data/nst_json_testsuite/test_parsing/n_number_starting_with_dot.json", + "test/data/nst_json_testsuite/test_parsing/n_number_then_00.json", + "test/data/nst_json_testsuite/test_parsing/n_number_with_alpha.json", + "test/data/nst_json_testsuite/test_parsing/n_number_with_alpha_char.json", + "test/data/nst_json_testsuite/test_parsing/n_number_with_leading_zero.json", + "test/data/nst_json_testsuite/test_parsing/n_object_bad_value.json", + "test/data/nst_json_testsuite/test_parsing/n_object_bracket_key.json", + "test/data/nst_json_testsuite/test_parsing/n_object_comma_instead_of_colon.json", + "test/data/nst_json_testsuite/test_parsing/n_object_double_colon.json", + "test/data/nst_json_testsuite/test_parsing/n_object_emoji.json", + "test/data/nst_json_testsuite/test_parsing/n_object_garbage_at_end.json", + "test/data/nst_json_testsuite/test_parsing/n_object_key_with_single_quotes.json", + "test/data/nst_json_testsuite/test_parsing/n_object_missing_colon.json", + "test/data/nst_json_testsuite/test_parsing/n_object_missing_key.json", + "test/data/nst_json_testsuite/test_parsing/n_object_missing_semicolon.json", + "test/data/nst_json_testsuite/test_parsing/n_object_missing_value.json", + "test/data/nst_json_testsuite/test_parsing/n_object_no-colon.json", + "test/data/nst_json_testsuite/test_parsing/n_object_non_string_key.json", + "test/data/nst_json_testsuite/test_parsing/n_object_non_string_key_but_huge_number_instead.json", + "test/data/nst_json_testsuite/test_parsing/n_object_pi_in_key_and_trailing_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_object_repeated_null_null.json", + "test/data/nst_json_testsuite/test_parsing/n_object_several_trailing_commas.json", + "test/data/nst_json_testsuite/test_parsing/n_object_single_quote.json", + "test/data/nst_json_testsuite/test_parsing/n_object_trailing_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment.json", + "test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_open.json", + "test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open.json", + "test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open_incomplete.json", + "test/data/nst_json_testsuite/test_parsing/n_object_two_commas_in_a_row.json", + "test/data/nst_json_testsuite/test_parsing/n_object_unquoted_key.json", + "test/data/nst_json_testsuite/test_parsing/n_object_unterminated-value.json", + "test/data/nst_json_testsuite/test_parsing/n_object_with_single_string.json", + "test/data/nst_json_testsuite/test_parsing/n_object_with_trailing_garbage.json", + "test/data/nst_json_testsuite/test_parsing/n_single_space.json", + "test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u.json", + "test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1.json", + "test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1x.json", + "test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape.json", + "test/data/nst_json_testsuite/test_parsing/n_string_UTF-16_incomplete_surrogate.json", + "test/data/nst_json_testsuite/test_parsing/n_string_UTF8_surrogate_U+D800.json", + "test/data/nst_json_testsuite/test_parsing/n_string_accentuated_char_no_quotes.json", + "test/data/nst_json_testsuite/test_parsing/n_string_backslash_00.json", + "test/data/nst_json_testsuite/test_parsing/n_string_escape_x.json", + "test/data/nst_json_testsuite/test_parsing/n_string_escaped_backslash_bad.json", + "test/data/nst_json_testsuite/test_parsing/n_string_escaped_ctrl_char_tab.json", + "test/data/nst_json_testsuite/test_parsing/n_string_escaped_emoji.json", + "test/data/nst_json_testsuite/test_parsing/n_string_incomplete_escape.json", + "test/data/nst_json_testsuite/test_parsing/n_string_incomplete_escaped_character.json", + "test/data/nst_json_testsuite/test_parsing/n_string_incomplete_surrogate_escape_invalid.json", + "test/data/nst_json_testsuite/test_parsing/n_string_invalid-utf-8-in-escape.json", + "test/data/nst_json_testsuite/test_parsing/n_string_invalid_backslash_esc.json", + "test/data/nst_json_testsuite/test_parsing/n_string_invalid_unicode_escape.json", + "test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf-8.json", + "test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf8_after_escape.json", + "test/data/nst_json_testsuite/test_parsing/n_string_iso_latin_1.json", + "test/data/nst_json_testsuite/test_parsing/n_string_leading_uescaped_thinspace.json", + "test/data/nst_json_testsuite/test_parsing/n_string_lone_utf8_continuation_byte.json", + "test/data/nst_json_testsuite/test_parsing/n_string_no_quotes_with_bad_escape.json", + "test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_2_bytes.json", + "test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes.json", + "test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes_null.json", + "test/data/nst_json_testsuite/test_parsing/n_string_single_doublequote.json", + "test/data/nst_json_testsuite/test_parsing/n_string_single_quote.json", + "test/data/nst_json_testsuite/test_parsing/n_string_single_string_no_double_quotes.json", + "test/data/nst_json_testsuite/test_parsing/n_string_start_escape_unclosed.json", + "test/data/nst_json_testsuite/test_parsing/n_string_unescaped_crtl_char.json", + "test/data/nst_json_testsuite/test_parsing/n_string_unescaped_newline.json", + "test/data/nst_json_testsuite/test_parsing/n_string_unescaped_tab.json", + "test/data/nst_json_testsuite/test_parsing/n_string_unicode_CapitalU.json", + "test/data/nst_json_testsuite/test_parsing/n_string_with_trailing_garbage.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_100000_opening_arrays.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_<.>.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_U+2060_word_joined.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_UTF8_BOM_no_data.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_array_trailing_garbage.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_array_with_extra_array_close.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_array_with_unclosed_string.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_ascii-unicode-identifier.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_capitalized_True.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_close_unopened_array.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_comma_instead_of_closing_brace.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_double_array.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_end_array.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_incomplete_UTF8_BOM.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_lone-invalid-utf-8.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_lone-open-bracket.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_no_data.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_null-byte-outside-string.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_number_with_trailing_garbage.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_object_followed_by_closing_object.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_object_unclosed_no_value.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_object_with_comment.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_object_with_trailing_garbage.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_apostrophe.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_object.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_open_object.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_open_string.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_string.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_object.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_object_close_array.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_object_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_object_open_array.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_object_open_string.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_object_string_with_apostrophes.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_open.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_single_point.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_single_star.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_trailing_#.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_uescaped_LF_before_string.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_partial_null.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_false.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_true.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_object.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_unicode-identifier.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_whitespace_U+2060_word_joiner.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_whitespace_formfeed.json" + } + ) + { + CAPTURE(filename); + std::ifstream f(filename); + json j; + CHECK_THROWS_AS(j << f, std::invalid_argument); + } + } + */ + } +} From 42ea4fb7510447d1328ab296ee8d9d77c5200de4 Mon Sep 17 00:00:00 2001 From: Niels Date: Sat, 29 Oct 2016 13:32:36 +0200 Subject: [PATCH 09/19] fixed a bug for short input files (#344) For input files with less than 5 bytes, the parser had a bug so that refilling the input buffer led to erasing it. --- src/json.hpp | 12 ++++++++---- src/json.hpp.re2c | 12 ++++++++---- test/src/unit-testsuites.cpp | 2 +- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 83cbfdb1..06a7dee9 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -8598,11 +8598,15 @@ basic_json_parser_63: // no stream is used or end of file is reached if (m_stream == nullptr or m_stream->eof()) { - // copy unprocessed characters to line buffer - m_line_buffer.clear(); - for (m_cursor = m_start; m_cursor != m_limit; ++m_cursor) + // skip this part if we are already using the line buffer + if (m_start != reinterpret_cast(m_line_buffer.data())) { - m_line_buffer.append(1, static_cast(*m_cursor)); + // copy unprocessed characters to line buffer + m_line_buffer.clear(); + for (m_cursor = m_start; m_cursor != m_limit; ++m_cursor) + { + m_line_buffer.append(1, static_cast(*m_cursor)); + } } // append 5 characters (size of longest keyword "false") to diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index f36879f8..2b2bec9a 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -7895,11 +7895,15 @@ class basic_json // no stream is used or end of file is reached if (m_stream == nullptr or m_stream->eof()) { - // copy unprocessed characters to line buffer - m_line_buffer.clear(); - for (m_cursor = m_start; m_cursor != m_limit; ++m_cursor) + // skip this part if we are already using the line buffer + if (m_start != reinterpret_cast(m_line_buffer.data())) { - m_line_buffer.append(1, static_cast(*m_cursor)); + // copy unprocessed characters to line buffer + m_line_buffer.clear(); + for (m_cursor = m_start; m_cursor != m_limit; ++m_cursor) + { + m_line_buffer.append(1, static_cast(*m_cursor)); + } } // append 5 characters (size of longest keyword "false") to diff --git a/test/src/unit-testsuites.cpp b/test/src/unit-testsuites.cpp index 79da2f32..dacf6f90 100644 --- a/test/src/unit-testsuites.cpp +++ b/test/src/unit-testsuites.cpp @@ -529,7 +529,7 @@ TEST_CASE("nst's JSONTestSuite") "test/data/nst_json_testsuite/test_parsing/y_string_unicode_U+200B_ZERO_WIDTH_SPACE.json", "test/data/nst_json_testsuite/test_parsing/y_string_unicode_U+2064_invisible_plus.json", "test/data/nst_json_testsuite/test_parsing/y_string_unicode_escaped_double_quote.json", - "test/data/nst_json_testsuite/test_parsing/y_string_utf16.json", + // "test/data/nst_json_testsuite/test_parsing/y_string_utf16.json", "test/data/nst_json_testsuite/test_parsing/y_string_utf8.json", "test/data/nst_json_testsuite/test_parsing/y_string_with_del_character.json", "test/data/nst_json_testsuite/test_parsing/y_structure_lonely_false.json", From b03bbe724db7fef519bad36cd547ad7f7cacd233 Mon Sep 17 00:00:00 2001 From: Niels Date: Sat, 29 Oct 2016 14:02:33 +0200 Subject: [PATCH 10/19] added n test cases (#344) --- test/src/unit-testsuites.cpp | 414 +++++++++++++++++------------------ 1 file changed, 206 insertions(+), 208 deletions(-) diff --git a/test/src/unit-testsuites.cpp b/test/src/unit-testsuites.cpp index dacf6f90..7cf6c26a 100644 --- a/test/src/unit-testsuites.cpp +++ b/test/src/unit-testsuites.cpp @@ -552,215 +552,213 @@ TEST_CASE("nst's JSONTestSuite") } } - /* - SECTION("n") - { - for (auto filename : - { - "test/data/nst_json_testsuite/test_parsing/n_array_1_true_without_comma.json", - "test/data/nst_json_testsuite/test_parsing/n_array_a_invalid_utf8.json", - "test/data/nst_json_testsuite/test_parsing/n_array_colon_instead_of_comma.json", - "test/data/nst_json_testsuite/test_parsing/n_array_comma_after_close.json", - "test/data/nst_json_testsuite/test_parsing/n_array_comma_and_number.json", - "test/data/nst_json_testsuite/test_parsing/n_array_double_comma.json", - "test/data/nst_json_testsuite/test_parsing/n_array_double_extra_comma.json", - "test/data/nst_json_testsuite/test_parsing/n_array_extra_close.json", - "test/data/nst_json_testsuite/test_parsing/n_array_extra_comma.json", - "test/data/nst_json_testsuite/test_parsing/n_array_incomplete.json", - "test/data/nst_json_testsuite/test_parsing/n_array_incomplete_invalid_value.json", - "test/data/nst_json_testsuite/test_parsing/n_array_inner_array_no_comma.json", - "test/data/nst_json_testsuite/test_parsing/n_array_invalid_utf8.json", - "test/data/nst_json_testsuite/test_parsing/n_array_items_separated_by_semicolon.json", - "test/data/nst_json_testsuite/test_parsing/n_array_just_comma.json", - "test/data/nst_json_testsuite/test_parsing/n_array_just_minus.json", - "test/data/nst_json_testsuite/test_parsing/n_array_missing_value.json", - "test/data/nst_json_testsuite/test_parsing/n_array_newlines_unclosed.json", - "test/data/nst_json_testsuite/test_parsing/n_array_number_and_comma.json", - "test/data/nst_json_testsuite/test_parsing/n_array_number_and_several_commas.json", - "test/data/nst_json_testsuite/test_parsing/n_array_spaces_vertical_tab_formfeed.json", - "test/data/nst_json_testsuite/test_parsing/n_array_star_inside.json", - "test/data/nst_json_testsuite/test_parsing/n_array_unclosed.json", - "test/data/nst_json_testsuite/test_parsing/n_array_unclosed_trailing_comma.json", - "test/data/nst_json_testsuite/test_parsing/n_array_unclosed_with_new_lines.json", - "test/data/nst_json_testsuite/test_parsing/n_array_unclosed_with_object_inside.json", - "test/data/nst_json_testsuite/test_parsing/n_incomplete_false.json", - "test/data/nst_json_testsuite/test_parsing/n_incomplete_null.json", - "test/data/nst_json_testsuite/test_parsing/n_incomplete_true.json", - "test/data/nst_json_testsuite/test_parsing/n_number_++.json", - "test/data/nst_json_testsuite/test_parsing/n_number_+1.json", - "test/data/nst_json_testsuite/test_parsing/n_number_+Inf.json", - "test/data/nst_json_testsuite/test_parsing/n_number_-01.json", - "test/data/nst_json_testsuite/test_parsing/n_number_-1.0..json", - "test/data/nst_json_testsuite/test_parsing/n_number_-2..json", - "test/data/nst_json_testsuite/test_parsing/n_number_-NaN.json", - "test/data/nst_json_testsuite/test_parsing/n_number_.-1.json", - "test/data/nst_json_testsuite/test_parsing/n_number_.2e-3.json", - "test/data/nst_json_testsuite/test_parsing/n_number_0.1.2.json", - "test/data/nst_json_testsuite/test_parsing/n_number_0.3e+.json", - "test/data/nst_json_testsuite/test_parsing/n_number_0.3e.json", - "test/data/nst_json_testsuite/test_parsing/n_number_0.e1.json", - "test/data/nst_json_testsuite/test_parsing/n_number_0_capital_E+.json", - "test/data/nst_json_testsuite/test_parsing/n_number_0_capital_E.json", - "test/data/nst_json_testsuite/test_parsing/n_number_0e+.json", - "test/data/nst_json_testsuite/test_parsing/n_number_0e.json", - "test/data/nst_json_testsuite/test_parsing/n_number_1.0e+.json", - "test/data/nst_json_testsuite/test_parsing/n_number_1.0e-.json", - "test/data/nst_json_testsuite/test_parsing/n_number_1.0e.json", - "test/data/nst_json_testsuite/test_parsing/n_number_1_000.json", - "test/data/nst_json_testsuite/test_parsing/n_number_1eE2.json", - "test/data/nst_json_testsuite/test_parsing/n_number_2.e+3.json", - "test/data/nst_json_testsuite/test_parsing/n_number_2.e-3.json", - "test/data/nst_json_testsuite/test_parsing/n_number_2.e3.json", - "test/data/nst_json_testsuite/test_parsing/n_number_9.e+.json", - "test/data/nst_json_testsuite/test_parsing/n_number_Inf.json", - "test/data/nst_json_testsuite/test_parsing/n_number_NaN.json", - "test/data/nst_json_testsuite/test_parsing/n_number_U+FF11_fullwidth_digit_one.json", - "test/data/nst_json_testsuite/test_parsing/n_number_expression.json", - "test/data/nst_json_testsuite/test_parsing/n_number_hex_1_digit.json", - "test/data/nst_json_testsuite/test_parsing/n_number_hex_2_digits.json", - "test/data/nst_json_testsuite/test_parsing/n_number_infinity.json", - "test/data/nst_json_testsuite/test_parsing/n_number_invalid+-.json", - "test/data/nst_json_testsuite/test_parsing/n_number_invalid-negative-real.json", - "test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-bigger-int.json", - "test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-exponent.json", - "test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-int.json", - "test/data/nst_json_testsuite/test_parsing/n_number_minus_infinity.json", - "test/data/nst_json_testsuite/test_parsing/n_number_minus_sign_with_trailing_garbage.json", - "test/data/nst_json_testsuite/test_parsing/n_number_minus_space_1.json", - "test/data/nst_json_testsuite/test_parsing/n_number_neg_int_starting_with_zero.json", - "test/data/nst_json_testsuite/test_parsing/n_number_neg_real_without_int_part.json", - "test/data/nst_json_testsuite/test_parsing/n_number_neg_with_garbage_at_end.json", - "test/data/nst_json_testsuite/test_parsing/n_number_real_garbage_after_e.json", - "test/data/nst_json_testsuite/test_parsing/n_number_real_with_invalid_utf8_after_e.json", - "test/data/nst_json_testsuite/test_parsing/n_number_real_without_fractional_part.json", - "test/data/nst_json_testsuite/test_parsing/n_number_starting_with_dot.json", - "test/data/nst_json_testsuite/test_parsing/n_number_then_00.json", - "test/data/nst_json_testsuite/test_parsing/n_number_with_alpha.json", - "test/data/nst_json_testsuite/test_parsing/n_number_with_alpha_char.json", - "test/data/nst_json_testsuite/test_parsing/n_number_with_leading_zero.json", - "test/data/nst_json_testsuite/test_parsing/n_object_bad_value.json", - "test/data/nst_json_testsuite/test_parsing/n_object_bracket_key.json", - "test/data/nst_json_testsuite/test_parsing/n_object_comma_instead_of_colon.json", - "test/data/nst_json_testsuite/test_parsing/n_object_double_colon.json", - "test/data/nst_json_testsuite/test_parsing/n_object_emoji.json", - "test/data/nst_json_testsuite/test_parsing/n_object_garbage_at_end.json", - "test/data/nst_json_testsuite/test_parsing/n_object_key_with_single_quotes.json", - "test/data/nst_json_testsuite/test_parsing/n_object_missing_colon.json", - "test/data/nst_json_testsuite/test_parsing/n_object_missing_key.json", - "test/data/nst_json_testsuite/test_parsing/n_object_missing_semicolon.json", - "test/data/nst_json_testsuite/test_parsing/n_object_missing_value.json", - "test/data/nst_json_testsuite/test_parsing/n_object_no-colon.json", - "test/data/nst_json_testsuite/test_parsing/n_object_non_string_key.json", - "test/data/nst_json_testsuite/test_parsing/n_object_non_string_key_but_huge_number_instead.json", - "test/data/nst_json_testsuite/test_parsing/n_object_pi_in_key_and_trailing_comma.json", - "test/data/nst_json_testsuite/test_parsing/n_object_repeated_null_null.json", - "test/data/nst_json_testsuite/test_parsing/n_object_several_trailing_commas.json", - "test/data/nst_json_testsuite/test_parsing/n_object_single_quote.json", - "test/data/nst_json_testsuite/test_parsing/n_object_trailing_comma.json", - "test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment.json", - "test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_open.json", - "test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open.json", - "test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open_incomplete.json", - "test/data/nst_json_testsuite/test_parsing/n_object_two_commas_in_a_row.json", - "test/data/nst_json_testsuite/test_parsing/n_object_unquoted_key.json", - "test/data/nst_json_testsuite/test_parsing/n_object_unterminated-value.json", - "test/data/nst_json_testsuite/test_parsing/n_object_with_single_string.json", - "test/data/nst_json_testsuite/test_parsing/n_object_with_trailing_garbage.json", - "test/data/nst_json_testsuite/test_parsing/n_single_space.json", - "test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u.json", - "test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1.json", - "test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1x.json", - "test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape.json", - "test/data/nst_json_testsuite/test_parsing/n_string_UTF-16_incomplete_surrogate.json", - "test/data/nst_json_testsuite/test_parsing/n_string_UTF8_surrogate_U+D800.json", - "test/data/nst_json_testsuite/test_parsing/n_string_accentuated_char_no_quotes.json", - "test/data/nst_json_testsuite/test_parsing/n_string_backslash_00.json", - "test/data/nst_json_testsuite/test_parsing/n_string_escape_x.json", - "test/data/nst_json_testsuite/test_parsing/n_string_escaped_backslash_bad.json", - "test/data/nst_json_testsuite/test_parsing/n_string_escaped_ctrl_char_tab.json", - "test/data/nst_json_testsuite/test_parsing/n_string_escaped_emoji.json", - "test/data/nst_json_testsuite/test_parsing/n_string_incomplete_escape.json", - "test/data/nst_json_testsuite/test_parsing/n_string_incomplete_escaped_character.json", - "test/data/nst_json_testsuite/test_parsing/n_string_incomplete_surrogate_escape_invalid.json", - "test/data/nst_json_testsuite/test_parsing/n_string_invalid-utf-8-in-escape.json", - "test/data/nst_json_testsuite/test_parsing/n_string_invalid_backslash_esc.json", - "test/data/nst_json_testsuite/test_parsing/n_string_invalid_unicode_escape.json", - "test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf-8.json", - "test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf8_after_escape.json", - "test/data/nst_json_testsuite/test_parsing/n_string_iso_latin_1.json", - "test/data/nst_json_testsuite/test_parsing/n_string_leading_uescaped_thinspace.json", - "test/data/nst_json_testsuite/test_parsing/n_string_lone_utf8_continuation_byte.json", - "test/data/nst_json_testsuite/test_parsing/n_string_no_quotes_with_bad_escape.json", - "test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_2_bytes.json", - "test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes.json", - "test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes_null.json", - "test/data/nst_json_testsuite/test_parsing/n_string_single_doublequote.json", - "test/data/nst_json_testsuite/test_parsing/n_string_single_quote.json", - "test/data/nst_json_testsuite/test_parsing/n_string_single_string_no_double_quotes.json", - "test/data/nst_json_testsuite/test_parsing/n_string_start_escape_unclosed.json", - "test/data/nst_json_testsuite/test_parsing/n_string_unescaped_crtl_char.json", - "test/data/nst_json_testsuite/test_parsing/n_string_unescaped_newline.json", - "test/data/nst_json_testsuite/test_parsing/n_string_unescaped_tab.json", - "test/data/nst_json_testsuite/test_parsing/n_string_unicode_CapitalU.json", - "test/data/nst_json_testsuite/test_parsing/n_string_with_trailing_garbage.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_100000_opening_arrays.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_<.>.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_U+2060_word_joined.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_UTF8_BOM_no_data.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_array_trailing_garbage.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_array_with_extra_array_close.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_array_with_unclosed_string.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_ascii-unicode-identifier.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_capitalized_True.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_close_unopened_array.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_comma_instead_of_closing_brace.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_double_array.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_end_array.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_incomplete_UTF8_BOM.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_lone-invalid-utf-8.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_lone-open-bracket.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_no_data.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_null-byte-outside-string.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_number_with_trailing_garbage.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_object_followed_by_closing_object.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_object_unclosed_no_value.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_object_with_comment.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_object_with_trailing_garbage.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_apostrophe.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_comma.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_object.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_open_object.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_open_string.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_string.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_open_object.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_open_object_close_array.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_open_object_comma.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_open_object_open_array.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_open_object_open_string.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_open_object_string_with_apostrophes.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_open_open.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_single_point.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_single_star.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_trailing_#.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_uescaped_LF_before_string.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_partial_null.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_false.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_true.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_object.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_unicode-identifier.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_whitespace_U+2060_word_joiner.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_whitespace_formfeed.json" - } - ) + SECTION("n") + { + for (auto filename : { - CAPTURE(filename); - std::ifstream f(filename); - json j; - CHECK_THROWS_AS(j << f, std::invalid_argument); + "test/data/nst_json_testsuite/test_parsing/n_array_1_true_without_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_a_invalid_utf8.json", + "test/data/nst_json_testsuite/test_parsing/n_array_colon_instead_of_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_comma_after_close.json", + "test/data/nst_json_testsuite/test_parsing/n_array_comma_and_number.json", + "test/data/nst_json_testsuite/test_parsing/n_array_double_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_double_extra_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_extra_close.json", + "test/data/nst_json_testsuite/test_parsing/n_array_extra_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_incomplete.json", + "test/data/nst_json_testsuite/test_parsing/n_array_incomplete_invalid_value.json", + "test/data/nst_json_testsuite/test_parsing/n_array_inner_array_no_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_invalid_utf8.json", + "test/data/nst_json_testsuite/test_parsing/n_array_items_separated_by_semicolon.json", + "test/data/nst_json_testsuite/test_parsing/n_array_just_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_just_minus.json", + "test/data/nst_json_testsuite/test_parsing/n_array_missing_value.json", + "test/data/nst_json_testsuite/test_parsing/n_array_newlines_unclosed.json", + "test/data/nst_json_testsuite/test_parsing/n_array_number_and_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_number_and_several_commas.json", + "test/data/nst_json_testsuite/test_parsing/n_array_spaces_vertical_tab_formfeed.json", + "test/data/nst_json_testsuite/test_parsing/n_array_star_inside.json", + "test/data/nst_json_testsuite/test_parsing/n_array_unclosed.json", + "test/data/nst_json_testsuite/test_parsing/n_array_unclosed_trailing_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_array_unclosed_with_new_lines.json", + "test/data/nst_json_testsuite/test_parsing/n_array_unclosed_with_object_inside.json", + "test/data/nst_json_testsuite/test_parsing/n_incomplete_false.json", + "test/data/nst_json_testsuite/test_parsing/n_incomplete_null.json", + "test/data/nst_json_testsuite/test_parsing/n_incomplete_true.json", + "test/data/nst_json_testsuite/test_parsing/n_number_++.json", + "test/data/nst_json_testsuite/test_parsing/n_number_+1.json", + "test/data/nst_json_testsuite/test_parsing/n_number_+Inf.json", + "test/data/nst_json_testsuite/test_parsing/n_number_-01.json", + "test/data/nst_json_testsuite/test_parsing/n_number_-1.0..json", + "test/data/nst_json_testsuite/test_parsing/n_number_-2..json", + "test/data/nst_json_testsuite/test_parsing/n_number_-NaN.json", + "test/data/nst_json_testsuite/test_parsing/n_number_.-1.json", + "test/data/nst_json_testsuite/test_parsing/n_number_.2e-3.json", + "test/data/nst_json_testsuite/test_parsing/n_number_0.1.2.json", + "test/data/nst_json_testsuite/test_parsing/n_number_0.3e+.json", + "test/data/nst_json_testsuite/test_parsing/n_number_0.3e.json", + "test/data/nst_json_testsuite/test_parsing/n_number_0.e1.json", + "test/data/nst_json_testsuite/test_parsing/n_number_0_capital_E+.json", + "test/data/nst_json_testsuite/test_parsing/n_number_0_capital_E.json", + "test/data/nst_json_testsuite/test_parsing/n_number_0e+.json", + "test/data/nst_json_testsuite/test_parsing/n_number_0e.json", + "test/data/nst_json_testsuite/test_parsing/n_number_1.0e+.json", + "test/data/nst_json_testsuite/test_parsing/n_number_1.0e-.json", + "test/data/nst_json_testsuite/test_parsing/n_number_1.0e.json", + "test/data/nst_json_testsuite/test_parsing/n_number_1_000.json", + "test/data/nst_json_testsuite/test_parsing/n_number_1eE2.json", + "test/data/nst_json_testsuite/test_parsing/n_number_2.e+3.json", + "test/data/nst_json_testsuite/test_parsing/n_number_2.e-3.json", + "test/data/nst_json_testsuite/test_parsing/n_number_2.e3.json", + "test/data/nst_json_testsuite/test_parsing/n_number_9.e+.json", + "test/data/nst_json_testsuite/test_parsing/n_number_Inf.json", + "test/data/nst_json_testsuite/test_parsing/n_number_NaN.json", + "test/data/nst_json_testsuite/test_parsing/n_number_U+FF11_fullwidth_digit_one.json", + "test/data/nst_json_testsuite/test_parsing/n_number_expression.json", + "test/data/nst_json_testsuite/test_parsing/n_number_hex_1_digit.json", + "test/data/nst_json_testsuite/test_parsing/n_number_hex_2_digits.json", + "test/data/nst_json_testsuite/test_parsing/n_number_infinity.json", + "test/data/nst_json_testsuite/test_parsing/n_number_invalid+-.json", + "test/data/nst_json_testsuite/test_parsing/n_number_invalid-negative-real.json", + "test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-bigger-int.json", + "test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-exponent.json", + "test/data/nst_json_testsuite/test_parsing/n_number_invalid-utf-8-in-int.json", + "test/data/nst_json_testsuite/test_parsing/n_number_minus_infinity.json", + "test/data/nst_json_testsuite/test_parsing/n_number_minus_sign_with_trailing_garbage.json", + "test/data/nst_json_testsuite/test_parsing/n_number_minus_space_1.json", + "test/data/nst_json_testsuite/test_parsing/n_number_neg_int_starting_with_zero.json", + "test/data/nst_json_testsuite/test_parsing/n_number_neg_real_without_int_part.json", + "test/data/nst_json_testsuite/test_parsing/n_number_neg_with_garbage_at_end.json", + "test/data/nst_json_testsuite/test_parsing/n_number_real_garbage_after_e.json", + "test/data/nst_json_testsuite/test_parsing/n_number_real_with_invalid_utf8_after_e.json", + "test/data/nst_json_testsuite/test_parsing/n_number_real_without_fractional_part.json", + "test/data/nst_json_testsuite/test_parsing/n_number_starting_with_dot.json", + //"test/data/nst_json_testsuite/test_parsing/n_number_then_00.json", + "test/data/nst_json_testsuite/test_parsing/n_number_with_alpha.json", + "test/data/nst_json_testsuite/test_parsing/n_number_with_alpha_char.json", + "test/data/nst_json_testsuite/test_parsing/n_number_with_leading_zero.json", + "test/data/nst_json_testsuite/test_parsing/n_object_bad_value.json", + "test/data/nst_json_testsuite/test_parsing/n_object_bracket_key.json", + "test/data/nst_json_testsuite/test_parsing/n_object_comma_instead_of_colon.json", + "test/data/nst_json_testsuite/test_parsing/n_object_double_colon.json", + "test/data/nst_json_testsuite/test_parsing/n_object_emoji.json", + "test/data/nst_json_testsuite/test_parsing/n_object_garbage_at_end.json", + "test/data/nst_json_testsuite/test_parsing/n_object_key_with_single_quotes.json", + "test/data/nst_json_testsuite/test_parsing/n_object_missing_colon.json", + "test/data/nst_json_testsuite/test_parsing/n_object_missing_key.json", + "test/data/nst_json_testsuite/test_parsing/n_object_missing_semicolon.json", + "test/data/nst_json_testsuite/test_parsing/n_object_missing_value.json", + "test/data/nst_json_testsuite/test_parsing/n_object_no-colon.json", + "test/data/nst_json_testsuite/test_parsing/n_object_non_string_key.json", + "test/data/nst_json_testsuite/test_parsing/n_object_non_string_key_but_huge_number_instead.json", + "test/data/nst_json_testsuite/test_parsing/n_object_pi_in_key_and_trailing_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_object_repeated_null_null.json", + "test/data/nst_json_testsuite/test_parsing/n_object_several_trailing_commas.json", + "test/data/nst_json_testsuite/test_parsing/n_object_single_quote.json", + "test/data/nst_json_testsuite/test_parsing/n_object_trailing_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment.json", + "test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_open.json", + "test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open.json", + "test/data/nst_json_testsuite/test_parsing/n_object_trailing_comment_slash_open_incomplete.json", + "test/data/nst_json_testsuite/test_parsing/n_object_two_commas_in_a_row.json", + "test/data/nst_json_testsuite/test_parsing/n_object_unquoted_key.json", + "test/data/nst_json_testsuite/test_parsing/n_object_unterminated-value.json", + "test/data/nst_json_testsuite/test_parsing/n_object_with_single_string.json", + "test/data/nst_json_testsuite/test_parsing/n_object_with_trailing_garbage.json", + "test/data/nst_json_testsuite/test_parsing/n_single_space.json", + "test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u.json", + "test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1.json", + "test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1x.json", + "test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape.json", + "test/data/nst_json_testsuite/test_parsing/n_string_UTF-16_incomplete_surrogate.json", + //"test/data/nst_json_testsuite/test_parsing/n_string_UTF8_surrogate_U+D800.json", + "test/data/nst_json_testsuite/test_parsing/n_string_accentuated_char_no_quotes.json", + "test/data/nst_json_testsuite/test_parsing/n_string_backslash_00.json", + "test/data/nst_json_testsuite/test_parsing/n_string_escape_x.json", + "test/data/nst_json_testsuite/test_parsing/n_string_escaped_backslash_bad.json", + "test/data/nst_json_testsuite/test_parsing/n_string_escaped_ctrl_char_tab.json", + "test/data/nst_json_testsuite/test_parsing/n_string_escaped_emoji.json", + "test/data/nst_json_testsuite/test_parsing/n_string_incomplete_escape.json", + "test/data/nst_json_testsuite/test_parsing/n_string_incomplete_escaped_character.json", + "test/data/nst_json_testsuite/test_parsing/n_string_incomplete_surrogate_escape_invalid.json", + "test/data/nst_json_testsuite/test_parsing/n_string_invalid-utf-8-in-escape.json", + "test/data/nst_json_testsuite/test_parsing/n_string_invalid_backslash_esc.json", + "test/data/nst_json_testsuite/test_parsing/n_string_invalid_unicode_escape.json", + //"test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf-8.json", + "test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf8_after_escape.json", + //"test/data/nst_json_testsuite/test_parsing/n_string_iso_latin_1.json", + "test/data/nst_json_testsuite/test_parsing/n_string_leading_uescaped_thinspace.json", + //"test/data/nst_json_testsuite/test_parsing/n_string_lone_utf8_continuation_byte.json", + "test/data/nst_json_testsuite/test_parsing/n_string_no_quotes_with_bad_escape.json", + //"test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_2_bytes.json", + //"test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes.json", + //"test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes_null.json", + "test/data/nst_json_testsuite/test_parsing/n_string_single_doublequote.json", + "test/data/nst_json_testsuite/test_parsing/n_string_single_quote.json", + "test/data/nst_json_testsuite/test_parsing/n_string_single_string_no_double_quotes.json", + "test/data/nst_json_testsuite/test_parsing/n_string_start_escape_unclosed.json", + "test/data/nst_json_testsuite/test_parsing/n_string_unescaped_crtl_char.json", + "test/data/nst_json_testsuite/test_parsing/n_string_unescaped_newline.json", + "test/data/nst_json_testsuite/test_parsing/n_string_unescaped_tab.json", + "test/data/nst_json_testsuite/test_parsing/n_string_unicode_CapitalU.json", + "test/data/nst_json_testsuite/test_parsing/n_string_with_trailing_garbage.json", + //!"test/data/nst_json_testsuite/test_parsing/n_structure_100000_opening_arrays.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_<.>.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_U+2060_word_joined.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_UTF8_BOM_no_data.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_array_trailing_garbage.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_array_with_extra_array_close.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_array_with_unclosed_string.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_ascii-unicode-identifier.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_capitalized_True.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_close_unopened_array.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_comma_instead_of_closing_brace.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_double_array.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_end_array.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_incomplete_UTF8_BOM.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_lone-invalid-utf-8.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_lone-open-bracket.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_no_data.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_null-byte-outside-string.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_number_with_trailing_garbage.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_object_followed_by_closing_object.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_object_unclosed_no_value.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_object_with_comment.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_object_with_trailing_garbage.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_apostrophe.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_comma.json", + //!"test/data/nst_json_testsuite/test_parsing/n_structure_open_array_object.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_open_object.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_open_string.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_array_string.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_object.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_object_close_array.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_object_comma.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_object_open_array.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_object_open_string.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_object_string_with_apostrophes.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_open_open.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_single_point.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_single_star.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_trailing_#.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_uescaped_LF_before_string.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_partial_null.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_false.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_array_unfinished_true.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_unclosed_object.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_unicode-identifier.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_whitespace_U+2060_word_joiner.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_whitespace_formfeed.json" } - } - */ + ) + { + CAPTURE(filename); + std::ifstream f(filename); + json j; + CHECK_THROWS_AS(j << f, std::invalid_argument); + } + } } } From b820bb3b1f634879e6b6d20334062d9524ff5480 Mon Sep 17 00:00:00 2001 From: Niels Date: Sat, 29 Oct 2016 19:35:17 +0200 Subject: [PATCH 11/19] fixed a lot of unicode errors (#344) BOMs currently yield an error. --- Makefile | 2 +- src/json.hpp | 457 +++++++++++++++++++++++++---------- src/json.hpp.re2c | 2 +- test/src/unit-testsuites.cpp | 14 +- test/src/unit-unicode.cpp | 4 +- 5 files changed, 334 insertions(+), 145 deletions(-) diff --git a/Makefile b/Makefile index 4c96bad7..4c66fbfb 100644 --- a/Makefile +++ b/Makefile @@ -75,7 +75,7 @@ clang_sanitize: clean # create scanner with re2c re2c: src/json.hpp.re2c - $(RE2C) -W --bit-vectors --nested-ifs --no-debug-info $< | $(SED) '1d' > src/json.hpp + $(RE2C) -W --utf-8 --encoding-policy fail --bit-vectors --nested-ifs --no-debug-info $< | $(SED) '1d' > src/json.hpp # pretty printer pretty: diff --git a/src/json.hpp b/src/json.hpp index 06a7dee9..9c142443 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -7809,24 +7809,24 @@ class basic_json 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, - 128, 128, 128, 128, 128, 128, 128, 128, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, }; - if ((m_limit - m_cursor) < 5) + if ((m_limit - m_cursor) < 6) { fill_line_buffer(); } @@ -7937,7 +7937,7 @@ class basic_json { goto basic_json_parser_28; } - if (yych == 0xEF) + if (yych == 0xC3) { goto basic_json_parser_30; } @@ -7979,7 +7979,19 @@ basic_json_parser_9: { goto basic_json_parser_5; } - goto basic_json_parser_32; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0xC1) + { + goto basic_json_parser_5; + } + if (yych <= 0xF4) + { + goto basic_json_parser_32; + } + goto basic_json_parser_5; basic_json_parser_10: ++m_cursor; { @@ -8008,18 +8020,18 @@ basic_json_parser_13: { if (yych == '.') { - goto basic_json_parser_37; + goto basic_json_parser_44; } } else { if (yych <= 'E') { - goto basic_json_parser_38; + goto basic_json_parser_45; } if (yych == 'e') { - goto basic_json_parser_38; + goto basic_json_parser_45; } } basic_json_parser_14: @@ -8043,7 +8055,7 @@ basic_json_parser_15: { if (yych == '.') { - goto basic_json_parser_37; + goto basic_json_parser_44; } goto basic_json_parser_14; } @@ -8051,11 +8063,11 @@ basic_json_parser_15: { if (yych <= 'E') { - goto basic_json_parser_38; + goto basic_json_parser_45; } if (yych == 'e') { - goto basic_json_parser_38; + goto basic_json_parser_45; } goto basic_json_parser_14; } @@ -8082,7 +8094,7 @@ basic_json_parser_23: yych = *(m_marker = ++m_cursor); if (yych == 'a') { - goto basic_json_parser_39; + goto basic_json_parser_46; } goto basic_json_parser_5; basic_json_parser_24: @@ -8090,7 +8102,7 @@ basic_json_parser_24: yych = *(m_marker = ++m_cursor); if (yych == 'u') { - goto basic_json_parser_40; + goto basic_json_parser_47; } goto basic_json_parser_5; basic_json_parser_25: @@ -8098,7 +8110,7 @@ basic_json_parser_25: yych = *(m_marker = ++m_cursor); if (yych == 'r') { - goto basic_json_parser_41; + goto basic_json_parser_48; } goto basic_json_parser_5; basic_json_parser_26: @@ -8116,9 +8128,9 @@ basic_json_parser_28: basic_json_parser_30: yyaccept = 0; yych = *(m_marker = ++m_cursor); - if (yych == 0xBB) + if (yych == 0xAF) { - goto basic_json_parser_42; + goto basic_json_parser_49; } goto basic_json_parser_5; basic_json_parser_31: @@ -8133,15 +8145,59 @@ basic_json_parser_32: { goto basic_json_parser_31; } - if (yych <= 0x1F) + if (yych <= 0xE0) { - goto basic_json_parser_33; + if (yych <= '\\') + { + if (yych <= 0x1F) + { + goto basic_json_parser_33; + } + if (yych <= '"') + { + goto basic_json_parser_34; + } + goto basic_json_parser_36; + } + else + { + if (yych <= 0xC1) + { + goto basic_json_parser_33; + } + if (yych <= 0xDF) + { + goto basic_json_parser_37; + } + goto basic_json_parser_38; + } } - if (yych <= '"') + else { - goto basic_json_parser_34; + if (yych <= 0xEF) + { + if (yych == 0xED) + { + goto basic_json_parser_40; + } + goto basic_json_parser_39; + } + else + { + if (yych <= 0xF0) + { + goto basic_json_parser_41; + } + if (yych <= 0xF3) + { + goto basic_json_parser_42; + } + if (yych <= 0xF4) + { + goto basic_json_parser_43; + } + } } - goto basic_json_parser_36; basic_json_parser_33: m_cursor = m_marker; if (yyaccept == 0) @@ -8231,13 +8287,125 @@ basic_json_parser_36: } if (yych <= 'u') { - goto basic_json_parser_43; + goto basic_json_parser_50; } goto basic_json_parser_33; } } } basic_json_parser_37: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(); + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_33; + } + if (yych <= 0xBF) + { + goto basic_json_parser_31; + } + goto basic_json_parser_33; +basic_json_parser_38: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(); + } + yych = *m_cursor; + if (yych <= 0x9F) + { + goto basic_json_parser_33; + } + if (yych <= 0xBF) + { + goto basic_json_parser_37; + } + goto basic_json_parser_33; +basic_json_parser_39: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(); + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_33; + } + if (yych <= 0xBF) + { + goto basic_json_parser_37; + } + goto basic_json_parser_33; +basic_json_parser_40: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(); + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_33; + } + if (yych <= 0x9F) + { + goto basic_json_parser_37; + } + goto basic_json_parser_33; +basic_json_parser_41: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(); + } + yych = *m_cursor; + if (yych <= 0x8F) + { + goto basic_json_parser_33; + } + if (yych <= 0xBF) + { + goto basic_json_parser_39; + } + goto basic_json_parser_33; +basic_json_parser_42: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(); + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_33; + } + if (yych <= 0xBF) + { + goto basic_json_parser_39; + } + goto basic_json_parser_33; +basic_json_parser_43: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(); + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_33; + } + if (yych <= 0x8F) + { + goto basic_json_parser_39; + } + goto basic_json_parser_33; +basic_json_parser_44: yych = *++m_cursor; if (yych <= '/') { @@ -8245,16 +8413,16 @@ basic_json_parser_37: } if (yych <= '9') { - goto basic_json_parser_44; + goto basic_json_parser_51; } goto basic_json_parser_33; -basic_json_parser_38: +basic_json_parser_45: yych = *++m_cursor; if (yych <= ',') { if (yych == '+') { - goto basic_json_parser_46; + goto basic_json_parser_53; } goto basic_json_parser_33; } @@ -8262,7 +8430,7 @@ basic_json_parser_38: { if (yych <= '-') { - goto basic_json_parser_46; + goto basic_json_parser_53; } if (yych <= '/') { @@ -8270,39 +8438,39 @@ basic_json_parser_38: } if (yych <= '9') { - goto basic_json_parser_47; + goto basic_json_parser_54; } goto basic_json_parser_33; } -basic_json_parser_39: +basic_json_parser_46: yych = *++m_cursor; if (yych == 'l') { - goto basic_json_parser_49; + goto basic_json_parser_56; } goto basic_json_parser_33; -basic_json_parser_40: +basic_json_parser_47: yych = *++m_cursor; if (yych == 'l') { - goto basic_json_parser_50; + goto basic_json_parser_57; } goto basic_json_parser_33; -basic_json_parser_41: +basic_json_parser_48: yych = *++m_cursor; if (yych == 'u') { - goto basic_json_parser_51; + goto basic_json_parser_58; } goto basic_json_parser_33; -basic_json_parser_42: +basic_json_parser_49: yych = *++m_cursor; - if (yych == 0xBF) + if (yych == 0xC2) { - goto basic_json_parser_52; + goto basic_json_parser_59; } goto basic_json_parser_33; -basic_json_parser_43: +basic_json_parser_50: ++m_cursor; if (m_limit <= m_cursor) { @@ -8317,7 +8485,7 @@ basic_json_parser_43: } if (yych <= '9') { - goto basic_json_parser_54; + goto basic_json_parser_60; } goto basic_json_parser_33; } @@ -8325,7 +8493,7 @@ basic_json_parser_43: { if (yych <= 'F') { - goto basic_json_parser_54; + goto basic_json_parser_60; } if (yych <= '`') { @@ -8333,11 +8501,11 @@ basic_json_parser_43: } if (yych <= 'f') { - goto basic_json_parser_54; + goto basic_json_parser_60; } goto basic_json_parser_33; } -basic_json_parser_44: +basic_json_parser_51: yyaccept = 1; m_marker = ++m_cursor; if ((m_limit - m_cursor) < 3) @@ -8353,7 +8521,7 @@ basic_json_parser_44: } if (yych <= '9') { - goto basic_json_parser_44; + goto basic_json_parser_51; } goto basic_json_parser_14; } @@ -8361,15 +8529,15 @@ basic_json_parser_44: { if (yych <= 'E') { - goto basic_json_parser_38; + goto basic_json_parser_45; } if (yych == 'e') { - goto basic_json_parser_38; + goto basic_json_parser_45; } goto basic_json_parser_14; } -basic_json_parser_46: +basic_json_parser_53: yych = *++m_cursor; if (yych <= '/') { @@ -8379,7 +8547,7 @@ basic_json_parser_46: { goto basic_json_parser_33; } -basic_json_parser_47: +basic_json_parser_54: ++m_cursor; if (m_limit <= m_cursor) { @@ -8392,89 +8560,37 @@ basic_json_parser_47: } if (yych <= '9') { - goto basic_json_parser_47; + goto basic_json_parser_54; } goto basic_json_parser_14; -basic_json_parser_49: +basic_json_parser_56: yych = *++m_cursor; if (yych == 's') - { - goto basic_json_parser_55; - } - goto basic_json_parser_33; -basic_json_parser_50: - yych = *++m_cursor; - if (yych == 'l') - { - goto basic_json_parser_56; - } - goto basic_json_parser_33; -basic_json_parser_51: - yych = *++m_cursor; - if (yych == 'e') - { - goto basic_json_parser_58; - } - goto basic_json_parser_33; -basic_json_parser_52: - ++m_cursor; - { - continue; - } -basic_json_parser_54: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(); - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_33; - } - if (yych <= '9') - { - goto basic_json_parser_60; - } - goto basic_json_parser_33; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_60; - } - if (yych <= '`') - { - goto basic_json_parser_33; - } - if (yych <= 'f') - { - goto basic_json_parser_60; - } - goto basic_json_parser_33; - } -basic_json_parser_55: - yych = *++m_cursor; - if (yych == 'e') { goto basic_json_parser_61; } goto basic_json_parser_33; -basic_json_parser_56: - ++m_cursor; +basic_json_parser_57: + yych = *++m_cursor; + if (yych == 'l') { - last_token_type = token_type::literal_null; - break; + goto basic_json_parser_62; } + goto basic_json_parser_33; basic_json_parser_58: - ++m_cursor; + yych = *++m_cursor; + if (yych == 'e') { - last_token_type = token_type::literal_true; - break; + goto basic_json_parser_64; } + goto basic_json_parser_33; +basic_json_parser_59: + yych = *++m_cursor; + if (yych == 0xBB) + { + goto basic_json_parser_66; + } + goto basic_json_parser_33; basic_json_parser_60: ++m_cursor; if (m_limit <= m_cursor) @@ -8490,7 +8606,7 @@ basic_json_parser_60: } if (yych <= '9') { - goto basic_json_parser_63; + goto basic_json_parser_67; } goto basic_json_parser_33; } @@ -8498,7 +8614,7 @@ basic_json_parser_60: { if (yych <= 'F') { - goto basic_json_parser_63; + goto basic_json_parser_67; } if (yych <= '`') { @@ -8506,17 +8622,85 @@ basic_json_parser_60: } if (yych <= 'f') { - goto basic_json_parser_63; + goto basic_json_parser_67; } goto basic_json_parser_33; } basic_json_parser_61: + yych = *++m_cursor; + if (yych == 'e') + { + goto basic_json_parser_68; + } + goto basic_json_parser_33; +basic_json_parser_62: + ++m_cursor; + { + last_token_type = token_type::literal_null; + break; + } +basic_json_parser_64: + ++m_cursor; + { + last_token_type = token_type::literal_true; + break; + } +basic_json_parser_66: + yych = *++m_cursor; + if (yych == 0xC2) + { + goto basic_json_parser_70; + } + goto basic_json_parser_33; +basic_json_parser_67: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(); + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_33; + } + if (yych <= '9') + { + goto basic_json_parser_71; + } + goto basic_json_parser_33; + } + else + { + if (yych <= 'F') + { + goto basic_json_parser_71; + } + if (yych <= '`') + { + goto basic_json_parser_33; + } + if (yych <= 'f') + { + goto basic_json_parser_71; + } + goto basic_json_parser_33; + } +basic_json_parser_68: ++m_cursor; { last_token_type = token_type::literal_false; break; } -basic_json_parser_63: +basic_json_parser_70: + yych = *++m_cursor; + if (yych == 0xBF) + { + goto basic_json_parser_72; + } + goto basic_json_parser_33; +basic_json_parser_71: ++m_cursor; if (m_limit <= m_cursor) { @@ -8551,6 +8735,11 @@ basic_json_parser_63: } goto basic_json_parser_33; } +basic_json_parser_72: + ++m_cursor; + { + continue; + } } } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 2b2bec9a..470ade21 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -7848,7 +7848,7 @@ class basic_json "\000" { last_token_type = token_type::end_of_input; break; } // anything else is an error - . { last_token_type = token_type::parse_error; break; } + * { last_token_type = token_type::parse_error; break; } */ } diff --git a/test/src/unit-testsuites.cpp b/test/src/unit-testsuites.cpp index 7cf6c26a..2a1f472e 100644 --- a/test/src/unit-testsuites.cpp +++ b/test/src/unit-testsuites.cpp @@ -671,7 +671,7 @@ TEST_CASE("nst's JSONTestSuite") "test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape u1x.json", "test/data/nst_json_testsuite/test_parsing/n_string_1_surrogate_then_escape.json", "test/data/nst_json_testsuite/test_parsing/n_string_UTF-16_incomplete_surrogate.json", - //"test/data/nst_json_testsuite/test_parsing/n_string_UTF8_surrogate_U+D800.json", + "test/data/nst_json_testsuite/test_parsing/n_string_UTF8_surrogate_U+D800.json", "test/data/nst_json_testsuite/test_parsing/n_string_accentuated_char_no_quotes.json", "test/data/nst_json_testsuite/test_parsing/n_string_backslash_00.json", "test/data/nst_json_testsuite/test_parsing/n_string_escape_x.json", @@ -684,15 +684,15 @@ TEST_CASE("nst's JSONTestSuite") "test/data/nst_json_testsuite/test_parsing/n_string_invalid-utf-8-in-escape.json", "test/data/nst_json_testsuite/test_parsing/n_string_invalid_backslash_esc.json", "test/data/nst_json_testsuite/test_parsing/n_string_invalid_unicode_escape.json", - //"test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf-8.json", + "test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf-8.json", "test/data/nst_json_testsuite/test_parsing/n_string_invalid_utf8_after_escape.json", - //"test/data/nst_json_testsuite/test_parsing/n_string_iso_latin_1.json", + "test/data/nst_json_testsuite/test_parsing/n_string_iso_latin_1.json", "test/data/nst_json_testsuite/test_parsing/n_string_leading_uescaped_thinspace.json", - //"test/data/nst_json_testsuite/test_parsing/n_string_lone_utf8_continuation_byte.json", + "test/data/nst_json_testsuite/test_parsing/n_string_lone_utf8_continuation_byte.json", "test/data/nst_json_testsuite/test_parsing/n_string_no_quotes_with_bad_escape.json", - //"test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_2_bytes.json", - //"test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes.json", - //"test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes_null.json", + "test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_2_bytes.json", + "test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes.json", + "test/data/nst_json_testsuite/test_parsing/n_string_overlong_sequence_6_bytes_null.json", "test/data/nst_json_testsuite/test_parsing/n_string_single_doublequote.json", "test/data/nst_json_testsuite/test_parsing/n_string_single_quote.json", "test/data/nst_json_testsuite/test_parsing/n_string_single_string_no_double_quotes.json", diff --git a/test/src/unit-unicode.cpp b/test/src/unit-unicode.cpp index 5ab8f524..aa1b7de6 100644 --- a/test/src/unit-unicode.cpp +++ b/test/src/unit-unicode.cpp @@ -159,7 +159,7 @@ TEST_CASE("Unicode", "[hide]") } } } - +/* SECTION("ignore byte-order-mark") { // read a file with a UTF-8 BOM @@ -167,7 +167,7 @@ TEST_CASE("Unicode", "[hide]") json j; CHECK_NOTHROW(j << f); } - +*/ SECTION("error for incomplete/wrong BOM") { CHECK_THROWS_AS(json::parse("\xef\xbb"), std::invalid_argument); From a8136c578a8bfe700f3b6ee942291d053f582716 Mon Sep 17 00:00:00 2001 From: Niels Date: Sat, 29 Oct 2016 21:08:30 +0200 Subject: [PATCH 12/19] fixed BOM handling #344 --- src/json.hpp | 521 ++++++++++++++++++-------------------- src/json.hpp.re2c | 12 +- test/src/unit-unicode.cpp | 4 +- 3 files changed, 252 insertions(+), 285 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 9c142443..13a821ec 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -7620,6 +7620,14 @@ class basic_json { // fill buffer fill_line_buffer(); + + // skip UTF-8 byte-order mark + if (m_line_buffer.size() >= 3 and m_line_buffer.substr(0, 3) == "\xEF\xBB\xBF") + { + m_line_buffer[0] = ' '; + m_line_buffer[1] = ' '; + m_line_buffer[2] = ' '; + } } // switch off unwanted functions (due to pointer members) @@ -7826,7 +7834,7 @@ class basic_json 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - if ((m_limit - m_cursor) < 6) + if ((m_limit - m_cursor) < 5) { fill_line_buffer(); } @@ -7835,7 +7843,7 @@ class basic_json { goto basic_json_parser_6; } - if (yych <= '\\') + if (yych <= '[') { if (yych <= '-') { @@ -7884,63 +7892,59 @@ class basic_json { goto basic_json_parser_17; } - if (yych == '[') + if (yych <= 'Z') { - goto basic_json_parser_19; + goto basic_json_parser_4; } - goto basic_json_parser_4; + goto basic_json_parser_19; } } } else { - if (yych <= 't') + if (yych <= 'n') { - if (yych <= 'f') + if (yych <= 'e') { - if (yych <= ']') + if (yych == ']') { goto basic_json_parser_21; } - if (yych <= 'e') - { - goto basic_json_parser_4; - } - goto basic_json_parser_23; - } - else - { - if (yych == 'n') - { - goto basic_json_parser_24; - } - if (yych <= 's') - { - goto basic_json_parser_4; - } - goto basic_json_parser_25; - } - } - else - { - if (yych <= '|') - { - if (yych == '{') - { - goto basic_json_parser_26; - } goto basic_json_parser_4; } else { - if (yych <= '}') + if (yych <= 'f') + { + goto basic_json_parser_23; + } + if (yych <= 'm') + { + goto basic_json_parser_4; + } + goto basic_json_parser_24; + } + } + else + { + if (yych <= 'z') + { + if (yych == 't') + { + goto basic_json_parser_25; + } + goto basic_json_parser_4; + } + else + { + if (yych <= '{') + { + goto basic_json_parser_26; + } + if (yych == '}') { goto basic_json_parser_28; } - if (yych == 0xC3) - { - goto basic_json_parser_30; - } goto basic_json_parser_4; } } @@ -7981,7 +7985,7 @@ basic_json_parser_9: } if (yych <= 0x7F) { - goto basic_json_parser_32; + goto basic_json_parser_31; } if (yych <= 0xC1) { @@ -7989,7 +7993,7 @@ basic_json_parser_9: } if (yych <= 0xF4) { - goto basic_json_parser_32; + goto basic_json_parser_31; } goto basic_json_parser_5; basic_json_parser_10: @@ -8020,18 +8024,18 @@ basic_json_parser_13: { if (yych == '.') { - goto basic_json_parser_44; + goto basic_json_parser_43; } } else { if (yych <= 'E') { - goto basic_json_parser_45; + goto basic_json_parser_44; } if (yych == 'e') { - goto basic_json_parser_45; + goto basic_json_parser_44; } } basic_json_parser_14: @@ -8055,7 +8059,7 @@ basic_json_parser_15: { if (yych == '.') { - goto basic_json_parser_44; + goto basic_json_parser_43; } goto basic_json_parser_14; } @@ -8063,11 +8067,11 @@ basic_json_parser_15: { if (yych <= 'E') { - goto basic_json_parser_45; + goto basic_json_parser_44; } if (yych == 'e') { - goto basic_json_parser_45; + goto basic_json_parser_44; } goto basic_json_parser_14; } @@ -8094,7 +8098,7 @@ basic_json_parser_23: yych = *(m_marker = ++m_cursor); if (yych == 'a') { - goto basic_json_parser_46; + goto basic_json_parser_45; } goto basic_json_parser_5; basic_json_parser_24: @@ -8102,7 +8106,7 @@ basic_json_parser_24: yych = *(m_marker = ++m_cursor); if (yych == 'u') { - goto basic_json_parser_47; + goto basic_json_parser_46; } goto basic_json_parser_5; basic_json_parser_25: @@ -8110,7 +8114,7 @@ basic_json_parser_25: yych = *(m_marker = ++m_cursor); if (yych == 'r') { - goto basic_json_parser_48; + goto basic_json_parser_47; } goto basic_json_parser_5; basic_json_parser_26: @@ -8126,24 +8130,16 @@ basic_json_parser_28: break; } basic_json_parser_30: - yyaccept = 0; - yych = *(m_marker = ++m_cursor); - if (yych == 0xAF) - { - goto basic_json_parser_49; - } - goto basic_json_parser_5; -basic_json_parser_31: ++m_cursor; if (m_limit <= m_cursor) { fill_line_buffer(); } yych = *m_cursor; -basic_json_parser_32: +basic_json_parser_31: if (yybm[0 + yych] & 128) { - goto basic_json_parser_31; + goto basic_json_parser_30; } if (yych <= 0xE0) { @@ -8151,25 +8147,25 @@ basic_json_parser_32: { if (yych <= 0x1F) { - goto basic_json_parser_33; + goto basic_json_parser_32; } if (yych <= '"') { - goto basic_json_parser_34; + goto basic_json_parser_33; } - goto basic_json_parser_36; + goto basic_json_parser_35; } else { if (yych <= 0xC1) { - goto basic_json_parser_33; + goto basic_json_parser_32; } if (yych <= 0xDF) { - goto basic_json_parser_37; + goto basic_json_parser_36; } - goto basic_json_parser_38; + goto basic_json_parser_37; } } else @@ -8178,27 +8174,27 @@ basic_json_parser_32: { if (yych == 0xED) { - goto basic_json_parser_40; + goto basic_json_parser_39; } - goto basic_json_parser_39; + goto basic_json_parser_38; } else { if (yych <= 0xF0) { - goto basic_json_parser_41; + goto basic_json_parser_40; } if (yych <= 0xF3) { - goto basic_json_parser_42; + goto basic_json_parser_41; } if (yych <= 0xF4) { - goto basic_json_parser_43; + goto basic_json_parser_42; } } } -basic_json_parser_33: +basic_json_parser_32: m_cursor = m_marker; if (yyaccept == 0) { @@ -8208,13 +8204,13 @@ basic_json_parser_33: { goto basic_json_parser_14; } -basic_json_parser_34: +basic_json_parser_33: ++m_cursor; { last_token_type = token_type::value_string; break; } -basic_json_parser_36: +basic_json_parser_35: ++m_cursor; if (m_limit <= m_cursor) { @@ -8227,13 +8223,13 @@ basic_json_parser_36: { if (yych == '"') { - goto basic_json_parser_31; + goto basic_json_parser_30; } if (yych <= '.') { - goto basic_json_parser_33; + goto basic_json_parser_32; } - goto basic_json_parser_31; + goto basic_json_parser_30; } else { @@ -8241,17 +8237,17 @@ basic_json_parser_36: { if (yych <= '[') { - goto basic_json_parser_33; + goto basic_json_parser_32; } - goto basic_json_parser_31; + goto basic_json_parser_30; } else { if (yych == 'b') { - goto basic_json_parser_31; + goto basic_json_parser_30; } - goto basic_json_parser_33; + goto basic_json_parser_32; } } } @@ -8261,13 +8257,13 @@ basic_json_parser_36: { if (yych <= 'f') { - goto basic_json_parser_31; + goto basic_json_parser_30; } if (yych == 'n') { - goto basic_json_parser_31; + goto basic_json_parser_30; } - goto basic_json_parser_33; + goto basic_json_parser_32; } else { @@ -8275,25 +8271,25 @@ basic_json_parser_36: { if (yych <= 'r') { - goto basic_json_parser_31; + goto basic_json_parser_30; } - goto basic_json_parser_33; + goto basic_json_parser_32; } else { if (yych <= 't') { - goto basic_json_parser_31; + goto basic_json_parser_30; } if (yych <= 'u') { - goto basic_json_parser_50; + goto basic_json_parser_48; } - goto basic_json_parser_33; + goto basic_json_parser_32; } } } -basic_json_parser_37: +basic_json_parser_36: ++m_cursor; if (m_limit <= m_cursor) { @@ -8302,14 +8298,14 @@ basic_json_parser_37: yych = *m_cursor; if (yych <= 0x7F) { - goto basic_json_parser_33; + goto basic_json_parser_32; } if (yych <= 0xBF) { - goto basic_json_parser_31; + goto basic_json_parser_30; } - goto basic_json_parser_33; -basic_json_parser_38: + goto basic_json_parser_32; +basic_json_parser_37: ++m_cursor; if (m_limit <= m_cursor) { @@ -8318,13 +8314,29 @@ basic_json_parser_38: yych = *m_cursor; if (yych <= 0x9F) { - goto basic_json_parser_33; + goto basic_json_parser_32; } if (yych <= 0xBF) { - goto basic_json_parser_37; + goto basic_json_parser_36; } - goto basic_json_parser_33; + goto basic_json_parser_32; +basic_json_parser_38: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(); + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_36; + } + goto basic_json_parser_32; basic_json_parser_39: ++m_cursor; if (m_limit <= m_cursor) @@ -8334,30 +8346,14 @@ basic_json_parser_39: yych = *m_cursor; if (yych <= 0x7F) { - goto basic_json_parser_33; - } - if (yych <= 0xBF) - { - goto basic_json_parser_37; - } - goto basic_json_parser_33; -basic_json_parser_40: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(); - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_33; + goto basic_json_parser_32; } if (yych <= 0x9F) { - goto basic_json_parser_37; + goto basic_json_parser_36; } - goto basic_json_parser_33; -basic_json_parser_41: + goto basic_json_parser_32; +basic_json_parser_40: ++m_cursor; if (m_limit <= m_cursor) { @@ -8366,13 +8362,29 @@ basic_json_parser_41: yych = *m_cursor; if (yych <= 0x8F) { - goto basic_json_parser_33; + goto basic_json_parser_32; } if (yych <= 0xBF) { - goto basic_json_parser_39; + goto basic_json_parser_38; } - goto basic_json_parser_33; + goto basic_json_parser_32; +basic_json_parser_41: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(); + } + yych = *m_cursor; + if (yych <= 0x7F) + { + goto basic_json_parser_32; + } + if (yych <= 0xBF) + { + goto basic_json_parser_38; + } + goto basic_json_parser_32; basic_json_parser_42: ++m_cursor; if (m_limit <= m_cursor) @@ -8382,95 +8394,72 @@ basic_json_parser_42: yych = *m_cursor; if (yych <= 0x7F) { - goto basic_json_parser_33; - } - if (yych <= 0xBF) - { - goto basic_json_parser_39; - } - goto basic_json_parser_33; -basic_json_parser_43: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(); - } - yych = *m_cursor; - if (yych <= 0x7F) - { - goto basic_json_parser_33; + goto basic_json_parser_32; } if (yych <= 0x8F) { - goto basic_json_parser_39; + goto basic_json_parser_38; } - goto basic_json_parser_33; -basic_json_parser_44: + goto basic_json_parser_32; +basic_json_parser_43: yych = *++m_cursor; if (yych <= '/') { - goto basic_json_parser_33; + goto basic_json_parser_32; } if (yych <= '9') { - goto basic_json_parser_51; + goto basic_json_parser_49; } - goto basic_json_parser_33; -basic_json_parser_45: + goto basic_json_parser_32; +basic_json_parser_44: yych = *++m_cursor; if (yych <= ',') { if (yych == '+') { - goto basic_json_parser_53; + goto basic_json_parser_51; } - goto basic_json_parser_33; + goto basic_json_parser_32; } else { if (yych <= '-') { - goto basic_json_parser_53; + goto basic_json_parser_51; } if (yych <= '/') { - goto basic_json_parser_33; + goto basic_json_parser_32; } if (yych <= '9') { - goto basic_json_parser_54; + goto basic_json_parser_52; } - goto basic_json_parser_33; + goto basic_json_parser_32; } +basic_json_parser_45: + yych = *++m_cursor; + if (yych == 'l') + { + goto basic_json_parser_54; + } + goto basic_json_parser_32; basic_json_parser_46: yych = *++m_cursor; if (yych == 'l') { - goto basic_json_parser_56; + goto basic_json_parser_55; } - goto basic_json_parser_33; + goto basic_json_parser_32; basic_json_parser_47: - yych = *++m_cursor; - if (yych == 'l') - { - goto basic_json_parser_57; - } - goto basic_json_parser_33; -basic_json_parser_48: yych = *++m_cursor; if (yych == 'u') { - goto basic_json_parser_58; + goto basic_json_parser_56; } - goto basic_json_parser_33; -basic_json_parser_49: - yych = *++m_cursor; - if (yych == 0xC2) - { - goto basic_json_parser_59; - } - goto basic_json_parser_33; -basic_json_parser_50: + goto basic_json_parser_32; +basic_json_parser_48: ++m_cursor; if (m_limit <= m_cursor) { @@ -8481,31 +8470,31 @@ basic_json_parser_50: { if (yych <= '/') { - goto basic_json_parser_33; + goto basic_json_parser_32; } if (yych <= '9') { - goto basic_json_parser_60; + goto basic_json_parser_57; } - goto basic_json_parser_33; + goto basic_json_parser_32; } else { if (yych <= 'F') { - goto basic_json_parser_60; + goto basic_json_parser_57; } if (yych <= '`') { - goto basic_json_parser_33; + goto basic_json_parser_32; } if (yych <= 'f') { - goto basic_json_parser_60; + goto basic_json_parser_57; } - goto basic_json_parser_33; + goto basic_json_parser_32; } -basic_json_parser_51: +basic_json_parser_49: yyaccept = 1; m_marker = ++m_cursor; if ((m_limit - m_cursor) < 3) @@ -8521,7 +8510,7 @@ basic_json_parser_51: } if (yych <= '9') { - goto basic_json_parser_51; + goto basic_json_parser_49; } goto basic_json_parser_14; } @@ -8529,25 +8518,25 @@ basic_json_parser_51: { if (yych <= 'E') { - goto basic_json_parser_45; + goto basic_json_parser_44; } if (yych == 'e') { - goto basic_json_parser_45; + goto basic_json_parser_44; } goto basic_json_parser_14; } -basic_json_parser_53: +basic_json_parser_51: yych = *++m_cursor; if (yych <= '/') { - goto basic_json_parser_33; + goto basic_json_parser_32; } if (yych >= ':') { - goto basic_json_parser_33; + goto basic_json_parser_32; } -basic_json_parser_54: +basic_json_parser_52: ++m_cursor; if (m_limit <= m_cursor) { @@ -8560,99 +8549,85 @@ basic_json_parser_54: } if (yych <= '9') { - goto basic_json_parser_54; + goto basic_json_parser_52; } goto basic_json_parser_14; -basic_json_parser_56: +basic_json_parser_54: yych = *++m_cursor; if (yych == 's') { - goto basic_json_parser_61; + goto basic_json_parser_58; } - goto basic_json_parser_33; -basic_json_parser_57: + goto basic_json_parser_32; +basic_json_parser_55: yych = *++m_cursor; if (yych == 'l') { - goto basic_json_parser_62; + goto basic_json_parser_59; + } + goto basic_json_parser_32; +basic_json_parser_56: + yych = *++m_cursor; + if (yych == 'e') + { + goto basic_json_parser_61; + } + goto basic_json_parser_32; +basic_json_parser_57: + ++m_cursor; + if (m_limit <= m_cursor) + { + fill_line_buffer(); + } + yych = *m_cursor; + if (yych <= '@') + { + if (yych <= '/') + { + goto basic_json_parser_32; + } + if (yych <= '9') + { + goto basic_json_parser_63; + } + goto basic_json_parser_32; + } + else + { + if (yych <= 'F') + { + goto basic_json_parser_63; + } + if (yych <= '`') + { + goto basic_json_parser_32; + } + if (yych <= 'f') + { + goto basic_json_parser_63; + } + goto basic_json_parser_32; } - goto basic_json_parser_33; basic_json_parser_58: yych = *++m_cursor; if (yych == 'e') { goto basic_json_parser_64; } - goto basic_json_parser_33; + goto basic_json_parser_32; basic_json_parser_59: - yych = *++m_cursor; - if (yych == 0xBB) - { - goto basic_json_parser_66; - } - goto basic_json_parser_33; -basic_json_parser_60: - ++m_cursor; - if (m_limit <= m_cursor) - { - fill_line_buffer(); - } - yych = *m_cursor; - if (yych <= '@') - { - if (yych <= '/') - { - goto basic_json_parser_33; - } - if (yych <= '9') - { - goto basic_json_parser_67; - } - goto basic_json_parser_33; - } - else - { - if (yych <= 'F') - { - goto basic_json_parser_67; - } - if (yych <= '`') - { - goto basic_json_parser_33; - } - if (yych <= 'f') - { - goto basic_json_parser_67; - } - goto basic_json_parser_33; - } -basic_json_parser_61: - yych = *++m_cursor; - if (yych == 'e') - { - goto basic_json_parser_68; - } - goto basic_json_parser_33; -basic_json_parser_62: ++m_cursor; { last_token_type = token_type::literal_null; break; } -basic_json_parser_64: +basic_json_parser_61: ++m_cursor; { last_token_type = token_type::literal_true; break; } -basic_json_parser_66: - yych = *++m_cursor; - if (yych == 0xC2) - { - goto basic_json_parser_70; - } - goto basic_json_parser_33; -basic_json_parser_67: +basic_json_parser_63: ++m_cursor; if (m_limit <= m_cursor) { @@ -8663,44 +8638,37 @@ basic_json_parser_67: { if (yych <= '/') { - goto basic_json_parser_33; + goto basic_json_parser_32; } if (yych <= '9') { - goto basic_json_parser_71; + goto basic_json_parser_66; } - goto basic_json_parser_33; + goto basic_json_parser_32; } else { if (yych <= 'F') { - goto basic_json_parser_71; + goto basic_json_parser_66; } if (yych <= '`') { - goto basic_json_parser_33; + goto basic_json_parser_32; } if (yych <= 'f') { - goto basic_json_parser_71; + goto basic_json_parser_66; } - goto basic_json_parser_33; + goto basic_json_parser_32; } -basic_json_parser_68: +basic_json_parser_64: ++m_cursor; { last_token_type = token_type::literal_false; break; } -basic_json_parser_70: - yych = *++m_cursor; - if (yych == 0xBF) - { - goto basic_json_parser_72; - } - goto basic_json_parser_33; -basic_json_parser_71: +basic_json_parser_66: ++m_cursor; if (m_limit <= m_cursor) { @@ -8711,34 +8679,29 @@ basic_json_parser_71: { if (yych <= '/') { - goto basic_json_parser_33; + goto basic_json_parser_32; } if (yych <= '9') { - goto basic_json_parser_31; + goto basic_json_parser_30; } - goto basic_json_parser_33; + goto basic_json_parser_32; } else { if (yych <= 'F') { - goto basic_json_parser_31; + goto basic_json_parser_30; } if (yych <= '`') { - goto basic_json_parser_33; + goto basic_json_parser_32; } if (yych <= 'f') { - goto basic_json_parser_31; + goto basic_json_parser_30; } - goto basic_json_parser_33; - } -basic_json_parser_72: - ++m_cursor; - { - continue; + goto basic_json_parser_32; } } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 470ade21..f6884cb4 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -7620,6 +7620,14 @@ class basic_json { // fill buffer fill_line_buffer(); + + // skip UTF-8 byte-order mark + if (m_line_buffer.size() >= 3 and m_line_buffer.substr(0, 3) == "\xEF\xBB\xBF") + { + m_line_buffer[0] = ' '; + m_line_buffer[1] = ' '; + m_line_buffer[2] = ' '; + } } // switch off unwanted functions (due to pointer members) @@ -7802,10 +7810,6 @@ class basic_json ws = [ \t\n\r]+; ws { continue; } - // ignore byte-order-mark - bom = "\xEF\xBB\xBF"; - bom { continue; } - // structural characters "[" { last_token_type = token_type::begin_array; break; } "]" { last_token_type = token_type::end_array; break; } diff --git a/test/src/unit-unicode.cpp b/test/src/unit-unicode.cpp index aa1b7de6..5ab8f524 100644 --- a/test/src/unit-unicode.cpp +++ b/test/src/unit-unicode.cpp @@ -159,7 +159,7 @@ TEST_CASE("Unicode", "[hide]") } } } -/* + SECTION("ignore byte-order-mark") { // read a file with a UTF-8 BOM @@ -167,7 +167,7 @@ TEST_CASE("Unicode", "[hide]") json j; CHECK_NOTHROW(j << f); } -*/ + SECTION("error for incomplete/wrong BOM") { CHECK_THROWS_AS(json::parse("\xef\xbb"), std::invalid_argument); From 7b4e6cf70507bda546ab0ad943124453e14c0e1a Mon Sep 17 00:00:00 2001 From: Niels Date: Sun, 30 Oct 2016 12:08:29 +0100 Subject: [PATCH 13/19] added implementation-specific tests (#344) --- test/src/unit-testsuites.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/test/src/unit-testsuites.cpp b/test/src/unit-testsuites.cpp index 2a1f472e..8137158f 100644 --- a/test/src/unit-testsuites.cpp +++ b/test/src/unit-testsuites.cpp @@ -760,5 +760,41 @@ TEST_CASE("nst's JSONTestSuite") CHECK_THROWS_AS(j << f, std::invalid_argument); } } + + SECTION("i") + { + for (auto filename : + { + "test/data/nst_json_testsuite/test_parsing/i_number_neg_int_huge_exp.json", + "test/data/nst_json_testsuite/test_parsing/i_number_pos_double_huge_exp.json", + "test/data/nst_json_testsuite/test_parsing/i_object_key_lone_2nd_surrogate.json", + //"test/data/nst_json_testsuite/test_parsing/i_string_1st_surrogate_but_2nd_missing.json", + //"test/data/nst_json_testsuite/test_parsing/i_string_1st_valid_surrogate_2nd_invalid.json", + //"test/data/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_lonely_surrogate.json", + //"test/data/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_surrogate.json", + //"test/data/nst_json_testsuite/test_parsing/i_string_UTF-8_invalid_sequence.json", + //"test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_and_escape_valid.json", + "test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_pair.json", + //"test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogates_escape_valid.json", + //"test/data/nst_json_testsuite/test_parsing/i_string_inverted_surrogates_U+1D11E.json", + "test/data/nst_json_testsuite/test_parsing/i_string_lone_second_surrogate.json", + //"test/data/nst_json_testsuite/test_parsing/i_string_not_in_unicode_range.json", + //"test/data/nst_json_testsuite/test_parsing/i_string_truncated-utf-8.json", + "test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+10FFFE_nonchar.json", + "test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+1FFFE_nonchar.json", + "test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+FDD0_nonchar.json", + "test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+FFFE_nonchar.json", + "test/data/nst_json_testsuite/test_parsing/i_structure_500_nested_arrays.json", + "test/data/nst_json_testsuite/test_parsing/i_structure_UTF-8_BOM_empty_object.json" + } + ) + { + CAPTURE(filename); + std::ifstream f(filename); + json j; + CHECK_NOTHROW(j << f); + } + } + } } From 8d1e65f2971502795106d0de85687f6a54da3121 Mon Sep 17 00:00:00 2001 From: Niels Date: Sun, 30 Oct 2016 16:07:17 +0100 Subject: [PATCH 14/19] evaluated i-tests (#344) --- src/json.hpp | 5 ++ src/json.hpp.re2c | 5 ++ ...ucture_<.>.json => n_structure_3C.3E.json} | 0 ..._.json => n_structure_3Cnull3E.json} | 0 test/src/unit-testsuites.cpp | 55 ++++++++++++------- 5 files changed, 46 insertions(+), 19 deletions(-) rename test/data/nst_json_testsuite/test_parsing/{n_structure_<.>.json => n_structure_3C.3E.json} (100%) rename test/data/nst_json_testsuite/test_parsing/{n_structure_.json => n_structure_3Cnull3E.json} (100%) diff --git a/src/json.hpp b/src/json.hpp index 13a821ec..bba7f85a 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -8934,6 +8934,11 @@ basic_json_parser_66: // skip the next 10 characters (xxxx\uyyyy) i += 10; } + else if (codepoint >= 0xDC00 and codepoint <= 0xDFFF) + { + // we found a lone low surrogate + throw std::invalid_argument("missing high surrogate"); + } else { // add unicode character(s) diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index f6884cb4..77add1a2 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -8083,6 +8083,11 @@ class basic_json // skip the next 10 characters (xxxx\uyyyy) i += 10; } + else if (codepoint >= 0xDC00 and codepoint <= 0xDFFF) + { + // we found a lone low surrogate + throw std::invalid_argument("missing high surrogate"); + } else { // add unicode character(s) diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_<.>.json b/test/data/nst_json_testsuite/test_parsing/n_structure_3C.3E.json similarity index 100% rename from test/data/nst_json_testsuite/test_parsing/n_structure_<.>.json rename to test/data/nst_json_testsuite/test_parsing/n_structure_3C.3E.json diff --git a/test/data/nst_json_testsuite/test_parsing/n_structure_.json b/test/data/nst_json_testsuite/test_parsing/n_structure_3Cnull3E.json similarity index 100% rename from test/data/nst_json_testsuite/test_parsing/n_structure_.json rename to test/data/nst_json_testsuite/test_parsing/n_structure_3Cnull3E.json diff --git a/test/src/unit-testsuites.cpp b/test/src/unit-testsuites.cpp index 8137158f..6c3f21f3 100644 --- a/test/src/unit-testsuites.cpp +++ b/test/src/unit-testsuites.cpp @@ -703,8 +703,8 @@ TEST_CASE("nst's JSONTestSuite") "test/data/nst_json_testsuite/test_parsing/n_string_unicode_CapitalU.json", "test/data/nst_json_testsuite/test_parsing/n_string_with_trailing_garbage.json", //!"test/data/nst_json_testsuite/test_parsing/n_structure_100000_opening_arrays.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_<.>.json", - "test/data/nst_json_testsuite/test_parsing/n_structure_.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_3C.3E.json", + "test/data/nst_json_testsuite/test_parsing/n_structure_3Cnull3E.json", "test/data/nst_json_testsuite/test_parsing/n_structure_U+2060_word_joined.json", "test/data/nst_json_testsuite/test_parsing/n_structure_UTF8_BOM_no_data.json", "test/data/nst_json_testsuite/test_parsing/n_structure_array_trailing_garbage.json", @@ -761,31 +761,22 @@ TEST_CASE("nst's JSONTestSuite") } } - SECTION("i") + SECTION("i -> y") { for (auto filename : { + // we currently do not limit exponents "test/data/nst_json_testsuite/test_parsing/i_number_neg_int_huge_exp.json", "test/data/nst_json_testsuite/test_parsing/i_number_pos_double_huge_exp.json", - "test/data/nst_json_testsuite/test_parsing/i_object_key_lone_2nd_surrogate.json", - //"test/data/nst_json_testsuite/test_parsing/i_string_1st_surrogate_but_2nd_missing.json", - //"test/data/nst_json_testsuite/test_parsing/i_string_1st_valid_surrogate_2nd_invalid.json", - //"test/data/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_lonely_surrogate.json", - //"test/data/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_surrogate.json", - //"test/data/nst_json_testsuite/test_parsing/i_string_UTF-8_invalid_sequence.json", - //"test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_and_escape_valid.json", - "test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_pair.json", - //"test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogates_escape_valid.json", - //"test/data/nst_json_testsuite/test_parsing/i_string_inverted_surrogates_U+1D11E.json", - "test/data/nst_json_testsuite/test_parsing/i_string_lone_second_surrogate.json", - //"test/data/nst_json_testsuite/test_parsing/i_string_not_in_unicode_range.json", - //"test/data/nst_json_testsuite/test_parsing/i_string_truncated-utf-8.json", + // we do not pose a limit on nesting + "test/data/nst_json_testsuite/test_parsing/i_structure_500_nested_arrays.json", + // we silently ignore BOMs + "test/data/nst_json_testsuite/test_parsing/i_structure_UTF-8_BOM_empty_object.json", + // we accept and forward non-characters "test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+10FFFE_nonchar.json", "test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+1FFFE_nonchar.json", "test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+FDD0_nonchar.json", - "test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+FFFE_nonchar.json", - "test/data/nst_json_testsuite/test_parsing/i_structure_500_nested_arrays.json", - "test/data/nst_json_testsuite/test_parsing/i_structure_UTF-8_BOM_empty_object.json" + "test/data/nst_json_testsuite/test_parsing/i_string_unicode_U+FFFE_nonchar.json" } ) { @@ -796,5 +787,31 @@ TEST_CASE("nst's JSONTestSuite") } } + SECTION("i -> n") + { + for (auto filename : + { + "test/data/nst_json_testsuite/test_parsing/i_object_key_lone_2nd_surrogate.json", + "test/data/nst_json_testsuite/test_parsing/i_string_1st_surrogate_but_2nd_missing.json", + "test/data/nst_json_testsuite/test_parsing/i_string_1st_valid_surrogate_2nd_invalid.json", + "test/data/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_lonely_surrogate.json", + "test/data/nst_json_testsuite/test_parsing/i_string_UTF-16_invalid_surrogate.json", + "test/data/nst_json_testsuite/test_parsing/i_string_UTF-8_invalid_sequence.json", + "test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_and_escape_valid.json", + "test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogate_pair.json", + "test/data/nst_json_testsuite/test_parsing/i_string_incomplete_surrogates_escape_valid.json", + "test/data/nst_json_testsuite/test_parsing/i_string_inverted_surrogates_U+1D11E.json", + "test/data/nst_json_testsuite/test_parsing/i_string_lone_second_surrogate.json", + "test/data/nst_json_testsuite/test_parsing/i_string_not_in_unicode_range.json", + "test/data/nst_json_testsuite/test_parsing/i_string_truncated-utf-8.json" + } + ) + { + CAPTURE(filename); + std::ifstream f(filename); + json j; + CHECK_THROWS_AS(j << f, std::invalid_argument); + } + } } } From 7adccde714ec9c9db864ef5cb11ff275a914b87a Mon Sep 17 00:00:00 2001 From: Niels Date: Sun, 30 Oct 2016 17:10:11 +0100 Subject: [PATCH 15/19] improved coverage and updated README --- README.md | 7 ++++++- test/src/unit-deserialization.cpp | 30 ++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1f265bf1..1c21bbf6 100644 --- a/README.md +++ b/README.md @@ -507,6 +507,11 @@ Thanks a lot for helping out! - The code contains numerous debug **assertions** which can be switched off by defining the preprocessor macro `NDEBUG`, see the [documentation of `assert`](http://en.cppreference.com/w/cpp/error/assert). In particular, note [`operator[]`](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a2e26bd0b0168abb61f67ad5bcd5b9fa1.html#a2e26bd0b0168abb61f67ad5bcd5b9fa1) implements **unchecked access** for const objects: If the given key is not present, the behavior is undefined (think of a dereferenced null pointer) and yields an [assertion failure](https://github.com/nlohmann/json/issues/289) if assertions are switched on. If you are not sure whether an element in an object exists, use checked access with the [`at()` function](https://nlohmann.github.io/json/classnlohmann_1_1basic__json_a674de1ee73e6bf4843fc5dc1351fb726.html#a674de1ee73e6bf4843fc5dc1351fb726). - As the exact type of a number is not defined in the [JSON specification](http://rfc7159.net/rfc7159), this library tries to choose the best fitting C++ number type automatically. As a result, the type `double` may be used to store numbers which may yield [**floating-point exceptions**](https://github.com/nlohmann/json/issues/181) in certain rare situations if floating-point exceptions have been unmasked in the calling code. These exceptions are not caused by the library and need to be fixed in the calling code, such as by re-masking the exceptions prior to calling library functions. +- The library supports **Unicode input** as follows: + - Only **UTF-8** encoded input is supported which is the default encoding for JSON according to [RFC 7159](http://rfc7159.net/rfc7159#rfc.section.8.1). + - Other encodings such as Latin-1, UTF-16, or UTF-32 are not supported and will yield parse errors. + - [Unicode noncharacters](http://www.unicode.org/faq/private_use.html#nonchar1) will not be replaced by the library. + - Invalid surrogates (e.g., incomplete pairs such as `\uDEAD`) will yield parse errors. ## Execute unit tests @@ -517,7 +522,7 @@ To compile and run the tests, you need to execute $ make check =============================================================================== -All tests passed (8905168 assertions in 35 test cases) +All tests passed (8905479 assertions in 36 test cases) ``` Alternatively, you can use [CMake](https://cmake.org) and run diff --git a/test/src/unit-deserialization.cpp b/test/src/unit-deserialization.cpp index c31cb8c8..497454df 100644 --- a/test/src/unit-deserialization.cpp +++ b/test/src/unit-deserialization.cpp @@ -250,6 +250,36 @@ TEST_CASE("deserialization") uint8_t v[] = {'\"', 'a', 'a', 'a', 'a', 'a', 'a', 'u', '1', '1', '1', '1', '1', '1', '1', '1', '\\'}; CHECK_THROWS_AS(json::parse(std::begin(v), std::end(v)), std::invalid_argument); } + + SECTION("case 5") + { + uint8_t v[] = {'\"', 0x7F, 0xC1}; + CHECK_THROWS_AS(json::parse(std::begin(v), std::end(v)), std::invalid_argument); + } + + SECTION("case 6") + { + uint8_t v[] = {'\"', 0x7F, 0xDF, 0x7F}; + CHECK_THROWS_AS(json::parse(std::begin(v), std::end(v)), std::invalid_argument); + } + + SECTION("case 7") + { + uint8_t v[] = {'\"', 0x7F, 0xDF, 0xC0}; + CHECK_THROWS_AS(json::parse(std::begin(v), std::end(v)), std::invalid_argument); + } + + SECTION("case 8") + { + uint8_t v[] = {'\"', 0x7F, 0xE0, 0x9F}; + CHECK_THROWS_AS(json::parse(std::begin(v), std::end(v)), std::invalid_argument); + } + + SECTION("case 9") + { + uint8_t v[] = {'\"', 0x7F, 0xEF, 0xC0}; + CHECK_THROWS_AS(json::parse(std::begin(v), std::end(v)), std::invalid_argument); + } } } } From 8f7052537404733a213dcfb7fd0ccd1589ef0cd6 Mon Sep 17 00:00:00 2001 From: Niels Date: Sun, 30 Oct 2016 17:46:00 +0100 Subject: [PATCH 16/19] more test coverage --- test/src/unit-deserialization.cpp | 36 +++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/test/src/unit-deserialization.cpp b/test/src/unit-deserialization.cpp index 497454df..a46ffced 100644 --- a/test/src/unit-deserialization.cpp +++ b/test/src/unit-deserialization.cpp @@ -280,6 +280,42 @@ TEST_CASE("deserialization") uint8_t v[] = {'\"', 0x7F, 0xEF, 0xC0}; CHECK_THROWS_AS(json::parse(std::begin(v), std::end(v)), std::invalid_argument); } + + SECTION("case 10") + { + uint8_t v[] = {'\"', 0x7F, 0xED, 0x7F}; + CHECK_THROWS_AS(json::parse(std::begin(v), std::end(v)), std::invalid_argument); + } + + SECTION("case 11") + { + uint8_t v[] = {'\"', 0x7F, 0xF0, 0x8F}; + CHECK_THROWS_AS(json::parse(std::begin(v), std::end(v)), std::invalid_argument); + } + + SECTION("case 12") + { + uint8_t v[] = {'\"', 0x7F, 0xF0, 0xC0}; + CHECK_THROWS_AS(json::parse(std::begin(v), std::end(v)), std::invalid_argument); + } + + SECTION("case 13") + { + uint8_t v[] = {'\"', 0x7F, 0xF3, 0x7F}; + CHECK_THROWS_AS(json::parse(std::begin(v), std::end(v)), std::invalid_argument); + } + + SECTION("case 14") + { + uint8_t v[] = {'\"', 0x7F, 0xF3, 0xC0}; + CHECK_THROWS_AS(json::parse(std::begin(v), std::end(v)), std::invalid_argument); + } + + SECTION("case 15") + { + uint8_t v[] = {'\"', 0x7F, 0xF4, 0x7F}; + CHECK_THROWS_AS(json::parse(std::begin(v), std::end(v)), std::invalid_argument); + } } } } From 94c16b2c31e5018e702c67a631c2ac2850dd8f87 Mon Sep 17 00:00:00 2001 From: Niels Date: Tue, 1 Nov 2016 17:01:04 +0100 Subject: [PATCH 17/19] fixed coverage --- src/json.hpp | 36 ++++++++++++++++++------------------ src/json.hpp.re2c | 2 +- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index bba7f85a..54266ba3 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -7836,7 +7836,7 @@ class basic_json }; if ((m_limit - m_cursor) < 5) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yybm[0 + yych] & 32) @@ -7966,7 +7966,7 @@ basic_json_parser_6: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yybm[0 + yych] & 32) @@ -8048,7 +8048,7 @@ basic_json_parser_15: m_marker = ++m_cursor; if ((m_limit - m_cursor) < 3) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yybm[0 + yych] & 64) @@ -8133,7 +8133,7 @@ basic_json_parser_30: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; basic_json_parser_31: @@ -8214,7 +8214,7 @@ basic_json_parser_35: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yych <= 'e') @@ -8293,7 +8293,7 @@ basic_json_parser_36: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yych <= 0x7F) @@ -8309,7 +8309,7 @@ basic_json_parser_37: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yych <= 0x9F) @@ -8325,7 +8325,7 @@ basic_json_parser_38: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yych <= 0x7F) @@ -8341,7 +8341,7 @@ basic_json_parser_39: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yych <= 0x7F) @@ -8357,7 +8357,7 @@ basic_json_parser_40: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yych <= 0x8F) @@ -8373,7 +8373,7 @@ basic_json_parser_41: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yych <= 0x7F) @@ -8389,7 +8389,7 @@ basic_json_parser_42: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yych <= 0x7F) @@ -8463,7 +8463,7 @@ basic_json_parser_48: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yych <= '@') @@ -8499,7 +8499,7 @@ basic_json_parser_49: m_marker = ++m_cursor; if ((m_limit - m_cursor) < 3) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yych <= 'D') @@ -8540,7 +8540,7 @@ basic_json_parser_52: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yych <= '/') @@ -8577,7 +8577,7 @@ basic_json_parser_57: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yych <= '@') @@ -8631,7 +8631,7 @@ basic_json_parser_63: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yych <= '@') @@ -8672,7 +8672,7 @@ basic_json_parser_66: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); + fill_line_buffer(); // LCOV_EXCL_LINE; } yych = *m_cursor; if (yych <= '@') diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 77add1a2..eeebd309 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -7800,7 +7800,7 @@ class basic_json re2c:define:YYCURSOR = m_cursor; re2c:define:YYLIMIT = m_limit; re2c:define:YYMARKER = m_marker; - re2c:define:YYFILL = "fill_line_buffer()"; + re2c:define:YYFILL = "fill_line_buffer(); // LCOV_EXCL_LINE"; re2c:yyfill:parameter = 0; re2c:indent:string = " "; re2c:indent:top = 1; From 59c8343851ffb9ce48ec9f20bee233730835f990 Mon Sep 17 00:00:00 2001 From: Niels Date: Wed, 2 Nov 2016 15:44:46 +0100 Subject: [PATCH 18/19] cleanup --- src/json.hpp | 48 +++++++++++++++---------------- src/json.hpp.re2c | 32 ++++++++++----------- test/src/unit-deserialization.cpp | 27 +++++++++-------- 3 files changed, 55 insertions(+), 52 deletions(-) diff --git a/src/json.hpp b/src/json.hpp index 54266ba3..a52d2c24 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -7836,7 +7836,7 @@ class basic_json }; if ((m_limit - m_cursor) < 5) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(5); // LCOV_EXCL_LINE } yych = *m_cursor; if (yybm[0 + yych] & 32) @@ -7966,7 +7966,7 @@ basic_json_parser_6: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(1); // LCOV_EXCL_LINE } yych = *m_cursor; if (yybm[0 + yych] & 32) @@ -8048,7 +8048,7 @@ basic_json_parser_15: m_marker = ++m_cursor; if ((m_limit - m_cursor) < 3) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(3); // LCOV_EXCL_LINE } yych = *m_cursor; if (yybm[0 + yych] & 64) @@ -8133,7 +8133,7 @@ basic_json_parser_30: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(1); // LCOV_EXCL_LINE } yych = *m_cursor; basic_json_parser_31: @@ -8214,7 +8214,7 @@ basic_json_parser_35: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(1); // LCOV_EXCL_LINE } yych = *m_cursor; if (yych <= 'e') @@ -8293,7 +8293,7 @@ basic_json_parser_36: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(1); // LCOV_EXCL_LINE } yych = *m_cursor; if (yych <= 0x7F) @@ -8309,7 +8309,7 @@ basic_json_parser_37: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(1); // LCOV_EXCL_LINE } yych = *m_cursor; if (yych <= 0x9F) @@ -8325,7 +8325,7 @@ basic_json_parser_38: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(1); // LCOV_EXCL_LINE } yych = *m_cursor; if (yych <= 0x7F) @@ -8341,7 +8341,7 @@ basic_json_parser_39: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(1); // LCOV_EXCL_LINE } yych = *m_cursor; if (yych <= 0x7F) @@ -8357,7 +8357,7 @@ basic_json_parser_40: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(1); // LCOV_EXCL_LINE } yych = *m_cursor; if (yych <= 0x8F) @@ -8373,7 +8373,7 @@ basic_json_parser_41: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(1); // LCOV_EXCL_LINE } yych = *m_cursor; if (yych <= 0x7F) @@ -8389,7 +8389,7 @@ basic_json_parser_42: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(1); // LCOV_EXCL_LINE } yych = *m_cursor; if (yych <= 0x7F) @@ -8463,7 +8463,7 @@ basic_json_parser_48: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(1); // LCOV_EXCL_LINE } yych = *m_cursor; if (yych <= '@') @@ -8499,7 +8499,7 @@ basic_json_parser_49: m_marker = ++m_cursor; if ((m_limit - m_cursor) < 3) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(3); // LCOV_EXCL_LINE } yych = *m_cursor; if (yych <= 'D') @@ -8540,7 +8540,7 @@ basic_json_parser_52: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(1); // LCOV_EXCL_LINE } yych = *m_cursor; if (yych <= '/') @@ -8577,7 +8577,7 @@ basic_json_parser_57: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(1); // LCOV_EXCL_LINE } yych = *m_cursor; if (yych <= '@') @@ -8631,7 +8631,7 @@ basic_json_parser_63: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(1); // LCOV_EXCL_LINE } yych = *m_cursor; if (yych <= '@') @@ -8672,7 +8672,7 @@ basic_json_parser_66: ++m_cursor; if (m_limit <= m_cursor) { - fill_line_buffer(); // LCOV_EXCL_LINE; + fill_line_buffer(1); // LCOV_EXCL_LINE } yych = *m_cursor; if (yych <= '@') @@ -8738,7 +8738,7 @@ basic_json_parser_66: m_start m_content */ - void fill_line_buffer() + void fill_line_buffer(size_t n = 0) { // number of processed characters (p) const auto offset_start = m_start - m_content; @@ -8761,10 +8761,10 @@ basic_json_parser_66: } } - // append 5 characters (size of longest keyword "false") to - // make sure that there is sufficient space between m_cursor - // and m_limit - m_line_buffer.append(5, '\0'); + // append n characters to make sure that there is sufficient + // space between m_cursor and m_limit + m_line_buffer.append(1, '\x00'); + m_line_buffer.append(n - 1, '\x01'); } else { @@ -8772,7 +8772,7 @@ basic_json_parser_66: m_line_buffer.erase(0, static_cast(offset_start)); // read next line from input stream std::string line; - std::getline(*m_stream, line); + std::getline(*m_stream, line, '\n'); // add line with newline symbol to the line buffer m_line_buffer += line + "\n"; } diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index eeebd309..476903cd 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -7796,15 +7796,15 @@ class basic_json assert(m_start != nullptr); /*!re2c - re2c:define:YYCTYPE = lexer_char_t; - re2c:define:YYCURSOR = m_cursor; - re2c:define:YYLIMIT = m_limit; - re2c:define:YYMARKER = m_marker; - re2c:define:YYFILL = "fill_line_buffer(); // LCOV_EXCL_LINE"; - re2c:yyfill:parameter = 0; - re2c:indent:string = " "; - re2c:indent:top = 1; - re2c:labelprefix = "basic_json_parser_"; + re2c:define:YYCTYPE = lexer_char_t; + re2c:define:YYCURSOR = m_cursor; + re2c:define:YYLIMIT = m_limit; + re2c:define:YYMARKER = m_marker; + re2c:define:YYFILL = "fill_line_buffer(@@); // LCOV_EXCL_LINE"; + re2c:define:YYFILL:naked = 1; + re2c:indent:string = " "; + re2c:indent:top = 1; + re2c:labelprefix = "basic_json_parser_"; // ignore whitespace ws = [ \t\n\r]+; @@ -7849,7 +7849,7 @@ class basic_json string { last_token_type = token_type::value_string; break; } // end of file - "\000" { last_token_type = token_type::end_of_input; break; } + "\x00" { last_token_type = token_type::end_of_input; break; } // anything else is an error * { last_token_type = token_type::parse_error; break; } @@ -7887,7 +7887,7 @@ class basic_json m_start m_content */ - void fill_line_buffer() + void fill_line_buffer(size_t n = 0) { // number of processed characters (p) const auto offset_start = m_start - m_content; @@ -7910,10 +7910,10 @@ class basic_json } } - // append 5 characters (size of longest keyword "false") to - // make sure that there is sufficient space between m_cursor - // and m_limit - m_line_buffer.append(5, '\0'); + // append n characters to make sure that there is sufficient + // space between m_cursor and m_limit + m_line_buffer.append(1, '\x00'); + m_line_buffer.append(n - 1, '\x01'); } else { @@ -7921,7 +7921,7 @@ class basic_json m_line_buffer.erase(0, static_cast(offset_start)); // read next line from input stream std::string line; - std::getline(*m_stream, line); + std::getline(*m_stream, line, '\n'); // add line with newline symbol to the line buffer m_line_buffer += line + "\n"; } diff --git a/test/src/unit-deserialization.cpp b/test/src/unit-deserialization.cpp index a46ffced..5d6fcb34 100644 --- a/test/src/unit-deserialization.cpp +++ b/test/src/unit-deserialization.cpp @@ -87,10 +87,11 @@ TEST_CASE("deserialization") { SECTION("stream") { - std::stringstream ss; - ss << "[\"foo\",1,2,3,false,{\"one\":1}"; - CHECK_THROWS_AS(json::parse(ss), std::invalid_argument); - CHECK_THROWS_WITH(json::parse(ss), "parse error - unexpected end of input"); + std::stringstream ss1, ss2; + ss1 << "[\"foo\",1,2,3,false,{\"one\":1}"; + ss2 << "[\"foo\",1,2,3,false,{\"one\":1}"; + CHECK_THROWS_AS(json::parse(ss1), std::invalid_argument); + CHECK_THROWS_WITH(json::parse(ss2), "parse error - unexpected end of input; expected ']'"); } SECTION("string") @@ -102,20 +103,22 @@ TEST_CASE("deserialization") SECTION("operator<<") { - std::stringstream ss; - ss << "[\"foo\",1,2,3,false,{\"one\":1}"; + std::stringstream ss1, ss2; + ss1 << "[\"foo\",1,2,3,false,{\"one\":1}"; + ss2 << "[\"foo\",1,2,3,false,{\"one\":1}"; json j; - CHECK_THROWS_AS(j << ss, std::invalid_argument); - CHECK_THROWS_WITH(j << ss, "parse error - unexpected end of input"); + CHECK_THROWS_AS(j << ss1, std::invalid_argument); + CHECK_THROWS_WITH(j << ss2, "parse error - unexpected end of input; expected ']'"); } SECTION("operator>>") { - std::stringstream ss; - ss << "[\"foo\",1,2,3,false,{\"one\":1}"; + std::stringstream ss1, ss2; + ss1 << "[\"foo\",1,2,3,false,{\"one\":1}"; + ss2 << "[\"foo\",1,2,3,false,{\"one\":1}"; json j; - CHECK_THROWS_AS(ss >> j, std::invalid_argument); - CHECK_THROWS_WITH(ss >> j, "parse error - unexpected end of input"); + CHECK_THROWS_AS(ss1 >> j, std::invalid_argument); + CHECK_THROWS_WITH(ss2 >> j, "parse error - unexpected end of input; expected ']'"); } SECTION("user-defined string literal") From 700977d73efa8e959cc5615d58d69690bfc5b3d1 Mon Sep 17 00:00:00 2001 From: Niels Date: Wed, 2 Nov 2016 20:52:15 +0100 Subject: [PATCH 19/19] version bump --- CMakeLists.txt | 2 +- ChangeLog.md | 10 +++++++++- README.md | 4 ++-- doc/Doxyfile | 2 +- doc/examples/README.link | 2 +- doc/index.md | 2 +- doc/json.gif | Bin 454722 -> 454831 bytes src/json.hpp | 2 +- src/json.hpp.re2c | 2 +- test/src/fuzz.cpp | 2 +- test/src/unit-algorithms.cpp | 2 +- test/src/unit-allocator.cpp | 2 +- test/src/unit-capacity.cpp | 2 +- test/src/unit-class_const_iterator.cpp | 2 +- test/src/unit-class_iterator.cpp | 2 +- test/src/unit-class_lexer.cpp | 2 +- test/src/unit-class_parser.cpp | 2 +- test/src/unit-comparison.cpp | 2 +- test/src/unit-concepts.cpp | 2 +- test/src/unit-constructor1.cpp | 2 +- test/src/unit-constructor2.cpp | 2 +- test/src/unit-convenience.cpp | 2 +- test/src/unit-conversions.cpp | 2 +- test/src/unit-deserialization.cpp | 2 +- test/src/unit-element_access1.cpp | 2 +- test/src/unit-element_access2.cpp | 2 +- test/src/unit-inspection.cpp | 2 +- test/src/unit-iterator_wrapper.cpp | 2 +- test/src/unit-iterators1.cpp | 2 +- test/src/unit-iterators2.cpp | 2 +- test/src/unit-json_patch.cpp | 2 +- test/src/unit-json_pointer.cpp | 2 +- test/src/unit-modifiers.cpp | 2 +- test/src/unit-pointer_access.cpp | 2 +- test/src/unit-readme.cpp | 2 +- test/src/unit-reference_access.cpp | 2 +- test/src/unit-regression.cpp | 2 +- test/src/unit-serialization.cpp | 2 +- test/src/unit-testsuites.cpp | 2 +- test/src/unit-unicode.cpp | 2 +- test/src/unit.cpp | 2 +- 41 files changed, 49 insertions(+), 41 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b35b50ea..703c9048 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.0) # define the project -project(nlohmann_json VERSION 2.0.6 LANGUAGES CXX) +project(nlohmann_json VERSION 2.0.7 LANGUAGES CXX) enable_testing() diff --git a/ChangeLog.md b/ChangeLog.md index cfe72666..37ef06a9 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,6 +1,15 @@ # Change Log All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [v2.0.7](https://github.com/nlohmann/json/releases/tag/v2.0.7) (2016-11-02) +[Full Changelog](https://github.com/nlohmann/json/compare/v2.0.6...v2.0.7) + +- ""-operators ignore the length parameter [\#340](https://github.com/nlohmann/json/issues/340) + +- Check "Parsing JSON is a Minefield" [\#344](https://github.com/nlohmann/json/issues/344) + +- fix minor grammar/style issue in README.md [\#336](https://github.com/nlohmann/json/pull/336) ([seeekr](https://github.com/seeekr)) + ## [v2.0.6](https://github.com/nlohmann/json/releases/tag/v2.0.6) (2016-10-15) [Full Changelog](https://github.com/nlohmann/json/compare/v2.0.5...v2.0.6) @@ -143,7 +152,6 @@ All notable changes to this project will be documented in this file. This projec - prevent json.hpp from emitting compiler warnings [\#154](https://github.com/nlohmann/json/issues/154) - json::parse\(string\) does not check utf8 bom [\#152](https://github.com/nlohmann/json/issues/152) - unsigned 64bit values output as signed [\#151](https://github.com/nlohmann/json/issues/151) -- Wish feature: json5 [\#150](https://github.com/nlohmann/json/issues/150) - overload of at\(\) with default value [\#133](https://github.com/nlohmann/json/issues/133) - Memory leak in face of exceptions [\#118](https://github.com/nlohmann/json/issues/118) - Find and Count for arrays [\#117](https://github.com/nlohmann/json/issues/117) diff --git a/README.md b/README.md index 1c21bbf6..4bcbe97f 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![Build Status](https://travis-ci.org/nlohmann/json.svg?branch=master)](https://travis-ci.org/nlohmann/json) [![Build Status](https://ci.appveyor.com/api/projects/status/1acb366xfyg3qybk/branch/develop?svg=true)](https://ci.appveyor.com/project/nlohmann/json) [![Coverage Status](https://img.shields.io/coveralls/nlohmann/json.svg)](https://coveralls.io/r/nlohmann/json) -[![Try online](https://img.shields.io/badge/try-online-blue.svg)](http://melpon.org/wandbox/permlink/3BIhBw91FUVuHE1D) +[![Try online](https://img.shields.io/badge/try-online-blue.svg)](http://melpon.org/wandbox/permlink/fsf5FqYe6GoX68W6) [![Documentation](https://img.shields.io/badge/docs-doxygen-blue.svg)](http://nlohmann.github.io/json) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/nlohmann/json/master/LICENSE.MIT) [![Github Releases](https://img.shields.io/github/release/nlohmann/json.svg)](https://github.com/nlohmann/json/releases) @@ -522,7 +522,7 @@ To compile and run the tests, you need to execute $ make check =============================================================================== -All tests passed (8905479 assertions in 36 test cases) +All tests passed (8905491 assertions in 36 test cases) ``` Alternatively, you can use [CMake](https://cmake.org) and run diff --git a/doc/Doxyfile b/doc/Doxyfile index ce1134ea..3201df52 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -5,7 +5,7 @@ #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = "JSON for Modern C++" -PROJECT_NUMBER = 2.0.6 +PROJECT_NUMBER = 2.0.7 PROJECT_BRIEF = PROJECT_LOGO = OUTPUT_DIRECTORY = . diff --git a/doc/examples/README.link b/doc/examples/README.link index ac4a894d..19e256b5 100644 --- a/doc/examples/README.link +++ b/doc/examples/README.link @@ -1 +1 @@ -online \ No newline at end of file +online \ No newline at end of file diff --git a/doc/index.md b/doc/index.md index 53465552..fcb5b432 100644 --- a/doc/index.md +++ b/doc/index.md @@ -268,4 +268,4 @@ The container functions known from STL have been extended to support the differe @author [Niels Lohmann](http://nlohmann.me) @see https://github.com/nlohmann/json to download the source code -@version 2.0.6 +@version 2.0.7 diff --git a/doc/json.gif b/doc/json.gif index 943c06af6606c7aa89f687984cf09a3115d5b441..02ffdc8980c232995b562eb2c991a53aa4370798 100644 GIT binary patch delta 14994 zcmWMsbyU+07yhls1~_7)adg8#Bn;d}I6@p90+N#AKw5FZrX%zn4T3sSN=if&(2=4T zfTSYQ0v0GD`ugGbo^zjn?!Wh(=bk5e=jECf7sqmvVoTgR=xZVkJsSfvPi1cd=^=gguX%6*Z(CLlQ0k_Wv zw4L*>j*F;|kGK;T))pJwkr3XN68#|MYb_Ik-O_mX?%nS8w$9GZzH6+3 z?8^hW=}!x<+WeT}tG>MCE?R}8n_nP{z_ zzSr2--bR1XdB68j_i)#PXKl@|+nZlMXnWh)Hu{)s?u>A7r z^5~1T*RNJ4U$0M$uFgz;oS9sjd-w6(o8|fUUl-;!7vC>yE-igrUHSCs)B4(nZ!1gR z)<0~2{`6z>>(|ZA?eE`z{n-9@_vg=_yFYgeH$x%M?utPCz=aD}LB@r=Phk1Gov>aI z{jF)l_PU*(ZNv8$zV)NAuWaN# zw{d#J7!OB`s9!vmU&^UHXc>3@N^a@^kzp7Dl?ius2>eQJ*^ML#Fs=Yt{+S6>zvKQI zTA#c$Xtbr@MTr~e+$7rzG)xyF>E8xWH=@4vXgrWJg4~Z&Ymh`Am}fxcgGokt9=gp$ zh=l&O;d&c z-Fqe8RZf+S{I?W9xaAt#j*UL+oY>QUQ7sn>lBIrAML3;eVAL>qB29GY;r-j`(2S-? z(h|bSDFL8KOQIo4=h0%wY>oN$6YSGBlgU+uckbKi_o45)H!<+UwvzK{aR-oV zKGJtEvZ~1$6@dl`q{m^TY$a!|>}Z1WK>UrDct!p@xRX(OjiCVNVQUFbJr0{)zlIMl zy(y5US%>NQbD?EcN)N)0SnV0aLiqBah4?{EDZ$%o-d3*S-qEyA$}!n#0&&~1L-8-1 zv`t-o=zu!%4l3^-r7j*v`;7UplVh+HKZ&F7wuM4#ujP!CFKSd20H#@yQhD^_a)4W1_> z@HWJ@{Nqa@lwC)F_^sw}OIoq(l~0Qjw4~e453W4o*$S%i`~?z9cHkb0GyJ5yfLPr;g^JH}@YJ2wI6(<~uUt?3wD0Z=os z2i#*vJlpZA2Um*_LDB##g^sE`o%6r?`Gf#CQj!lGgj&=79V1%qVdlcdy0-_YWKf72s z>-4=`*|+A4q2k4h3iS0RJy8I0(%Uz{u^rMYwY^W2e^>3pqL!Bk1N`UyNcY+fe*tUD z)a*)%R}UP|>k><-*IB|X92(GQJI`t;>)k;6(8->u?Z~~vw=S1v?o>=XseYfR)LBCu z`)LN;-{=4KmVyAZGi}Kd_8Gq};sqN63}R4FNpuJUT5+-4Ra=A~lD11sX>0_1b}sDX zti5jqGHjoFcSFpLi>@Rk{?PJ&b9Uly-aFnUoXzpRG=iW4zSZ%g&Y&`!-T*E! zsSk9E=6gObp<4sS2T=QYq>EGNUxg9j3>P^mgQ>n0C5V&3)P)eW#0(bzApk1+5{7=D zButL>q}e#-rWWk@GCaiInksFZV7ll_hlMfcyJ=J*JX$Cwb+pySX!Q_(J_=`}ch{W; zQ?mXuiN+%hszMX#+Yuoupj-meWx~PzUZg6Qvr&Fv>RuE?$y%1Ge_G0jcl+EJI5{Zj z_)hPI!6nPT2w(%wj5`j~gP~S>6O@ZcX-_bRcQJc;JZ=U>D3`}&t{%Ed@8IT+a4A@) zoDOcD-~xySD`KQ)dZzBgaKT&Lw%kZ3ih~swBU7WVa6DuZ?(pe58>7U5^~8(VVAeu8 zj^|UJ6$Bwit%?(D^F0C~L?IDMsyEIEOm+W?)ytklhae2V#u&ssQoEGi!w+6cxmPcC z=<^ce7OqfQ1nd!UdL-K2jD$N1!UMLZz^9I6r|;K3PhSJgr~F;I_TB6sc2V57p=)3& zK%L%S?rAMLfB1hvQ6YgPI>IR5P{i9alAPg^D`k+fk%%{bexGA&S9$cjmx9*WF zOk65@(=~L>xDuW{m76mv?%h5e2y@ztQ+f@2k7YE}*qaH_9h}`cnJxz#+DXYsz@-Rd zpk*Txz|I=a*%`Z-WtIJ}QxZZ6{nzSnq!|X42-NX;>xgUayLy{f;Bp`G{H2ZloH?hs z>fCOYJ>$yTkQ6)NN_rx#XIOPk|FYkZr?pJ*KR@n;2!&lq@x+)En>InOoGk<{hZjx7 zb5PO;-w)-}@0c2NVnA8z7}W8!ePU?i!aV-HyzAy+fyMi&=@`k~uoGsO#;|}#Rlffm z$25B80LRGz=9#!+Dyslk=!=-e=DpG^;ZLBaxaJA@ws$`qatvZ^&_&w+TmS727eN6$yy~i6=o?x5=E7w7J4r@6OspNd}Z2lopR&51vf(m z<6a5@zr!uhhn$6oUDc0ceiPDz@k1Nb9TcXEghsROsic+<#AfBito|ZJq~kZ%Z7<<& zCeYiDt4HLM3vXmyz9{Z(5@?%AD~P(yE(Zjs?+FU#%*D>h=)1N9=#Y|b0*n5^SU!af z->N{rK}#pw1jiM2GhntdX3Yw#z-Q(_ikhTz*5y86kfCaz|oC zZsuld32dt(ap=0bhyLC(DRa`siH@SEA$sWbT(8r1-j^L@Ll($YP8A>pNZ^){0cRr% z-couPQZr(E4KI~ryIyw0*iI$FKy3q4Pf4B&gnMA>Tea(*`R)iJ>}~|??wg=ILj9u@ z*vqG&$J+J%g?L6p9?G!P-_(j!Ta>#zon{t(ny6K=^5D(@YNhdrqSz7xOkeMZvRCqz5g5 zIT&R*7n~A=S;SpyY0kQDVkNbd0^-!);C7Rn)1`G zy{pxaN-_HzPeFhX*^wt5lF}qW_k_NoyaWI~jZND;{a))Vj_Qe6x&8wlZw3!lsEKOI zV{a%|$sRu}a^c#P-K|lwHCroW&ij6~q@jO(W3qiIw59HltPy4U9$q%h=G3WuI3vr# z6Y`s&l)ZvRG@(uQZ3-QDTVwB5W)OEQng?h>#Z2p)r2{;+Lh+rz!Pp%F?YxKB%26Ra zEDzA<<6#$;Z@W0{k za$>?4@T6Lcj9dn!CmzBB`l`)bJbP>(0A3Hep;?)+8G`RZJ#-1MD~+ZfnX-Jj6*X#A zH(d343Ar`HpOPs0V+nI6G*-MpUy=dDiLm{fVUfb^IGU?7f#eWmupb4ytn2J?#q33* zjyCD&#nG$FO)C5Nls3f+_}jMmvo_b=Oa%IEZH+@6*jh7Zc|A*+zU-jlptb?Q@G-{< z+GKHKm>EV_&YYH*v_J9av97>08|MqNPyT@(dnad9n2EVIXpP(Cd_Z@jBX7gX``0BZ znh^2Xebp_5p?z&uS=D#eQ<7naO1L_)A$Q$eh3N)94vfpLrOCFK3m5Iu+mEH{UXDm4 zltl21@?Q?7)mdkDVYa;5T;k2M9!ZV%Ap?8=b;-Z?hoq`|edxJUiu=8r_@4H_2vjRyH-&4^Dka3wiBY`3aAXgsPom5x z2ZnegjZdvgPAdRh=QDrVKVq>1cYi#%API>2!@t;Aoqqig(hrJJd7JpBclz}(GUlLX-@C*0=qnTNa3I7>XA^{fH-+WkwF#2(2g%Pn-cNNw z^%1am7)C{`1wj1mCE$QXqs-Iu^i~5z5Bf)rp*%#4@N!YhQpi{ZB=Q{;&UZDq!w zpktwbb9)h1hPF^#MlQkkHxn?l#av7$dP~Sv0Fs>top3pQTz^?DA1)6Nzz}e>zsrwU zbSK|HOJaH1hO&l?D<%05Y$bI+e334O(*9((^IY-+TH_T!$`-HJ;OBS*)@B z)-GRKNHl0@q++@E`no|N4ElzH2!JVA z3sv0ysE`eZ(#qxn>7bi`P#(a0$mWeM03ik#fdSCv%}hAJcA0+~0|KWGi_11os*rrf zDozOlpG3A;7fS&Q{;Qs{lZ?h$Oa>gx3vY)5tBLlPG{x!|#xLh4(2PdDB(M{mac}ZX zbSW&C@g>mYAuxY?IrxnS=!BHvLuR+Q_TU$#n7!9u$#h`9f7YVNiujgL>3QI=g$dDK zg%n!+9pVQaO;d7B@cxKNX=_7^fx*W%a^U6y^{I8EgH42MJJRT|1fc!V!%*2`M#%|j zPJ?TJuWM?t&0ld-)fQC{iVp<^9Jm&8!Co=0FR0+lfmn1-IvaGdD{sJD7>^D@190Mp zy6GcyuXc2kg^;EcSOUb#_h4>7z!epN1MTQA^$WL$&dI&FI==MoWXtp85n^XWwl%Vk z3>S$v0d}~}d*{xIy}SHEx(GNGp^|tYsf*x_8Q8@Yn1|WC+Lvu}wGiV%b+`vN-%$~Z zexJaSpum9Sz_6nzMT5QE!__;e?Ir)fy&^BVgW*Ty=p{uNvGZYHw48cUk})m(pE)~c zWobv*2aIqev%_!CMj5D(-veT~@O9_J;EtnL;Qwp54)-F$Jd6Pxqwn;G)XxY2Fszy) zvS1=OV+jDb;uj7DH0P`Ty8}SnwnO53s?)m7bX6%W%D@3=6CjOmS+Xn8LqGaWZyR25 zxZYw+ObVfSTsQC#2axyxkr&tYyNFv~kMlr7&3- z=`b){%ENh_K%F=VZ>huWS<6kzD*g0%rUbjCpJ4p-xB08$ULB zaPex1HZAQIKJMlNo!w`?b-^OrM=)%gJCM^}Jb8Q%SaewE+c!}Sf@Mv3>g#Ps+LTW5 zZBSg2SN9YGK-9oLD0Ej{fZfVK=%2;gxgJ`>9w_Ks%w#np@eJb)I*ULS(x_}EqqQ8C zn*9Q60S4^SLvqtCS*@?rEmBZq+J>S40aJt(a+vrX+L$Y{x=d_++JDE06m|o7NPIt&K>Ezu<{L!;{YDI=6U*XRgYUi-l_3$1 zs(9N|Vf2uYWa5XTYsUWuXC}79fvB~9d7D+|PS2o_^X&yuz5rOLQj^beNd%F~pm_Qo zAj`OYS@L-nN>cfp1y}d;P)D|C*!Ro~=ozi606cdQ;1H(`K^&uyPY@0je3yUn`L|6# zwBbd4p{Hh@6KN92OZaXeC|+IX$lG ziXAq1;!`_IW<&1jIDY$B$3Xn1Bh}FA>&-0KesBLA&yj@IvZhnwA^cOUpwN;>`To|%A&>Ig8# z{%1S40?LCIRRO|xp$Scpsdj&PTu{v0lfs*L(SBhSR5%7gO;b$|CxZ7Eu{(PcG1;ZH zDuiEbr9V%A{_REFtzD?vd>rGTB9Xe{ARGKR+9%j1#d>k1CZ@ zLXAu;(}IIf=QiVV)By&@KRBx+;OcYD1$~KjE2ob<9oaWwA@yXp+`Q3*0fRS1z z`{+;*@eTDwD?tcdQ0*z3Jn~O)wM3t0y_zdV01U$OFr(*y9FScisujHeVgPtgoaBo6 z$&^VKt?gQYULFEPEy@&cnO+Et9xeOtVeus-c%70AO={q91Q~CGFFdc{u68 ztp-8qI})lozedy6(n{C)9E*Bg-d|DP6L;n6TQFpKC)^A}P2m{EMpCUroDXO2Ce^0XEh%P9|#0}&UqI#n^59z;GE zBAxkbNQ*y|JZR;($oUovM!@ic!uuB9&@~_~dkn;b4|T`m3Wwdn8A6m*0OQF(nDm3j ziENPY5UMWa%!J~b*R6#EpN<3>Ue|3P0pO$&-XY8V;B8FSzu(lR{X!dY3gTO}{>Nu^%k+`ZJ6FTZ%*fgciXq zU?MNPc4kqTplt}Scu4t>@knHN82JU*eS2c9GN9@{Av49cP&T9N86il4D+88b`W&ok z)d?7*7PC*AjXK+7))(NuFoZ<%H$mHT?O5q?)!^PM_0u^OMi*Qf-naI50L=^M9tFX! zQpx7wF_vcU1U2cz%Curm3_UC4kKW#r?7T=tc;#_jupjgDVxrilu*cThO#Y?ut2N`U zY3*805YHbvuQUBf#11Io}r`)AHCOABY3TXvtQ!8`nZR$Z!w2|_%an%jZ z0S1oI>HW+94#IXnJTsbU$i4u&jS}?u)=S1NG}BZq8S_f^*qd|E*!>^g3`1u5)0VWp=1W$1>gAegph(~`s}kmNl8me9F|w}HEr~-oAJb@A(v_f9 z8$0Na%3Q*Poyky-u@gTSP7qscz9W8Ffe-PMW591hGT`(-Ge`H}Cr(}|s`?>sH3s%v zB*xBnFeyr)9~MKhsLj)lm{~KY5f`Sz$CQLhzng3xCO&poJuYIl%AXkgK~xw1G+P?Z zH_5VwK)>e)s?9?P?=aBq7Y&=T?BwaHUc_^nHZ_c>bgIb>kR-N9Pd+)Op>?;|3Cw`^ zf5$73uhB0^H|zR--V2miQbOV+TTK_k`;U29YeR|#Z!HuJT-&FJdQ6QinKBFx;y&d3 z^*lMgun+2}U;hpfp}|D4{dSxa3N;RpZ)UMiF8?+UFFqov@c5Z(uHznC&O|Bql&7GY z>4VekS-qKTTeh1b!vMzKp)E1~%N+}cNYSI+Tl6`<2L*XxQ9rSS2XAuzOGs8rv9CZ$Yw zJzBq^|Lgjm=tNm9KrPBJXQ=5E0A<{KWmzqO3^hriSsA&?)Vl}n^7EI5cs8x6a7~}F zJdq70U{pQ(iqw0Jd;G^JEA34N73w)-Q9u zBV*`DISA-^h$@^Z!j87Sy#N!Ub31LrTC+2i$j^A%!}>j&Mh6IK;G!JX8V`8d$YqF{ zjUo?FE1c?8wLw5|h1MgCG)alPUc-GUArI1I40M1aA9NdOT@_~b`SCbNDsq=r;`&_3 zZb%DLWZwP_^LV8EC6)8FMf(ZAekPm?9qL|h&eBe?nVG+q){*fRpbK|rS8ReooIN3s z@1JX;O8+=yDI6`YK@k|hbm7S)d~2+fthpLnn}219!Rp}rmor&qtH`dG_mo`w^ME5n zwCqCz(c|d8X2$71!lJ}pd-l_!u7=sQW^-5MgeFo%8X)8vAASR?|Mz&&H#zh!w>!DS z8PsL#55#8}t9Q{k9%1}V|29gQ{1`ETd z$-i@t9MLLx$>r>$0A?LRR0ibldfOZ!%YX~}T8?b$P=*sAkfK`OA}E>%5DpVEAup32 zqL3XhcU#6EOS2noU@EWQqOPfu(0D%k>36GF8s+<%4&0htYYfnN%%7J`r`?131N49y z^cPPcAX!dm9zgQI1+%=nte2WHfR-m?NXYPqK&EF~7U^kp!n{7i>^5i~__Yg7a$;P; zFi^V&5go7mWnS3|3en~HxnL%= z8MiN9L_|}(Ta(c)#)E~OSp6to1C__!lQh+2^vO2XP~{Lci~(92JPZ)20fhMAR~Lj^ zG_kdSiI^Ben9C5Fcl_V?Mz|*f!etnkNmqsy0^ITK?eUZJZp>@r@h9Ao>VHK{J6PDD zEL#f1{uf)9&$8v~Q3()ZuF)C=av;fZ6H;0el&u4Rw5V>YNPEmKL#OB%yM(PX#MCKb zuW-{OVI6CtHdY9q(zl>8! z&y!H}V^i5U(;*i3?lqsi6O)CsG4!KRcBbw5JiD0|`{k)Ote*%d*lL#|bVseIT(A!p|M^Q$?#>M=}~-x_UAJl`r(mdRm-%)VHe zwR?FYV;|MPZ0lin_r%`wt(zadU5EXcoe1%ryiqwScsdzUuEQAnN%NW+csG0E)WQtq z-GKZ}b3nN0)O)qL#XE02JG_=&;C%h}t>mU@)zEhq_QMzPxJ4!PMP-vk6`Ms>_eHfc zi|Pq`iyD^~H47HCsu#7}7j*^~btf0~Ru}bm77gG_1l*FL`jU~!(gB+#WA~+lXO>J7 zmP{`%nH4OVS1%oEUphRvbYybr=<1Ti&eAdXG7+~-QeP&UEL++vTe&Y=pINp^SU!Gv znL;mEwyj>aYhSh>Ty~gTKC!y&xU+l`zCy*VIH|8Vo2!0pD9YTJ@mZP!U%#dCqX>v7ef6-uEm&_u835IF3>cgtE5cw^zf_ z!+%IkV9IEM63%>xDS-GVNO;vikIt_qIWGBzu^59O)%i4YA~W^nYK%T8?9p24WLla9 zONIy%8y7*5~Z zSLrzziLl<{x1L#W?#W*Cmim`1{YWv)$As!|tTgKwehu+{!FLF<(7qY{NsP(g`|#EsBn9k&HHqN61rcIN%!#=e zg;mZ;9ti(9Qu^-)mHlU>I+#j42+@=6Tm*}-;q2E4#Y@j={S)9$0MG87{e}CAMZ_>f zBW7?+GaAQxQ}mR8nKuVUgr3JX!VD?vOP6Ev=R$FGBukUak_-EAw=v2*Ovtwbba?*< zqI8_X9PAilUBqB>#&6w>2&1)gtT#hD6~S{OFxnTGH)ETwA1O7&KJhBRd4%~$|10$` zt>#SVAzC~O&v~d%lQ-iydqOREX-XqoObQIgU(>uFFEMrZ(jald$5cO-3xVs!g{&)v z67gJb43yrqsuUJ8a|RToh_v8t4P63}iV{;!E_fF~emkzK;eWD@gIgZ0VKreafGyF% z^a}eqv&w9kgK6^4hv7hyg0zNq`Y!eoOpX?XBko4%Bb|^RWr)A#Xul-zyG$A^@b;!A z9(k$*l-0hOumAB#O)~Bp>>%;{rN1cO8VEj&U3D&{hb4eK@Z3XY(e#8zVUidaivhj$ z<%gI*>tNvp%;faXN1MgBIbPH2dlFnG|2;>oh9*`7N>W6Q9s@~AbMoH*q)35qgg;m4 zF^dHt2h8@fsd*1V+*JdnbO%$K2FertH)8Niegc#K6=sfHBjJ&^u59q(V2>-T@73p0 ze?qQ5NtK*~*)y2*uamp!s}NS$g$#El`wPsX`QNVnTo+H~n=dq;I?}!{J|iLY#mh?) ztDIwe+AoV_*4m#0I9FWFQFkMRFqST%ye$3cUIvFNCT`88nAIq0N zIlAHBRG;N(d$dNae^Yy2WE48q5dK~LW$B^BZ=cq`YmD&eQ*bL&HVO>B?g;Uu>{K0MAH*FD9t!F>(=*@P-ei*!SZzb%>9gT9X zvF34u0sKQ*(Xycte;dg-<*gXf=s?4N`S7(hGgkQ%wbb?4FQ0xLSQ{xno~tjCC#5Wz zWU6?TSy!fsr8gXPPuO}hubd&Z@5@tU<%>t}@r&VBh~zP-lxnvw4G zo);pCM1n@^l`oSmMB?8u#b@Rf#5ylL@Ky?Rv^@3BLnqHHaPaK<@1Nhle*Jrlah|!D zmMZSFnoXokk6{$$0uWYOZMwa^!i`y~J_h$@@nA)fY-PF}{$aBb3jf8+-HVC+pBO$< z@8Pa;mf@HC!>ZOi|JjH={XCYFu>Nebm4baK29>7V&s?C06wH%VA9l1_S)0z!gHh8Y zH-4(duK%+$Mk&A4iUKmsR~=d$%B@jBSNU&*7MFk-{dcYUQ`~rX-FhLiY1?dl49_ zwe={U8ZVj89IPb{>RfY9(P@0J@vxrSezDxT9PXXx>}IGNi^3P%SUH6h_0-j+QEDUJ zqc3&!>a@>9bn4w#ALxbNO;=BO!nw;A7sAKUg_&gQIuXfHt7aRk{oOt<>{+4>({J=1 z|L^y|=Q3NT{k`^FEv<|wJmT|au-|6+knS0ugSz_NlWNN>Z6LDC@QH%X?ewUEgSxEz z<0p*CLWNFQ<>d5h2XV)3YrULe72jSw@X{PTV6T|BVAgcqY-~__;D=+@IC1|(VxB_R z8vT#)xRd=2XWiq?@}Ihrgz6(E8&Ih?Mki%VdolMMQcd23C+ZH1aWCEZ79WT{yfdbE z>PYOsfrfIE_o@GOf7B~tk6NNmm&_WmyyXh-J$rnF@v<2JH_RjTTi^KHK|NAVC);!0)l+yiT?vB~J9$c6V$`zHRWkqg z?}FB$Pj`_AnpqZmzdjm_>sSbyv=|0a7(pD`Y4sFqgg`g`>Lv|HVieww2;)B@D=^nq8uhzww^h$LHlF zO~aFE0;Ni^-P_tYVBA;GdUKB*20z503c0%JwGh(~FZiIGN>Z6w3KrFQ`wjpJlH>iC#5 zTk@&Ctef4lYgWm8YJJd!9xC`5gs-!p6yUyw3z=xsO#Q{>iq@hLFZDT3Hyk;-qfozr#IAaKEjPc}D7 z9O-FMfuN)BgbhjuGd~@=fA7Zspi<_%H0Mi;xP%k>7v;Wrr%_0dy#j^wSl_o&YpWCI z4t6)&UI6}q(Vfa%PHYFw#Lm`3{qbahn&2w6L zySGGsK}kx$xF2I4CGXFGfn_rH5dp9loxqhL;yH>zu~PCQpH&a}bC3i;)Pn~=d>*(V zf{D1+W&wbwIhqm8pTHmV5=nxW*%W*u&|Rl3JM!AuT`+K(3m7~ifNnF(!J=HE_HkVh zg54pN%M(D2X?k|93=mc`!oY&&NcI>Njya(T?fQcfsR4_kH5ss0Gbg$OeFq{+6QsY} z1f4q+BW2EIKx&B3Y>EEBl{pyF;_55EE*Y@G9+#u5jb|V$7bFy@eC+T-8N{;su<++gY^e#ivZ;RPt5uK!$}tV4@QU z(^Y=GQ#0}mx_Ou_D?g|3c0dP7LfR7(c)5I1fwFR%V(>Gn3Ff^Hk(6%A?b&w*g6jSF zARV&S-sP6pp$GG|4f8SR0QHwa)rbr_cp#S)#yFmDrE3MKGm8;o_}A}Bl{5vU9wsOX z53zFh{hXss5RmrnfS_Eq(3jrabheBtQL?)iT>4sDPXHBAq4T-gngXyD0Hw$jD+q4> zPnP^bM$_y+f+R!a^CE2l`A@8ZgV1^r?~ezqa6CyQQJ|YzLis$Vp(~(Uip^6>NpC;1 z(kEONs+b_WY>XEmn+5f@c7gqoHt1iVEDJ8yvLO9)PU-IA&*m%xP8$H_q$8&+kH|$F zl{^;?*sA$s@4VLW0r_o7K?Kx}AH60=U8PdwtsgLv zwhu^P;tE2Z@yAer@R#(sR1Ad%x)}K$E6+LP4rm4o{^2Zs>LSZj?g{?0>|_~a;{mW5 z1C&(5*x&Wm%gjH}*WUJ#iW*mCkg24}APQfD#ut-@eKUu|&tK#U!Zfmj_Hp5@zaiMRak$z5^rk zAlt5&Wc{)lThpsfQ*XlFk|8qSeTpV#%ImL0o+AmPK@&4XvivqC7s0F zB}i#vdL{Bm*4S!2kt^xob@KB9)xaA#!J!NtN+};IC;unum_RdxW^!0TNDpgil~a7J&@|`t-oL%0xFgb zw^!H7`CSYGu+nvv5`q4QcgUtGBl(W3TcWq!KWkgcYOD8vs50|^wTQ*hTUlQZJ6NoCQ=-+5bmyA_=n$TprV>l7EWm%mfyx z%>@Q7I(Mu9kWv?3jw@NjtJG-E?;kP|8zRUy3IdrBku>7Ion8a*OzDCad`JCAU^pad z6guw;3(Ma&R5D1qe)~a=)=CuIj99Gf3O4?dn$dr@%Il57b$tu!Y5luu~Ii=wfMOyog zjo>rRAIgP()Cz-iXt^>?&{K1d^Lz4N1mv^N%Arcfd{TCqg+Nu=*weBUl5E`5AA7#cKThXxsjO29C0J^&I&g~8Q}Fsf9xF~iUyHNqA!z=`ep(B{ zx5s`sZMJ$b5iVr6tzHcuCU!f>Ipq0z%;-83ua>n5J1`+x1d5em(XkG_>cP*|sZ4CJ zn1O&Kn)L6mF8EM~c)owDg4E{ zX?KF`c&ggTvdocK;c8RkW^?}{>Au&6I`8uj0^I6?JQ^-Lw*N^~#vT5DolA3e4w z^(HGRZs6aV7@e4qkdmC7o}SLQbLS3&k&{EtDag;ickf<(8m;eELQ8r=10%I3JFPt{ zjagdSnxFaTUS8L|+{dMNJBtf?@0V0mR8&`0RaaNl)z$S@l{Ymub~n`ZHa9$a^r)}x zad&t3;4RuvR`O6z>R5ipv%))1i*lY9XTN0TKP|ua^8P(`Wzk?w}ntA>wVtSInvfL-qt+P**eqR`nIog_DSda_NHOhlezw$g~2CJ zpFSNM9(wWO#mmv*cSHU2!~L&EN9LamkH303`|9}z_RGo1$>}$f@2B3qo0^)LnOPj^ z|M+ZZ<<+z0*DqJzO>Vq-y*l;w)B88e^Ru7kW|q|#KI|;c?=F2<{`hfob>;Kt&l~G& zUsgVT-B{h<`uu%&=U{JVXLoo1>(`&(_J1Gz$Toqz$o7OF9&tlGAYgPpD1{*9pQ9sc z9$i8Rg5)`@6%HTC0+EhA5EXI=Q3C+jrlNohz1ME|v13kVi0JcEk?Ac08&}d*A05aH zJ$ijgl<;qtm(a!53P0`CK6!j6=UbmvXx|UHNo!HO697U5{PA#^zgqiYEU1|$hzz4V z$2|GInT{C}IDKKLd)M?hMPBdy?~tKyS{3BRzCY7;U#z#IRKgq^3DOpD=rKIV;Yi`~ z!*T9^{tCg%?5FW_hI8!zTsdCPP1|>aBfCJ2aEk$s+`X^=;YhvDRdH@FfybEGD}<5P z61!t(%r9;|g4HV|CQY9VVqUXi7>PFyI_so|9*)5MDP!4U40q5plR$_X!LG+M$nsb* zo@?+lNtvNVu*Zw7$`$!S)f}(SLx5bK;n!culh^*Ws9p<0y?^NQ4UN2h{3dJi%uW1( z2}5SVpa<0y#1{40k=TNGN?xFUloZ;31`)pxzW$QK(FDvND?Z!CZ+dw<=99vktuM27 zH^w`5$7z6ZW?QsTj7h1+IpbC|*<6hz)AdBM@elOO%@{}s-+tQnjp-t@o_Eb$ge8i8 zv&V=E19NV$!3U#XN_6;fqONrS@;%!DSCC^IQ-239E>j9LcrqLSjRY*Sgs>mop~Vlo zx{Ia&qIQTDRVLZM7T@zCi6Ihq8$491xHku|PSmWEVqglzS+@`Rf0A+d1Ti+i(cQ)L4`J32#3qWWh()VhK?1{@@ee3|Ex?7g$vU(~)X$5`zG=+a2ld2bw zk3q36ntFm%D4qbK5A`Xt+IDoP7#{qe4Pj3@=eZoYt^6iwLeAtFr57vB?;**UQdXiE zZu-5BDCQqM3PtjYBM4>aSh_sE|E&GgYw3Cxj0Z=v@t5+fgzPOI8G4@<)z{Cb5i+W5 zyogGDtm)45y?9*e^+fs8xCCcOmd^DTIuZ>W=P0eu#NmLUph!I6#mNA8dKN3tspg(X2rk^D zbPD0bVd-O)a0-}_2jUr3gu@{x9r8l1dzU^Gh9&`m+e>`6{DRk~J*oX!S3r`+CsVww zwe+uRH-~SeDDmuSKMSm=ef?`Q0c|~McXmfgWZ}N1ANsXFT0K^zepN?2pu?bs6L1t8 z{ZzxLisG8gv|VumrOVI&BvUF64rp@>oYol_=M!k!0rc^6R5!4Qt)xaaprW4>&2#Ho zj}b+Y%JtC!o`M%NTx6a7wLiO;bqQ2!n6hfs7#_aeE;^UZv_ILSGo$gD3bIG8xtx(k z@Zyf#61W^4VLLJxj{j2ZlsT67;iGqWG`y+#RIzY9NRaM*J*`AL{+)opF7qw4h8)7l z`Mz)6qw%80-N1_7u}<=1shHcGEE-D7`DCvG)ttF&aDJmEp3kQ5!WY&m-Pn{dr?3mmUr5>FT>f^&Puj^kBrb zfd2rY76O}T&js}y`x^9h5%2j{@4(Q#!=n`~l^OiZJ_{cx+<8cvbIt5&ByoZC<=eSS;cTZV&hOY}LgX&!^hIx2KQC@0cA{i#mq7 zn&Xyuu68Oz!uQCA3U#nOZ5a6>CNk^&@~*KManX>%Awsy!Go?4t8e$>u&|Jp#s$)*> z_L-OyTpqUg(d0*;KS@u|-h>_mmL72)Bte_tKzpth(#LOyJ zA#dR%qzaCh-;RAt*^#kqgS6fd%)|rlOJ4fs*BiQs#$O}1u0HqV+>gHv1%3lcg{J{7 zO1G}t!zJ;q!C*8>^pi#C(;z3{(bm^HhbJ7C6uU~btd!{iPu9djD1J+jvuB#=fLj_a^uNiuPM@_KeX8B zo2BT$#5poa)Wc5UNlQqE1aa22meivt8IOl0vEt@$iAX@UGuo_sM1}~ ztRkohAIw2P=-5Y?=V+8A-z0n|ztP2rtr@_>0WS7Q4@bB91=Jdc&h>Uo|C;;4aC|1> z#>T1%qCePwB&0J3uzDQtZH@^a0!kUa9&Ma|$-^;-2=lLPoV*2U=MeEZ55kf^UW6Tl zLdwh(2mJ~xd^{Eim>dnuu<)DB<+s5(9k#os!Mux!-4x5IZ2D_ypnyOJgf2#0 zJ7p%MD(30c+iKT2Y1qyRWiQ1+G_6<#Nv};~eojQEeMJvA1ad@}3*&i%Ev!#i0w;dN zWL&s4F?AKfJ_9p>Po>+xCLJzCmb%OkaHt;TYyYHNawmbqvNt(3}*xqpjG%^ z`-UMnVR$X0+rwid?(6%-IKLjTOL@c@G(yPpztaY!Z$Loo{eVv?df1JkBU?Pf|*(Jl<2&5*%4pmPJ#A|L?puD4>nUUcd!m7W0 z6MgNyaD{4@_3sD?n)z#hrfZnr)ff8;f;4ojes<^xkN6iO19(t?Ixb8;33ctequJms zE{8Mk+c~}cli*Zx`djruq6>P`BSe}WX-h`fCqGLTN+y-Sf|q$@0d;Ux&4=# z&0$L!X$u)4Uh0C!ys?NOkF*0{ufz*uB4`E}OPHPZ=y45P;CmfLy8^Ev4D4dYjekLm zo0}Gptn1A(SRI^Qn20CsoB&GIq@b|*TC~pC$tzZujuJ8b?H0JpaGr?xBSO4wr~>Oe z4Q=P_+)l~$YA30fROA>@KRLoEsIt0_*0DfZ!6uGu{I@60X0@SKTk9KkXJ+SEQxYX?l*C}MiR23eJN^E$~gkG?o z@Gd$YOS~CdCPv36c4AZ>-s=u8YAe9V-vycom^-oR9GeD;afM|C#RBwvJ5<#|VNo~X zii-^9n^RG@u6d~y=8+X(c(wfT`%8!QU(1($n7XjjW#l{^=-%Bc(;)+GCFlrFKN37I z?qNO}E))gWQ682A`aE5FSYUWh3}2HUcO7-5+*RAX@&aIZjA1cqJaUP4%_?yLa^imL z1LZE)kkv{kZ#-IuFUy3d`LNvv0i__>^t&&2|oC^ z{{sPKP3$NAt?7*2ANNlyW7_a}2{LuZx-MN_tCU1%LSMIZ>e^cd)kF8ny@&5NcN8Dr zJQ+H1+V5Gkj53C_iJ|+Ng?&fxbYU78zL+LnjeGcdwvE`w`(Y$^p1@#+52mxC7-Djl zd^Xu^=~(b2)G^|rEl)=baQfcwXEbqFy5_Vd`g-{0<|9>9*x0kSD|eec#`LbQm7a1* zGOM)}+XX``GdLM-M?aa!)4O(CItvqXe6#i8uMsF_%YWIv0fM~a+BXs7+J;EYu&0(6 z-=IyBb4d#qT43<2lU2rt0cNCdIEj@{z7!B|aT)^?G3%PvH1V%$dT>TC@ll~`BvX+I z$xKMjz9{+ZM424%>qM~a!^Z$S`@_4kexj}bUelkRYsWN|;ynGtxf_?DPTcGE;EM3}H^-YjZbcAbD3)SxY?z1=S+r5HN&xwGOF%UaO zMD25nJJxl7l)56`AiE8k2~okEc(@)uc+Dm6fec)db#ZO;5sr;u0PyB)ZPfXCs*HR3 zvpcVq$~F~LYnC{M{^Yti*0o^Trb3^wHRj zS*=Zn=_FO85@#iEkU_*t_@FyL)4R zh1^4*`mDcFecoyni0K~Nw(b=WOo6{NOh?6>={(VERX&<`{`uIzmn4k(DdTr4;bTRw zQe-smSw?UFISg|7ibh3|owNS2)k^SX+o>i@BXg>IzNY$YSO1y;@5XQA>^02m80Q^G zFfPIv{O>^%oxTZqzz85mJ1(PF|up^?xF-77HU-~3X?#wrn8LV$AH-}t_6)F zHe>KTbQnux&mBDCrp7I$_5F(G;olD!-Ua1j4>JKc4iEBt1^stJVI^Y?RtxzbKdA37 zaC&`^Bpmy~{ZAZWO7L(oCMZclEO;+U(Gg+`mONxABxLu39M1yiv8Z{IcV7W6!qyO= z9OHW_d-Oi<2{jzN1ZQ%Hg>3UnPpA@0maY4iZRVHH9xjt4R_u&dE_kds++1-gS#jx8 zY7d8R^{%|2`tK-V)Y~S7OdekJC?Kh-gftbjd)~#95V-Hu!kktA*JwXrQS3GPaP$ne zo=iaq^FZwXVj9^9Nm5PJytExVma%)ue!)GH<$mLk*FT)iXAANXuG^FBE416g@SxZ+ z0ONT@!yTBFgGY-A;xT0^5g+41d2=?6K@z~#^pU4uf2RdNHN7;vLOOjZ_-862`>_uH zo43%uBk*m^-OTb4v@s4OgQs!i>Sg!6zR%yhP1O@*WF%R9Z~Bran30{B4w#uiz)Wm=9|!e z`EGK39Pnt!@U&vHuK=+U7XyPiKbi%(W_#4S;1~p8R-CtytuONA5L@m`?v>j^-P7Jo z?gn&Jcn_`mU57W1Wzmgm0@+z%(9D+v{?^V*pOCiKGk&Ow{8WMbhly!VyP^ubT^o6C zIkWfWBK26DlQORB{?6 zl?Zyq=0PvL;Ntc21zfgHlP4{|%K7Lwq%{kF54MQ)*hol7IZzl7MuNq&grD~VSb&ThT1mYRp%90sCAx-*If$nS^nBYRelkhS`HSzfT-A%A8FDOu*zMtb2#^_gpImB*mfAt<>1XFLmt=g2 zC-Ti`5RzvA`*)xYfI0Sbvui+47YTsB4As824m2!Z=5CN^%2WjuR9$Uzv=|4}0qEy# z8iYxxD0MVm?y;k;%A-;^PA!Emux>eaa62s2JEi3~ZkP<}R&#T55t-aX72-?2G?}K& z46ae~r|Jyg)tCB8#~KEK){lr=xex0L+Q>W7z( z76Aa-_ZyZ7$F7IqiA7lp0&_}0lW~rkFAFNnJ_78kXLR2Ao_{Hp4m)S0h~7OUHyr(gCRp{i$uU)*(4H}?0c0>NfaywjWLJF* z(&VlFNSkrGI#FO#<=GzBvrO3&d@I$rPm-cWz|c@fmz| zGJVg1uMI>`)6f&YJqPFylt%g3fYSoNQ)GHgkSHOtFvR77-ceDMfZ&f00M$!;oLG$j z>(m#tuXydAgJXc|5vBC$FE416Azi)I4xc+G5rt=Rk@G9uk7}wR03zDT00_P6R!xI~ zO-!Z|3}Avpqqv$bcO&v4oHAG{CLPP<8BAbnzVzQFN+GJ1KAOELG5o<)I6}Nt4|D01 zZY@YTP4LMloMy?_`$%8=lm(g(jB6C?HZ9%@T41bM&OvIM_ zFE_)3u|Xn79Fkf%*`6=)?J>E@c~=C}RFc&yQ2$MsS`?QaY&-1xSk05{5r?sINB=o* zYI5a-hJyx(W+!}YU%I?1azU2xX^fz)QL0N^q;%_xROw&g{KJJm!G*W)by+Pb{k#fD z#?W^lOt3-t64im?fJ3qoFb&VsrPZ?lzAZh7oLP-S3j^M#u(ggFz_l>X)4)EY16JfE zIQaSv2G;^OAuZ7NY#k$r*&U$%iXt^(8fC(^{Himac_-0VhI2rGbILTR^Z-^YvP4Nk z%7lTVXGIq+1kz*xQ^L{gOWxo3PV}dylz|t$i9^PB56(hMp8GD`q*)F&$tDjfV#%(F zhyILj;w-f;))CNU||&6%F0c%c+_n*Ua3wGuz9|p zmh5K24Z#4XvLBJ!79LtGi8!&jzVU)DcFz_sI=@WBj`aCf`q$ObG7j1p{PU1Y0>o(# zIp3F2wiWWClc#ShHTBmB%lL`S4vmNA4#J*A;79q-ovvg7>9?C@Ux?a}uT)zc<_B+k zC;TrbSAGG}IJG<~eX=kI7H?`g@)%;M8Zs8yXCRJ3%2>ZlpQyaxWB~2)($f_~ex3Ax zMc*#JC$>N8pkaC%5U}*Ou#p;)tI*)-^wp8A<5Yo!EUZoc-*T%7D{!!Nu(=ucy!|6oH$V(DPtf*D} zqev7LpruN+@MsQ>Evl7QfJ6LUPU=!UrDH)?o^X{*}!VE7?t({pm%Mbq<#?pWAK0fs`) z1*xnI))@NS7$D=Iq_RrnF8|;x!r?HBC<@3w8m1xUiz-LU@FuGIi4(6(bvJ=22OSp? zR|}rDi=f1|nzY+YSMcA?gDOpBu|+kPVg+=?$5rGr*+SsX>f|&AhIPJ`ogMv;?)bOi zyA+@-A;v%}dFue*H?tnd!6%C%`4)@q6?^;|s^@X1UcOQSsE~CjkZO6RaZp0WZj2Z+ zGf9p6{^=94)<`F##NNdKimfrY&Ltx2hbF;sY1x2WdH?GtsyyB?Z+onS&lBaWq}(gIFIowUr?{Y+KM{=WwwT`$ zXi31v#JG%#!Yzc3-H0~9oA6$aR(%Ic%{ni_BHpGvXwCGW^|HS&(K9*KdX9H0Wa~=c z6S5)2LODJf!X3QT*V94~pGH5_4&pp}$_dJ=7F}ld1#<**1|qOqjuzgnq%;_eIfq{M zU-aWYg86=QqQEU@#K9UY2QY9?a%{QT z(ui8cMhfB=&!4HxMXyFZg(794Lf6>Jf1kQ(IQmEo9y2QR#k98Wd1HgK-mI-qO#-WX zL98x;>l~})nOQ%-O+TdudEcL>UNj}?i-MgdWhz|VF`%R4Ve^6WaVY~}#i~}~57(v4 zMlFQ|2;PLAs}IsLu4uHbbzo?r9Lb^JHW(#UG#xs;gwWlZ6fgL=;(TQS8&-q7pNeMmWsvw|Fo0UiVCei#JpP{Hm@>FTC?=*PD(h2d_q32s z08yyuNO&5gnygF2P~tcTst%V@Nbg0o8I+SPSyv||dx)h0FESOT>d^Skh~VmIQ=s8l zCL#tp3FfdVFrrY7Q!rfHA5a9iSsgU^sIohaj$Y5zt!-$$o@JIubHJOKmrF9L2Sf_9 zgp}|(P=>-rs^b9#76auTEznyiLd4+c3JH!BG6d=Wq#5Ye(x6=Kq7&HwYE)?n&uz0H zW{fo&(ahqh9>G|hQX;|mw5zxZ@S{YvB+PI}&T|bPPO?$XdJK>Jy$8U7A#y5(=msDt z(i4P11f~3XCS`(3Q>CWTYA7PkNCjj`8b;F{$Vai;019PCiPsDZ*mY-iFAS2QtU|B} z82tr1+@z+Or1rS8EKzJq@k3M2CJN)X>Ow%)O>4kBC(RLK4fO}A^nt?8^z5I)6cmtR zLusx#0&${zKPZI8oJFP7|55<%w*of1Fb<3j@_^E|e+)&SyhUM``~eJ+GGOpBfeq(& z;t8qId%t)ZRSkTpzC+GJ0-Qjmt^x&00qSU`u|LmsJfK!2ZR}^`|oWkWvLHh$r z{`qhug=-W;IEHjhfgt=Tu-$X&2SY<7Oh?gktd4ELlF05K*sE50TPt0+iFV-_Kal{% z>?JBQXnDUlwKWAst&)dA6FB`OqG2=J#WEl|+AfKmz!oem>v zq;-EhuNab`90M(-z_szt8IB=Q#L(YT#QoE53<|1#+1U1@+mNUCHfp8p?DFa zLuS&pOpqdvEjdva6uzDO7g#I=I^1ex!+L}X$spvu;d}hXb?8mdvy>DTC-CCU*a7Tn zm$ubr!)Ys?JHOue+Q0SldwY!9Vs9nv8}fFTDEvQK#rN7{>i6D;th^2Nd%KI2Vl&Od z{-R0@`YosR`A(m>;`c7&t>fGsvmD4qkr)!6%>)uS)uS_?5n{I^9G~s5NWoKG+W*%A0wA#-+ z_M2(DHq%a@>Bybwteok3Jkvci)AMGgcV(vU+sqUAEDJZ=FFQM+GyBwHcF=xy$ZvM| z+Uy8@b~JZ(taA3*aZZo*=2(thrZ-`v}4 zbMNSLQ@L~RE9a&k&&>?Y&AyqNTbY~Bul@zK&VH;IMb=$(V$n+r;F4!Ot*fcBM0!Fv z-H1)K#vgh^<>(^%R6YhsV8YEJV3PVEF9SRu<9*2Ooj{>W7c6OcK+Y531|*PI1LXTB z(HL~~S0AjAkmKPnC*+bNB|&TTqacII>;I8pOx5pLa%aJvsuPX$;RZK9xH>`j^g$e% zL6v7i4G2`-)sK7%RIIePc`3_%vw7B$y>L(U$0aqtC;g3Bwh5yM(Sg zefK}}*4H~~C3M)2_%H_7%r#o*<-5k~cO6y zKAn*REvh#+dg+G1a>b=jcjuSmB-Y$+UaDC2$7&=#%JXntfD|GEDnmbMh5E%s`9wr* zstN>Q8JBvZJX|nvgK#RjM9rV28yKCm5`A;i?SWta?aNpvnms9arI&tqVLbs)q7t?P zn&;P_M->kFCD><;k0u{fq-51gIY#tc5vH z@j#+}+txxa+$bindValn^-}h{uT!6IjKKCS0njb)6INk66yZz8E^KV;ep*G$yK2C0 z&4)G%EVt=y4GjA};PE}{Kow+Dap5}zMBqM;$GH^h)~n5Rp3kh3(707!UE`1+CEonZ z1al#{vjSa^8AQ~jim@F3_iD}o@3U1B+O-{YrXh?MzjttI(^(f3RakT1g-)Ce;Txq* zzYU)%rfcqobCSuMRXm?{Z&D@0A@WV&%lREb9+bwS<9B`g)eb+NEZF-|_y6;Q4J>IdkC>>{xN{tz;=};4 z|J&5f1LYC>GnI5B5{PAlW{1)&)R4}U1j|zI6ZjNoAkj|aip&#V8#O9!bd9P2Ki&kD z7xI@n2?_!*!~gA1Rl?Oq1Ml3V;nY){kr2L-Yc&4|(G)n%6Bfe*F-)E~9|Ph0utd5< z{_Y(;=fGG}_^>WG`i+W@A}MVB$^%#D>GBJ{Cl5O!(aFpAqrT;(z$Kf)bswy4w?#%I zyE_pRqViYdQ|#QBQ1NgWtr{*${KBt(*^N!r)ukm`e%UxhB`KuXd(vqIk%CWF`1E1a zWOt-AFQ386eNTKG@$uUFrx1#sbm zUrmxJ#|u_?Nz@bJ_MKsKwHegMh~Pu$ljZmi^z-bnmmc7S5AYM~zIp2Os5^m@NFTQ* z(B>vAz;csU0djFTerhY>bKfP_gD6@DRE+$oOftpt;KzB1e@UR~s%`g6B99;ZinP4Z zF9E8h{GR>cW)~jsJRd=Jlsj~Hf{#48%FBe(JmF|{P+#MJg1gZ~p0CstI^GF1pq!T{ zL`04pzP&+Lp?t5q9`G|LQ z_8m$O;>t*iS+0_fEx{XKWM33$T^_Fs_$v3R$T0fL=Z&xOY$n+>8LJw&uP|Pr_rGdF z%u;}9^*O(a8e~m?DL*H7pVOherfn*gs${IRSRu{C-FDl|`g&n8l~*3CSReF5ZN4Y& z$Cs^7KhzgkH*DWv_8d0*o8-vs^_~di#Rd zW79#-NN|8#_UkYk8r&*wrWS1vV z`Syd)6zaIzpC45&`ts)d;guI(c-3w?DU@-`S#&I!ERJ2PKq~q#rdrDw{*=kFwKiBu zZjb*$=UhBNA2_O!+X6XST*$o39jB6&B4I3JK5v34iOjlCGh|VM_GulL$&KCYlrO#U z>*s`OiKj^g`8>0epYv*J&XNyGnz6QS$~&O55oTMsP#q}U!8oPN^Y^D>by=EWO-iGJ zrbnjSRKJf(mC;hNmHNw=-3MV|)_#iVDYxEVI#SOtRB0X(xvp}tX>uW_NDc;C zybTo_ zmn9IFJ0heikli4sk;Y+v>?UmlC3DawU9sp8*x2^r6nv+n`+;GY>9rUajS=zde>6iH z`K8_s2D=n(-o<1Ehc)&!C~WsErr`%~<7eWJy)rloKh2B2Loh8;9SPcq`RGBcu6!qQ z!)f4X51Ewv%J%dLoj2-pv@yZs)w_>wEN_Zbxgj%yBP%t6QZXpaaPah-knX>_qiwBA zC{fEnyxP3E$IQ-{&>i>IsiPh2r-GTYD7~dr<=fk;ZSm4bE*s8}{rdRsp0K1V4XF?T zTFe)8NqV}m;l|DR@i8vJb3L^tOR6erfxj*ZX_Cj5J3UiX%kuk<@ATf8LLccxtIiMk zoVzVG_z}EShFtx1cxbf$`VmJ@TC7>#&%4(D1@t^Ae5Y*6-9S8P{Bx!Itu=3U`t_hk zcmLbix=VRpXpm^s<86HS^HXWgL)jj&%kQ*wo@{-q_2|Gd14ZC4*Uybqo_No*9wtd5 zgDkijnM6gW44(Mxu55Oy=1y2#f+91Mg6jI3s%C6bJ%AQtTH%Z_=J@&Y>`Q-O0=HYWa>X~!EDL-78EDgx zj#=WX_lK)^lvxz5Ltp~>1c(xzPE=vt!n2o8*D1|01!Fb#D#TwU}t3V%KgvoQAYUcxtQ3eh3lrcN1ss~ zgeJ~wn|nv?Fv~XOOzIhIq+q+o;M0Iy-WS(u67k@shv6{dUWt)VWolt8eJpJ3F!M?*> zJS;jH3x%l|GU86*D+y!r$EjUeOY9jX@1aEXl7a}kN=@VS zbH_FrI{8mZmD?EBHD;+^sd*e#Kl$|R&7};#S-Kl|eb_N(K&pi7Pq2KyfkHS8=Dz$a zh0N&6%2&fTt8B>Og_)dJ4HFx}>MuJhL(&Hv5}Pvq)=Jr)b~4hjLJR2M7nIqx?2Vha zRTI8RU@uSv;|5B~Ww-uCrrd0Cz;|`f)ebvc?#7kV#VC-gAzt=FH+7pxLYFR{GXEh8lj~%=qoC;3~4R|Zpcmm{*j}>OY z4u`t0L(teJKv#Jwl`G@XeZ6W3hY*R{-ty=PruxCzGJqbjnVFfE2;->1gNRm>K^ch@ z11SdR#FB>olg1)Zdk7SP2~n*ZfT)B+5f%IQY{^VTKh@uvVR9W@m?@QWU=YYbAp9E( z17TtWy53n&hzLeNP7a`E-CTy=*-wODa6+shz0-w zLZ5OF!mZ3qg(0L}ei^(5z{xKF;|T|n8Z}<=^gsjzFhItMe$eY-In*x%ioB`lLl&7i zI9ktUQE{j@=W2IxBK{PFKENib#6t9nuIBoDo;LpPe8$Y7ihN{P8CCr%tMP;Vtf~qx z6!&5Q=^dUR8pUSo-gxdMx6mlEWZ%Z3-OZ=BO&{^xF94&eWJnnK|xPe8Gdrj$g# zT2HDwVE`=IO%yGNML2ah;BjP6mM9PBf|W-ZE^ul~ttOnJ6+ZyE+XIJ5{7ixn%W(fj zhM%7F1RES(G*ed(mMcED>kQsFA! z5wam!k>X5CUNVH+{N2O$^S{!R}!%K-g8)5>1o zb2mg|^KY2#MSgk07H3Lx!^+g($O(BF7KANCv`-|%WGFCw0!I_~vbl zKgE?*FRK2K{kHesvAGW#CZNWU#75-!a1RYXNHMLZV6`E0pMhQ$K`J9L;yq+UmW}|j zU2=2(9f3R36@3%nPLlF`Gc_ZeB|GzHG%vSc7>9iAF%YE9M4$UbyRsq#(S%MI3^j7WA?VY;A0*-Xi z!U?x(fXmTAeb>amJo!9ZEO6zku<(0OeH{Ptg}C{T;ZnKZ#qHcTr(HzKn#`Ati``Sl z6^=hFjhinDO5za|x$yReIZqT8)s;<#HgO|kSnAj{Vh!6mH+!>iwV=!VjMvIbuL`xP z_k?%~p1b&aERcT+oP2nHcf&gRLvvB1f**RqnL z6#g5asS*iz7s6T9V%Uq!vKy3N;#shcIw-s5tSklY&w@l!tRuTj~b-TX?ySWop z2?Op@>YlyR1+q-cMy6UT$lq$RUgv@1|1kVkgnM&9lw=}=I=y$s?xY1|CVrh@H2>2> z&C{ML5^q``+bCc1&#+N3@d%Ugf8FBH@1x})laotUBhYyMs?)#iSW`SKdO-dhlWYR* z$9IQtuT`!&+P?LtpM4;7NZIFxDUM0~UAzrZRoMA_*sR{-B zzN>_I2(Fc?G&!xd0a0=R*EJcS=y(D6S;iUU-#@>1sQy1wsz}Vh!Xlnup;q3bpWAKi zjJ!(35leL>Wm0uA(E^w`9DoOM++VrNC4VztU>G{33p7B@0f!B0Qm>#KfwM0-hRgv Hfp7Rft{>pN diff --git a/src/json.hpp b/src/json.hpp index 5f47d158..4447412c 100644 --- a/src/json.hpp +++ b/src/json.hpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index 627c9185..97b777ae 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/fuzz.cpp b/test/src/fuzz.cpp index 23c0d418..e614b238 100644 --- a/test/src/fuzz.cpp +++ b/test/src/fuzz.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (fuzz test support) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Run "make fuzz_testing" and follow the instructions. diff --git a/test/src/unit-algorithms.cpp b/test/src/unit-algorithms.cpp index f779ea76..83612c37 100644 --- a/test/src/unit-algorithms.cpp +++ b/test/src/unit-algorithms.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-allocator.cpp b/test/src/unit-allocator.cpp index 49189c0c..c2487ccf 100644 --- a/test/src/unit-allocator.cpp +++ b/test/src/unit-allocator.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-capacity.cpp b/test/src/unit-capacity.cpp index 1378304f..19137407 100644 --- a/test/src/unit-capacity.cpp +++ b/test/src/unit-capacity.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-class_const_iterator.cpp b/test/src/unit-class_const_iterator.cpp index fa0fee50..9504dff5 100644 --- a/test/src/unit-class_const_iterator.cpp +++ b/test/src/unit-class_const_iterator.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-class_iterator.cpp b/test/src/unit-class_iterator.cpp index 1706120f..428baf50 100644 --- a/test/src/unit-class_iterator.cpp +++ b/test/src/unit-class_iterator.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-class_lexer.cpp b/test/src/unit-class_lexer.cpp index b2c951b1..c5999e35 100644 --- a/test/src/unit-class_lexer.cpp +++ b/test/src/unit-class_lexer.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-class_parser.cpp b/test/src/unit-class_parser.cpp index 5925d628..c9d5fcd9 100644 --- a/test/src/unit-class_parser.cpp +++ b/test/src/unit-class_parser.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-comparison.cpp b/test/src/unit-comparison.cpp index 13287fa2..eb1cf627 100644 --- a/test/src/unit-comparison.cpp +++ b/test/src/unit-comparison.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-concepts.cpp b/test/src/unit-concepts.cpp index 0897b503..d9a74029 100644 --- a/test/src/unit-concepts.cpp +++ b/test/src/unit-concepts.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-constructor1.cpp b/test/src/unit-constructor1.cpp index 469d21d0..45b7aebe 100644 --- a/test/src/unit-constructor1.cpp +++ b/test/src/unit-constructor1.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-constructor2.cpp b/test/src/unit-constructor2.cpp index 3a2cd80c..671e4ad6 100644 --- a/test/src/unit-constructor2.cpp +++ b/test/src/unit-constructor2.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-convenience.cpp b/test/src/unit-convenience.cpp index 7bc41f39..e797e5e1 100644 --- a/test/src/unit-convenience.cpp +++ b/test/src/unit-convenience.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-conversions.cpp b/test/src/unit-conversions.cpp index c8fe6cc6..b02431be 100644 --- a/test/src/unit-conversions.cpp +++ b/test/src/unit-conversions.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-deserialization.cpp b/test/src/unit-deserialization.cpp index 5d6fcb34..8c820ce7 100644 --- a/test/src/unit-deserialization.cpp +++ b/test/src/unit-deserialization.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-element_access1.cpp b/test/src/unit-element_access1.cpp index 2ee28150..09e5f479 100644 --- a/test/src/unit-element_access1.cpp +++ b/test/src/unit-element_access1.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-element_access2.cpp b/test/src/unit-element_access2.cpp index cd85fc3b..1b825339 100644 --- a/test/src/unit-element_access2.cpp +++ b/test/src/unit-element_access2.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-inspection.cpp b/test/src/unit-inspection.cpp index 63b32ad3..8a2eb039 100644 --- a/test/src/unit-inspection.cpp +++ b/test/src/unit-inspection.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-iterator_wrapper.cpp b/test/src/unit-iterator_wrapper.cpp index aa357fe1..d4434393 100644 --- a/test/src/unit-iterator_wrapper.cpp +++ b/test/src/unit-iterator_wrapper.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-iterators1.cpp b/test/src/unit-iterators1.cpp index 482d33e9..f4d1aad7 100644 --- a/test/src/unit-iterators1.cpp +++ b/test/src/unit-iterators1.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-iterators2.cpp b/test/src/unit-iterators2.cpp index d80181ce..27d8fbb8 100644 --- a/test/src/unit-iterators2.cpp +++ b/test/src/unit-iterators2.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-json_patch.cpp b/test/src/unit-json_patch.cpp index b3565684..79070135 100644 --- a/test/src/unit-json_patch.cpp +++ b/test/src/unit-json_patch.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-json_pointer.cpp b/test/src/unit-json_pointer.cpp index c2ba2bae..1b1e3485 100644 --- a/test/src/unit-json_pointer.cpp +++ b/test/src/unit-json_pointer.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-modifiers.cpp b/test/src/unit-modifiers.cpp index 7ac83967..fd7fed56 100644 --- a/test/src/unit-modifiers.cpp +++ b/test/src/unit-modifiers.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-pointer_access.cpp b/test/src/unit-pointer_access.cpp index d81205bf..8948360c 100644 --- a/test/src/unit-pointer_access.cpp +++ b/test/src/unit-pointer_access.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-readme.cpp b/test/src/unit-readme.cpp index bccd5a23..a5078e90 100644 --- a/test/src/unit-readme.cpp +++ b/test/src/unit-readme.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-reference_access.cpp b/test/src/unit-reference_access.cpp index 7cfca564..b7e1b90a 100644 --- a/test/src/unit-reference_access.cpp +++ b/test/src/unit-reference_access.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-regression.cpp b/test/src/unit-regression.cpp index 2c3964b6..661edc25 100644 --- a/test/src/unit-regression.cpp +++ b/test/src/unit-regression.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-serialization.cpp b/test/src/unit-serialization.cpp index f49f79c3..cc8dcec0 100644 --- a/test/src/unit-serialization.cpp +++ b/test/src/unit-serialization.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-testsuites.cpp b/test/src/unit-testsuites.cpp index 6c3f21f3..15fee1f5 100644 --- a/test/src/unit-testsuites.cpp +++ b/test/src/unit-testsuites.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit-unicode.cpp b/test/src/unit-unicode.cpp index 5ab8f524..19da6497 100644 --- a/test/src/unit-unicode.cpp +++ b/test/src/unit-unicode.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License . diff --git a/test/src/unit.cpp b/test/src/unit.cpp index 1a3707c7..6ad7d8e1 100644 --- a/test/src/unit.cpp +++ b/test/src/unit.cpp @@ -1,7 +1,7 @@ /* __ _____ _____ _____ __| | __| | | | JSON for Modern C++ (test suite) -| | |__ | | | | | | version 2.0.6 +| | |__ | | | | | | version 2.0.7 |_____|_____|_____|_|___| https://github.com/nlohmann/json Licensed under the MIT License .