From bd55afd407019157d49b0c667c646d3cf4171876 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 4 Oct 2023 09:49:18 +0000 Subject: [PATCH 001/100] fixes --- .../druid/sql/calcite/rel/Windowing.java | 4 +- .../sql/calcite/CalciteWindowQueryTest.java | 2 - .../calcite/tests/window/lead_lag.sqlTest | 43 +++++++++++++++++++ .../calcite/tests/window/no_grouping.sqlTest | 18 ++++---- 4 files changed, 54 insertions(+), 13 deletions(-) create mode 100644 sql/src/test/resources/calcite/tests/window/lead_lag.sqlTest diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java index e486a9588123..07c5544441dc 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java @@ -88,9 +88,9 @@ public class Windowing private static final ImmutableMap KNOWN_WINDOW_FNS = ImmutableMap .builder() .put("LAG", (agg) -> - new WindowOffsetProcessor(agg.getColumn(0), agg.getOutputName(), -agg.getConstantInt(1))) + new WindowOffsetProcessor(agg.getColumn(0), agg.getOutputName(), -agg.getConstantInt(1, 1))) .put("LEAD", (agg) -> - new WindowOffsetProcessor(agg.getColumn(0), agg.getOutputName(), agg.getConstantInt(1))) + new WindowOffsetProcessor(agg.getColumn(0), agg.getOutputName(), agg.getConstantInt(1, 1))) .put("FIRST_VALUE", (agg) -> new WindowFirstProcessor(agg.getColumn(0), agg.getOutputName())) .put("LAST_VALUE", (agg) -> diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index 6ee790e1f582..7b42596d81a3 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -54,7 +54,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assume.assumeThat; -import static org.junit.Assume.assumeTrue; /** * These tests are file-based, look in resources -> calcite/tests/window for the set of test specifications. @@ -102,7 +101,6 @@ public CalciteWindowQueryTest( @SuppressWarnings("unchecked") public void windowQueryTest() throws IOException { - assumeTrue("These tests are only run in sqlCompatible mode!", NullHandling.sqlCompatible()); final Function stringManipulator; if (NullHandling.sqlCompatible()) { stringManipulator = s -> "".equals(s) ? null : s; diff --git a/sql/src/test/resources/calcite/tests/window/lead_lag.sqlTest b/sql/src/test/resources/calcite/tests/window/lead_lag.sqlTest new file mode 100644 index 000000000000..e6e83249fb4c --- /dev/null +++ b/sql/src/test/resources/calcite/tests/window/lead_lag.sqlTest @@ -0,0 +1,43 @@ +type: "operatorValidation" + +sql: | + SELECT + dim1, + LAG(dim1,111) OVER () + FROM foo + WHERE length(dim1) = 0 and dim1 is not null + GROUP BY dim1 + +expectedOperators: + - type: "naivePartition" + partitionColumns: [] + - type: "window" + processor: + type: "composing" + processors: + - type: "offset" + inputColumn: "d0" + outputColumn: "w0" + offset: -2 + - type: "offset" + inputColumn: "d0" + outputColumn: "w1" + offset: -1 + - type: "offset" + inputColumn: "d0" + outputColumn: "w2" + offset: 0 + - type: "offset" + inputColumn: "d0" + outputColumn: "w3" + offset: 0 + - type: "offset" + inputColumn: "d0" + outputColumn: "w4" + offset: 1 + - type: "offset" + inputColumn: "d0" + outputColumn: "w5" + offset: 2 +expectedResults: + - ["",null,null,"","",null,null] diff --git a/sql/src/test/resources/calcite/tests/window/no_grouping.sqlTest b/sql/src/test/resources/calcite/tests/window/no_grouping.sqlTest index 5e8c31e69fff..b30ee83bb61a 100644 --- a/sql/src/test/resources/calcite/tests/window/no_grouping.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/no_grouping.sqlTest @@ -2,8 +2,8 @@ type: "operatorValidation" sql: | SELECT - m1, - COUNT(m1) OVER () cc + dim2, + COUNT(dim2) OVER () cc FROM druid.foo expectedOperators: @@ -18,12 +18,12 @@ expectedOperators: aggregator: {"type":"count","name":"w0"} filter: type: not - field: {"type":"null","column":"m1"} + field: {"type":"null","column":"dim2"} name: null expectedResults: - - [1.0,6] - - [2.0,6] - - [3.0,6] - - [4.0,6] - - [5.0,6] - - [6.0,6] + - ["a",6] + - [null,6] + - ["",6] + - ["a",6] + - ["abc",6] + - [null,6] From 5cf1e2c1ca1f70ef84e8f0a8d96d4563b18230ff Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 4 Oct 2023 10:01:41 +0000 Subject: [PATCH 002/100] check for latest rewrite place --- .../builtin/EarliestLatestAnySqlAggregator.java | 9 +++++++++ .../builtin/EarliestLatestBySqlAggregator.java | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/EarliestLatestAnySqlAggregator.java b/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/EarliestLatestAnySqlAggregator.java index 5f1b3c3228d4..e730f0364043 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/EarliestLatestAnySqlAggregator.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/EarliestLatestAnySqlAggregator.java @@ -340,5 +340,14 @@ private static class EarliestLatestSqlAggFunction extends SqlAggFunction Optionality.FORBIDDEN ); } + + public org.apache.calcite.sql.SqlNode rewriteCall(org.apache.calcite.sql.validate.SqlValidator validator, org.apache.calcite.sql.SqlCall call) + { + // I think the best chance would be to to try to rewrite it here + // biggest question is kinda like which is the time column + // look inside SqlCoalesceFunction for a sample how a rewrite is done around here + return call; + } } + } diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/EarliestLatestBySqlAggregator.java b/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/EarliestLatestBySqlAggregator.java index 95b70e1f1e50..45f4251d6c7a 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/EarliestLatestBySqlAggregator.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/EarliestLatestBySqlAggregator.java @@ -25,12 +25,15 @@ import org.apache.calcite.rex.RexLiteral; import org.apache.calcite.rex.RexNode; import org.apache.calcite.sql.SqlAggFunction; +import org.apache.calcite.sql.SqlCall; import org.apache.calcite.sql.SqlFunctionCategory; import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.type.InferTypes; import org.apache.calcite.sql.type.OperandTypes; import org.apache.calcite.sql.type.SqlReturnTypeInference; import org.apache.calcite.sql.type.SqlTypeFamily; +import org.apache.calcite.sql.validate.SqlValidator; import org.apache.calcite.util.Optionality; import org.apache.druid.java.util.common.IAE; import org.apache.druid.java.util.common.ISE; @@ -204,5 +207,10 @@ private static class EarliestByLatestBySqlAggFunction extends SqlAggFunction Optionality.FORBIDDEN ); } + @Override + public SqlNode rewriteCall(SqlValidator validator, SqlCall call) + { + return super.rewriteCall(validator, call); + } } } From c4ff27436577c0e2b48c282884b5d095b6dbd8f3 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 4 Oct 2023 10:01:44 +0000 Subject: [PATCH 003/100] Revert "check for latest rewrite place" This reverts commit 5cf1e2c1ca1f70ef84e8f0a8d96d4563b18230ff. --- .../builtin/EarliestLatestAnySqlAggregator.java | 9 --------- .../builtin/EarliestLatestBySqlAggregator.java | 8 -------- 2 files changed, 17 deletions(-) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/EarliestLatestAnySqlAggregator.java b/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/EarliestLatestAnySqlAggregator.java index e730f0364043..5f1b3c3228d4 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/EarliestLatestAnySqlAggregator.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/EarliestLatestAnySqlAggregator.java @@ -340,14 +340,5 @@ private static class EarliestLatestSqlAggFunction extends SqlAggFunction Optionality.FORBIDDEN ); } - - public org.apache.calcite.sql.SqlNode rewriteCall(org.apache.calcite.sql.validate.SqlValidator validator, org.apache.calcite.sql.SqlCall call) - { - // I think the best chance would be to to try to rewrite it here - // biggest question is kinda like which is the time column - // look inside SqlCoalesceFunction for a sample how a rewrite is done around here - return call; - } } - } diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/EarliestLatestBySqlAggregator.java b/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/EarliestLatestBySqlAggregator.java index 45f4251d6c7a..95b70e1f1e50 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/EarliestLatestBySqlAggregator.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/EarliestLatestBySqlAggregator.java @@ -25,15 +25,12 @@ import org.apache.calcite.rex.RexLiteral; import org.apache.calcite.rex.RexNode; import org.apache.calcite.sql.SqlAggFunction; -import org.apache.calcite.sql.SqlCall; import org.apache.calcite.sql.SqlFunctionCategory; import org.apache.calcite.sql.SqlKind; -import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.type.InferTypes; import org.apache.calcite.sql.type.OperandTypes; import org.apache.calcite.sql.type.SqlReturnTypeInference; import org.apache.calcite.sql.type.SqlTypeFamily; -import org.apache.calcite.sql.validate.SqlValidator; import org.apache.calcite.util.Optionality; import org.apache.druid.java.util.common.IAE; import org.apache.druid.java.util.common.ISE; @@ -207,10 +204,5 @@ private static class EarliestByLatestBySqlAggFunction extends SqlAggFunction Optionality.FORBIDDEN ); } - @Override - public SqlNode rewriteCall(SqlValidator validator, SqlCall call) - { - return super.rewriteCall(validator, call); - } } } From 89844e9877025b0daf72184b848142528e681979 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 4 Oct 2023 05:10:49 +0000 Subject: [PATCH 004/100] some stuff (cherry picked from commit ab346d4373ea888eb8ef6115e018e7fb0d27407f) --- .../druid/common/config/NullHandling.java | 23 +++++++++ .../sql/calcite/CalciteWindowQueryTest.java | 11 +---- .../calcite/tests/window/lead_lag.sqlTest | 41 +++++----------- .../wikipediaFramedAggregations.sqlTest | 48 +++++++++---------- 4 files changed, 61 insertions(+), 62 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/common/config/NullHandling.java b/processing/src/main/java/org/apache/druid/common/config/NullHandling.java index 8e6f242e9a34..43c109c61be7 100644 --- a/processing/src/main/java/org/apache/druid/common/config/NullHandling.java +++ b/processing/src/main/java/org/apache/druid/common/config/NullHandling.java @@ -22,6 +22,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Strings; import com.google.inject.Inject; +import org.apache.druid.segment.column.ValueType; import org.apache.druid.segment.data.Indexed; import javax.annotation.Nullable; @@ -161,6 +162,28 @@ public static T defaultValueForClass(final Class clazz) } } + /** + * Returns the default value for the given {@link ValueType}. + * + * May be null or non-null based on the current SQL-compatible null handling mode. + */ + @Nullable + @SuppressWarnings("unchecked") + public static Object defaultValueForType(ValueType type) + { + if (type == ValueType.FLOAT) { + return defaultFloatValue(); + } else if (type == ValueType.DOUBLE) { + return defaultDoubleValue(); + } else if (type == ValueType.LONG) { + return defaultLongValue(); + } else if (type == ValueType.STRING) { + return defaultStringValue(); + } else { + return null; + } + } + public static boolean isNullOrEquivalent(@Nullable String value) { return replaceWithDefault() ? Strings.isNullOrEmpty(value) : value == null; diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index 7b42596d81a3..08ed99c7d0d3 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -101,13 +101,6 @@ public CalciteWindowQueryTest( @SuppressWarnings("unchecked") public void windowQueryTest() throws IOException { - final Function stringManipulator; - if (NullHandling.sqlCompatible()) { - stringManipulator = s -> "".equals(s) ? null : s; - } else { - stringManipulator = Function.identity(); - } - final URL systemResource = ClassLoader.getSystemResource("calcite/tests/window/" + filename); final Object objectFromYaml = YAML_JACKSON.readValue(systemResource, Object.class); @@ -194,9 +187,9 @@ public void windowQueryTest() throws IOException default: throw new ISE("result[%s] was type[%s]!? Expected it to be numerical", i, types[i].getType()); } - } else if (result[i] instanceof String) { - result[i] = stringManipulator.apply((String) result[i]); } + } else { + result[i] = NullHandling.defaultValueForType(types[i].getType()); } } } diff --git a/sql/src/test/resources/calcite/tests/window/lead_lag.sqlTest b/sql/src/test/resources/calcite/tests/window/lead_lag.sqlTest index e6e83249fb4c..f26d6ce8f50b 100644 --- a/sql/src/test/resources/calcite/tests/window/lead_lag.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/lead_lag.sqlTest @@ -3,41 +3,24 @@ type: "operatorValidation" sql: | SELECT dim1, + dim2, LAG(dim1,111) OVER () FROM foo - WHERE length(dim1) = 0 and dim1 is not null - GROUP BY dim1 + GROUP BY dim1,dim2 expectedOperators: - type: "naivePartition" partitionColumns: [] - type: "window" processor: - type: "composing" - processors: - - type: "offset" - inputColumn: "d0" - outputColumn: "w0" - offset: -2 - - type: "offset" - inputColumn: "d0" - outputColumn: "w1" - offset: -1 - - type: "offset" - inputColumn: "d0" - outputColumn: "w2" - offset: 0 - - type: "offset" - inputColumn: "d0" - outputColumn: "w3" - offset: 0 - - type: "offset" - inputColumn: "d0" - outputColumn: "w4" - offset: 1 - - type: "offset" - inputColumn: "d0" - outputColumn: "w5" - offset: 2 + type: "offset" + inputColumn: "d0" + outputColumn: "w0" + offset: -111 expectedResults: - - ["",null,null,"","",null,null] + - ["","a",null] + - ["1","a",null] + - ["10.1",null,null] + - ["2","",null] + - ["abc",null,null] + - ["def","abc",null] diff --git a/sql/src/test/resources/calcite/tests/window/wikipediaFramedAggregations.sqlTest b/sql/src/test/resources/calcite/tests/window/wikipediaFramedAggregations.sqlTest index e1b5dcd1833c..0644c9a354d7 100644 --- a/sql/src/test/resources/calcite/tests/window/wikipediaFramedAggregations.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/wikipediaFramedAggregations.sqlTest @@ -19,30 +19,30 @@ expectedOperators: - { type: "longSum", name: "w0", fieldName: "a0" } expectedResults: - - [ "",1442016000000,29873,603401 ] - - [ "",1442019600000,173892,856027 ] - - [ "",1442023200000,399636,1022699 ] - - [ "",1442026800000,252626,1353656 ] - - [ "",1442030400000,166672,1524388 ] - - [ "",1442034000000,330957,1893946 ] - - [ "",1442037600000,200605,1810312 ] - - [ "",1442041200000,543450,1866002 ] - - [ "",1442044800000,316002,2486700 ] - - [ "",1442048400000,308316,2439701 ] - - [ "",1442052000000,787370,2698393 ] - - [ "",1442055600000,283958,2544408 ] - - [ "",1442059200000,459297,2579990 ] - - [ "",1442062800000,389465,2630189 ] - - [ "",1442066400000,351584,2218213 ] - - [ "",1442070000000,358515,2326738 ] - - [ "",1442073600000,375394,2320518 ] - - [ "",1442077200000,392483,2303622 ] - - [ "",1442080800000,453077,2255910 ] - - [ "",1442084400000,372569,2411822 ] - - [ "",1442088000000,303872,2410929 ] - - [ "",1442091600000,514427,2294605 ] - - [ "",1442095200000,374501,1841528 ] - - [ "",1442098800000,276159,1468959 ] + - [ null,1442016000000,29873,603401 ] + - [ null,1442019600000,173892,856027 ] + - [ null,1442023200000,399636,1022699 ] + - [ null,1442026800000,252626,1353656 ] + - [ null,1442030400000,166672,1524388 ] + - [ null,1442034000000,330957,1893946 ] + - [ null,1442037600000,200605,1810312 ] + - [ null,1442041200000,543450,1866002 ] + - [ null,1442044800000,316002,2486700 ] + - [ null,1442048400000,308316,2439701 ] + - [ null,1442052000000,787370,2698393 ] + - [ null,1442055600000,283958,2544408 ] + - [ null,1442059200000,459297,2579990 ] + - [ null,1442062800000,389465,2630189 ] + - [ null,1442066400000,351584,2218213 ] + - [ null,1442070000000,358515,2326738 ] + - [ null,1442073600000,375394,2320518 ] + - [ null,1442077200000,392483,2303622 ] + - [ null,1442080800000,453077,2255910 ] + - [ null,1442084400000,372569,2411822 ] + - [ null,1442088000000,303872,2410929 ] + - [ null,1442091600000,514427,2294605 ] + - [ null,1442095200000,374501,1841528 ] + - [ null,1442098800000,276159,1468959 ] - [ "AE",1442030400000,118,150 ] - [ "AE",1442044800000,-7,147 ] - [ "AE",1442048400000,39,136 ] From ed5d1009b9c8c45800cda5bc881cd54ad9ea0f59 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 4 Oct 2023 10:24:18 +0000 Subject: [PATCH 005/100] update test output --- .../window/wikipediaSimplePartition.sqlTest | 1974 ++++++++--------- 1 file changed, 987 insertions(+), 987 deletions(-) diff --git a/sql/src/test/resources/calcite/tests/window/wikipediaSimplePartition.sqlTest b/sql/src/test/resources/calcite/tests/window/wikipediaSimplePartition.sqlTest index 8284d3c2105c..7b94318084e7 100644 --- a/sql/src/test/resources/calcite/tests/window/wikipediaSimplePartition.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/wikipediaSimplePartition.sqlTest @@ -33,990 +33,990 @@ expectedOperators: - { "type": "percentile", "outputColumn": "w1", "numBuckets": 3 } expectedResults: - - [ "", 1442016000000, 29873, 8414700, null, 1442019600000, 29873, 276159, 1 ] - - [ "", 1442019600000, 173892, 8414700, null, 1442023200000, 29873, 276159, 1 ] - - [ "", 1442023200000, 399636, 8414700, 1442016000000, 1442026800000, 29873, 276159, 1 ] - - [ "", 1442026800000, 252626, 8414700, 1442019600000, 1442030400000, 29873, 276159, 1 ] - - [ "", 1442030400000, 166672, 8414700, 1442023200000, 1442034000000, 29873, 276159, 1 ] - - [ "", 1442034000000, 330957, 8414700, 1442026800000, 1442037600000, 29873, 276159, 1 ] - - [ "", 1442037600000, 200605, 8414700, 1442030400000, 1442041200000, 29873, 276159, 1 ] - - [ "", 1442041200000, 543450, 8414700, 1442034000000, 1442044800000, 29873, 276159, 1 ] - - [ "", 1442044800000, 316002, 8414700, 1442037600000, 1442048400000, 29873, 276159, 2 ] - - [ "", 1442048400000, 308316, 8414700, 1442041200000, 1442052000000, 29873, 276159, 2 ] - - [ "", 1442052000000, 787370, 8414700, 1442044800000, 1442055600000, 29873, 276159, 2 ] - - [ "", 1442055600000, 283958, 8414700, 1442048400000, 1442059200000, 29873, 276159, 2 ] - - [ "", 1442059200000, 459297, 8414700, 1442052000000, 1442062800000, 29873, 276159, 2 ] - - [ "", 1442062800000, 389465, 8414700, 1442055600000, 1442066400000, 29873, 276159, 2 ] - - [ "", 1442066400000, 351584, 8414700, 1442059200000, 1442070000000, 29873, 276159, 2 ] - - [ "", 1442070000000, 358515, 8414700, 1442062800000, 1442073600000, 29873, 276159, 2 ] - - [ "", 1442073600000, 375394, 8414700, 1442066400000, 1442077200000, 29873, 276159, 3 ] - - [ "", 1442077200000, 392483, 8414700, 1442070000000, 1442080800000, 29873, 276159, 3 ] - - [ "", 1442080800000, 453077, 8414700, 1442073600000, 1442084400000, 29873, 276159, 3 ] - - [ "", 1442084400000, 372569, 8414700, 1442077200000, 1442088000000, 29873, 276159, 3 ] - - [ "", 1442088000000, 303872, 8414700, 1442080800000, 1442091600000, 29873, 276159, 3 ] - - [ "", 1442091600000, 514427, 8414700, 1442084400000, 1442095200000, 29873, 276159, 3 ] - - [ "", 1442095200000, 374501, 8414700, 1442088000000, 1442098800000, 29873, 276159, 3 ] - - [ "", 1442098800000, 276159, 8414700, 1442091600000, null, 29873, 276159, 3 ] - - [ "AE", 1442030400000, 118, 6547, null, 1442044800000, 118, 42, 1 ] - - [ "AE", 1442044800000, -7, 6547, null, 1442048400000, 118, 42, 1 ] - - [ "AE", 1442048400000, 39, 6547, 1442030400000, 1442052000000, 118, 42, 1 ] - - [ "AE", 1442052000000, -3, 6547, 1442044800000, 1442059200000, 118, 42, 2 ] - - [ "AE", 1442059200000, -11, 6547, 1442048400000, 1442070000000, 118, 42, 2 ] - - [ "AE", 1442070000000, 46, 6547, 1442052000000, 1442077200000, 118, 42, 2 ] - - [ "AE", 1442077200000, 6323, 6547, 1442059200000, 1442080800000, 118, 42, 3 ] - - [ "AE", 1442080800000, 42, 6547, 1442070000000, null, 118, 42, 3 ] - - [ "AL", 1442077200000, 26, 80, null, 1442091600000, 26, 54, 1 ] - - [ "AL", 1442091600000, 54, 80, null, null, 26, 54, 2 ] - - [ "AO", 1442041200000, -26, 740, null, 1442052000000, -26, 722, 1 ] - - [ "AO", 1442052000000, -18, 740, null, 1442088000000, -26, 722, 1 ] - - [ "AO", 1442088000000, 62, 740, 1442041200000, 1442098800000, -26, 722, 2 ] - - [ "AO", 1442098800000, 722, 740, 1442052000000, null, -26, 722, 3 ] - - [ "AR", 1442019600000, 1, 4450, null, 1442023200000, 1, 64, 1 ] - - [ "AR", 1442023200000, 2514, 4450, null, 1442026800000, 1, 64, 1 ] - - [ "AR", 1442026800000, 644, 4450, 1442019600000, 1442030400000, 1, 64, 1 ] - - [ "AR", 1442030400000, -3, 4450, 1442023200000, 1442034000000, 1, 64, 1 ] - - [ "AR", 1442034000000, 212, 4450, 1442026800000, 1442037600000, 1, 64, 1 ] - - [ "AR", 1442037600000, 81, 4450, 1442030400000, 1442055600000, 1, 64, 1 ] - - [ "AR", 1442055600000, -54, 4450, 1442034000000, 1442059200000, 1, 64, 2 ] - - [ "AR", 1442059200000, 210, 4450, 1442037600000, 1442062800000, 1, 64, 2 ] - - [ "AR", 1442062800000, 29, 4450, 1442055600000, 1442066400000, 1, 64, 2 ] - - [ "AR", 1442066400000, 0, 4450, 1442059200000, 1442070000000, 1, 64, 2 ] - - [ "AR", 1442070000000, 377, 4450, 1442062800000, 1442077200000, 1, 64, 2 ] - - [ "AR", 1442077200000, -591, 4450, 1442066400000, 1442080800000, 1, 64, 2 ] - - [ "AR", 1442080800000, 1, 4450, 1442070000000, 1442084400000, 1, 64, 3 ] - - [ "AR", 1442084400000, -5, 4450, 1442077200000, 1442091600000, 1, 64, 3 ] - - [ "AR", 1442091600000, 340, 4450, 1442080800000, 1442095200000, 1, 64, 3 ] - - [ "AR", 1442095200000, 630, 4450, 1442084400000, 1442098800000, 1, 64, 3 ] - - [ "AR", 1442098800000, 64, 4450, 1442091600000, null, 1, 64, 3 ] - - [ "AT", 1442052000000, 4793, 12047, null, 1442062800000, 4793, 89, 1 ] - - [ "AT", 1442062800000, -155, 12047, null, 1442066400000, 4793, 89, 1 ] - - [ "AT", 1442066400000, 0, 12047, 1442052000000, 1442070000000, 4793, 89, 1 ] - - [ "AT", 1442070000000, 272, 12047, 1442062800000, 1442084400000, 4793, 89, 2 ] - - [ "AT", 1442084400000, -2, 12047, 1442066400000, 1442088000000, 4793, 89, 2 ] - - [ "AT", 1442088000000, 7050, 12047, 1442070000000, 1442091600000, 4793, 89, 3 ] - - [ "AT", 1442091600000, 89, 12047, 1442084400000, null, 4793, 89, 3 ] - - [ "AU", 1442016000000, 0, 2700, null, 1442019600000, 0, 518, 1 ] - - [ "AU", 1442019600000, 253, 2700, null, 1442023200000, 0, 518, 1 ] - - [ "AU", 1442023200000, 52, 2700, 1442016000000, 1442026800000, 0, 518, 1 ] - - [ "AU", 1442026800000, 188, 2700, 1442019600000, 1442030400000, 0, 518, 1 ] - - [ "AU", 1442030400000, -377, 2700, 1442023200000, 1442034000000, 0, 518, 1 ] - - [ "AU", 1442034000000, 283, 2700, 1442026800000, 1442037600000, 0, 518, 1 ] - - [ "AU", 1442037600000, 3, 2700, 1442030400000, 1442041200000, 0, 518, 1 ] - - [ "AU", 1442041200000, 194, 2700, 1442034000000, 1442044800000, 0, 518, 2 ] - - [ "AU", 1442044800000, 373, 2700, 1442037600000, 1442048400000, 0, 518, 2 ] - - [ "AU", 1442048400000, 135, 2700, 1442041200000, 1442052000000, 0, 518, 2 ] - - [ "AU", 1442052000000, -643, 2700, 1442044800000, 1442055600000, 0, 518, 2 ] - - [ "AU", 1442055600000, 182, 2700, 1442048400000, 1442059200000, 0, 518, 2 ] - - [ "AU", 1442059200000, 38, 2700, 1442052000000, 1442066400000, 0, 518, 2 ] - - [ "AU", 1442066400000, -21, 2700, 1442055600000, 1442070000000, 0, 518, 3 ] - - [ "AU", 1442070000000, -12, 2700, 1442059200000, 1442077200000, 0, 518, 3 ] - - [ "AU", 1442077200000, 1, 2700, 1442066400000, 1442091600000, 0, 518, 3 ] - - [ "AU", 1442091600000, 1138, 2700, 1442070000000, 1442095200000, 0, 518, 3 ] - - [ "AU", 1442095200000, 395, 2700, 1442077200000, 1442098800000, 0, 518, 3 ] - - [ "AU", 1442098800000, 518, 2700, 1442091600000, null, 0, 518, 3 ] - - [ "BA", 1442048400000, -13, -178, null, 1442052000000, -13, -1, 1 ] - - [ "BA", 1442052000000, 38, -178, null, 1442055600000, -13, -1, 1 ] - - [ "BA", 1442055600000, -202, -178, 1442048400000, 1442084400000, -13, -1, 2 ] - - [ "BA", 1442084400000, -1, -178, 1442052000000, null, -13, -1, 3 ] - - [ "BD", 1442019600000, 0, 1106, null, 1442041200000, 0, -2, 1 ] - - [ "BD", 1442041200000, 854, 1106, null, 1442066400000, 0, -2, 1 ] - - [ "BD", 1442066400000, 76, 1106, 1442019600000, 1442073600000, 0, -2, 2 ] - - [ "BD", 1442073600000, 103, 1106, 1442041200000, 1442077200000, 0, -2, 2 ] - - [ "BD", 1442077200000, 75, 1106, 1442066400000, 1442091600000, 0, -2, 3 ] - - [ "BD", 1442091600000, -2, 1106, 1442073600000, null, 0, -2, 3 ] - - [ "BE", 1442030400000, -103, 795, null, 1442048400000, -103, 9, 1 ] - - [ "BE", 1442048400000, 59, 795, null, 1442052000000, -103, 9, 1 ] - - [ "BE", 1442052000000, -1, 795, 1442030400000, 1442055600000, -103, 9, 1 ] - - [ "BE", 1442055600000, 233, 795, 1442048400000, 1442062800000, -103, 9, 1 ] - - [ "BE", 1442062800000, 91, 795, 1442052000000, 1442066400000, -103, 9, 2 ] - - [ "BE", 1442066400000, 136, 795, 1442055600000, 1442073600000, -103, 9, 2 ] - - [ "BE", 1442073600000, 19, 795, 1442062800000, 1442080800000, -103, 9, 2 ] - - [ "BE", 1442080800000, 1, 795, 1442066400000, 1442084400000, -103, 9, 2 ] - - [ "BE", 1442084400000, 183, 795, 1442073600000, 1442088000000, -103, 9, 3 ] - - [ "BE", 1442088000000, 67, 795, 1442080800000, 1442091600000, -103, 9, 3 ] - - [ "BE", 1442091600000, 101, 795, 1442084400000, 1442098800000, -103, 9, 3 ] - - [ "BE", 1442098800000, 9, 795, 1442088000000, null, -103, 9, 3 ] - - [ "BG", 1442041200000, 9, 19592, null, 1442052000000, 9, 401, 1 ] - - [ "BG", 1442052000000, 18936, 19592, null, 1442059200000, 9, 401, 1 ] - - [ "BG", 1442059200000, 191, 19592, 1442041200000, 1442070000000, 9, 401, 2 ] - - [ "BG", 1442070000000, 55, 19592, 1442052000000, 1442084400000, 9, 401, 2 ] - - [ "BG", 1442084400000, 401, 19592, 1442059200000, null, 9, 401, 3 ] - - [ "BH", 1442052000000, 44, 44, null, null, 44, 44, 1 ] - - [ "BO", 1442080800000, 4, 4, null, 1442088000000, 4, -4, 1 ] - - [ "BO", 1442088000000, 4, 4, null, 1442095200000, 4, -4, 2 ] - - [ "BO", 1442095200000, -4, 4, 1442080800000, null, 4, -4, 3 ] - - [ "BR", 1442016000000, -248, 8550, null, 1442019600000, -248, -645, 1 ] - - [ "BR", 1442019600000, 372, 8550, null, 1442023200000, -248, -645, 1 ] - - [ "BR", 1442023200000, 879, 8550, 1442016000000, 1442026800000, -248, -645, 1 ] - - [ "BR", 1442026800000, 51, 8550, 1442019600000, 1442030400000, -248, -645, 1 ] - - [ "BR", 1442030400000, 30, 8550, 1442023200000, 1442034000000, -248, -645, 1 ] - - [ "BR", 1442034000000, 21, 8550, 1442026800000, 1442037600000, -248, -645, 1 ] - - [ "BR", 1442037600000, 267, 8550, 1442030400000, 1442041200000, -248, -645, 1 ] - - [ "BR", 1442041200000, 3, 8550, 1442034000000, 1442044800000, -248, -645, 1 ] - - [ "BR", 1442044800000, 71, 8550, 1442037600000, 1442052000000, -248, -645, 2 ] - - [ "BR", 1442052000000, 232, 8550, 1442041200000, 1442055600000, -248, -645, 2 ] - - [ "BR", 1442055600000, 242, 8550, 1442044800000, 1442059200000, -248, -645, 2 ] - - [ "BR", 1442059200000, 73, 8550, 1442052000000, 1442062800000, -248, -645, 2 ] - - [ "BR", 1442062800000, 93, 8550, 1442055600000, 1442066400000, -248, -645, 2 ] - - [ "BR", 1442066400000, 1034, 8550, 1442059200000, 1442070000000, -248, -645, 2 ] - - [ "BR", 1442070000000, 536, 8550, 1442062800000, 1442073600000, -248, -645, 2 ] - - [ "BR", 1442073600000, 2087, 8550, 1442066400000, 1442077200000, -248, -645, 2 ] - - [ "BR", 1442077200000, 2253, 8550, 1442070000000, 1442080800000, -248, -645, 3 ] - - [ "BR", 1442080800000, -267, 8550, 1442073600000, 1442084400000, -248, -645, 3 ] - - [ "BR", 1442084400000, 492, 8550, 1442077200000, 1442088000000, -248, -645, 3 ] - - [ "BR", 1442088000000, 215, 8550, 1442080800000, 1442091600000, -248, -645, 3 ] - - [ "BR", 1442091600000, 11, 8550, 1442084400000, 1442095200000, -248, -645, 3 ] - - [ "BR", 1442095200000, 748, 8550, 1442088000000, 1442098800000, -248, -645, 3 ] - - [ "BR", 1442098800000, -645, 8550, 1442091600000, null, -248, -645, 3 ] - - [ "BY", 1442055600000, 1, 2153, null, 1442059200000, 1, 33, 1 ] - - [ "BY", 1442059200000, 1464, 2153, null, 1442073600000, 1, 33, 1 ] - - [ "BY", 1442073600000, 596, 2153, 1442055600000, 1442077200000, 1, 33, 1 ] - - [ "BY", 1442077200000, 30, 2153, 1442059200000, 1442080800000, 1, 33, 2 ] - - [ "BY", 1442080800000, 28, 2153, 1442073600000, 1442084400000, 1, 33, 2 ] - - [ "BY", 1442084400000, 1, 2153, 1442077200000, 1442088000000, 1, 33, 3 ] - - [ "BY", 1442088000000, 33, 2153, 1442080800000, null, 1, 33, 3 ] - - [ "CA", 1442016000000, -371, 8544, null, 1442019600000, -371, 164, 1 ] - - [ "CA", 1442019600000, 2184, 8544, null, 1442023200000, -371, 164, 1 ] - - [ "CA", 1442023200000, 286, 8544, 1442016000000, 1442026800000, -371, 164, 1 ] - - [ "CA", 1442026800000, 2216, 8544, 1442019600000, 1442030400000, -371, 164, 1 ] - - [ "CA", 1442030400000, -47, 8544, 1442023200000, 1442034000000, -371, 164, 1 ] - - [ "CA", 1442034000000, 178, 8544, 1442026800000, 1442037600000, -371, 164, 1 ] - - [ "CA", 1442037600000, -132, 8544, 1442030400000, 1442041200000, -371, 164, 1 ] - - [ "CA", 1442041200000, 5, 8544, 1442034000000, 1442044800000, -371, 164, 1 ] - - [ "CA", 1442044800000, 1, 8544, 1442037600000, 1442052000000, -371, 164, 2 ] - - [ "CA", 1442052000000, 38, 8544, 1442041200000, 1442059200000, -371, 164, 2 ] - - [ "CA", 1442059200000, 1036, 8544, 1442044800000, 1442062800000, -371, 164, 2 ] - - [ "CA", 1442062800000, -367, 8544, 1442052000000, 1442066400000, -371, 164, 2 ] - - [ "CA", 1442066400000, 307, 8544, 1442059200000, 1442070000000, -371, 164, 2 ] - - [ "CA", 1442070000000, 185, 8544, 1442062800000, 1442073600000, -371, 164, 2 ] - - [ "CA", 1442073600000, 86, 8544, 1442066400000, 1442077200000, -371, 164, 2 ] - - [ "CA", 1442077200000, -282, 8544, 1442070000000, 1442080800000, -371, 164, 3 ] - - [ "CA", 1442080800000, 481, 8544, 1442073600000, 1442084400000, -371, 164, 3 ] - - [ "CA", 1442084400000, 44, 8544, 1442077200000, 1442088000000, -371, 164, 3 ] - - [ "CA", 1442088000000, 35, 8544, 1442080800000, 1442091600000, -371, 164, 3 ] - - [ "CA", 1442091600000, 2858, 8544, 1442084400000, 1442095200000, -371, 164, 3 ] - - [ "CA", 1442095200000, -361, 8544, 1442088000000, 1442098800000, -371, 164, 3 ] - - [ "CA", 1442098800000, 164, 8544, 1442091600000, null, -371, 164, 3 ] - - [ "CH", 1442037600000, 59, 753, null, 1442041200000, 59, 67, 1 ] - - [ "CH", 1442041200000, 198, 753, null, 1442044800000, 59, 67, 1 ] - - [ "CH", 1442044800000, -54, 753, 1442037600000, 1442048400000, 59, 67, 1 ] - - [ "CH", 1442048400000, 24, 753, 1442041200000, 1442052000000, 59, 67, 1 ] - - [ "CH", 1442052000000, 47, 753, 1442044800000, 1442055600000, 59, 67, 2 ] - - [ "CH", 1442055600000, 0, 753, 1442048400000, 1442062800000, 59, 67, 2 ] - - [ "CH", 1442062800000, 22, 753, 1442052000000, 1442070000000, 59, 67, 2 ] - - [ "CH", 1442070000000, 11, 753, 1442055600000, 1442073600000, 59, 67, 2 ] - - [ "CH", 1442073600000, 360, 753, 1442062800000, 1442077200000, 59, 67, 3 ] - - [ "CH", 1442077200000, 6, 753, 1442070000000, 1442084400000, 59, 67, 3 ] - - [ "CH", 1442084400000, 13, 753, 1442073600000, 1442091600000, 59, 67, 3 ] - - [ "CH", 1442091600000, 67, 753, 1442077200000, null, 59, 67, 3 ] - - [ "CL", 1442016000000, 161, 533, null, 1442019600000, 161, 9, 1 ] - - [ "CL", 1442019600000, -370, 533, null, 1442023200000, 161, 9, 1 ] - - [ "CL", 1442023200000, 15, 533, 1442016000000, 1442030400000, 161, 9, 1 ] - - [ "CL", 1442030400000, 40, 533, 1442019600000, 1442034000000, 161, 9, 1 ] - - [ "CL", 1442034000000, -1, 533, 1442023200000, 1442037600000, 161, 9, 1 ] - - [ "CL", 1442037600000, 2, 533, 1442030400000, 1442041200000, 161, 9, 1 ] - - [ "CL", 1442041200000, -1, 533, 1442034000000, 1442052000000, 161, 9, 1 ] - - [ "CL", 1442052000000, 390, 533, 1442037600000, 1442059200000, 161, 9, 2 ] - - [ "CL", 1442059200000, -12, 533, 1442041200000, 1442062800000, 161, 9, 2 ] - - [ "CL", 1442062800000, 17, 533, 1442052000000, 1442066400000, 161, 9, 2 ] - - [ "CL", 1442066400000, -41, 533, 1442059200000, 1442070000000, 161, 9, 2 ] - - [ "CL", 1442070000000, 13, 533, 1442062800000, 1442073600000, 161, 9, 2 ] - - [ "CL", 1442073600000, 153, 533, 1442066400000, 1442077200000, 161, 9, 2 ] - - [ "CL", 1442077200000, -15, 533, 1442070000000, 1442080800000, 161, 9, 2 ] - - [ "CL", 1442080800000, 17, 533, 1442073600000, 1442084400000, 161, 9, 3 ] - - [ "CL", 1442084400000, 126, 533, 1442077200000, 1442088000000, 161, 9, 3 ] - - [ "CL", 1442088000000, 286, 533, 1442080800000, 1442091600000, 161, 9, 3 ] - - [ "CL", 1442091600000, 20, 533, 1442084400000, 1442095200000, 161, 9, 3 ] - - [ "CL", 1442095200000, -276, 533, 1442088000000, 1442098800000, 161, 9, 3 ] - - [ "CL", 1442098800000, 9, 533, 1442091600000, null, 161, 9, 3 ] - - [ "CN", 1442023200000, -13, 583, null, 1442026800000, -13, -1, 1 ] - - [ "CN", 1442026800000, 154, 583, null, 1442037600000, -13, -1, 1 ] - - [ "CN", 1442037600000, 98, 583, 1442023200000, 1442048400000, -13, -1, 1 ] - - [ "CN", 1442048400000, 293, 583, 1442026800000, 1442052000000, -13, -1, 1 ] - - [ "CN", 1442052000000, 0, 583, 1442037600000, 1442055600000, -13, -1, 2 ] - - [ "CN", 1442055600000, 69, 583, 1442048400000, 1442059200000, -13, -1, 2 ] - - [ "CN", 1442059200000, 8, 583, 1442052000000, 1442066400000, -13, -1, 2 ] - - [ "CN", 1442066400000, -15, 583, 1442055600000, 1442080800000, -13, -1, 3 ] - - [ "CN", 1442080800000, -10, 583, 1442059200000, 1442084400000, -13, -1, 3 ] - - [ "CN", 1442084400000, -1, 583, 1442066400000, null, -13, -1, 3 ] - - [ "CO", 1442016000000, 16, 59611, null, 1442019600000, 16, 83, 1 ] - - [ "CO", 1442019600000, 12, 59611, null, 1442023200000, 16, 83, 1 ] - - [ "CO", 1442023200000, 9, 59611, 1442016000000, 1442030400000, 16, 83, 1 ] - - [ "CO", 1442030400000, 441, 59611, 1442019600000, 1442059200000, 16, 83, 1 ] - - [ "CO", 1442059200000, 473, 59611, 1442023200000, 1442066400000, 16, 83, 1 ] - - [ "CO", 1442066400000, 288, 59611, 1442030400000, 1442070000000, 16, 83, 2 ] - - [ "CO", 1442070000000, -45, 59611, 1442059200000, 1442073600000, 16, 83, 2 ] - - [ "CO", 1442073600000, 39860, 59611, 1442066400000, 1442077200000, 16, 83, 2 ] - - [ "CO", 1442077200000, 581, 59611, 1442070000000, 1442080800000, 16, 83, 2 ] - - [ "CO", 1442080800000, 25, 59611, 1442073600000, 1442084400000, 16, 83, 2 ] - - [ "CO", 1442084400000, 51, 59611, 1442077200000, 1442088000000, 16, 83, 3 ] - - [ "CO", 1442088000000, 17150, 59611, 1442080800000, 1442091600000, 16, 83, 3 ] - - [ "CO", 1442091600000, 377, 59611, 1442084400000, 1442095200000, 16, 83, 3 ] - - [ "CO", 1442095200000, 290, 59611, 1442088000000, 1442098800000, 16, 83, 3 ] - - [ "CO", 1442098800000, 83, 59611, 1442091600000, null, 16, 83, 3 ] - - [ "CR", 1442019600000, 62, 3241, null, 1442023200000, 62, 72, 1 ] - - [ "CR", 1442023200000, 62, 3241, null, 1442026800000, 62, 72, 1 ] - - [ "CR", 1442026800000, 140, 3241, 1442019600000, 1442030400000, 62, 72, 1 ] - - [ "CR", 1442030400000, 2497, 3241, 1442023200000, 1442041200000, 62, 72, 2 ] - - [ "CR", 1442041200000, 51, 3241, 1442026800000, 1442044800000, 62, 72, 2 ] - - [ "CR", 1442044800000, 194, 3241, 1442030400000, 1442048400000, 62, 72, 2 ] - - [ "CR", 1442048400000, 163, 3241, 1442041200000, 1442088000000, 62, 72, 3 ] - - [ "CR", 1442088000000, 72, 3241, 1442044800000, null, 62, 72, 3 ] - - [ "CZ", 1442026800000, -19, 3479, null, 1442034000000, -19, 2, 1 ] - - [ "CZ", 1442034000000, 78, 3479, null, 1442037600000, -19, 2, 1 ] - - [ "CZ", 1442037600000, 18, 3479, 1442026800000, 1442055600000, -19, 2, 1 ] - - [ "CZ", 1442055600000, 1073, 3479, 1442034000000, 1442059200000, -19, 2, 1 ] - - [ "CZ", 1442059200000, 21, 3479, 1442037600000, 1442062800000, -19, 2, 2 ] - - [ "CZ", 1442062800000, 0, 3479, 1442055600000, 1442070000000, -19, 2, 2 ] - - [ "CZ", 1442070000000, 168, 3479, 1442059200000, 1442073600000, -19, 2, 2 ] - - [ "CZ", 1442073600000, 2051, 3479, 1442062800000, 1442077200000, -19, 2, 2 ] - - [ "CZ", 1442077200000, 115, 3479, 1442070000000, 1442080800000, -19, 2, 3 ] - - [ "CZ", 1442080800000, -28, 3479, 1442073600000, 1442098800000, -19, 2, 3 ] - - [ "CZ", 1442098800000, 2, 3479, 1442077200000, null, -19, 2, 3 ] - - [ "DE", 1442016000000, 167, 25583, null, 1442019600000, 167, 329, 1 ] - - [ "DE", 1442019600000, 0, 25583, null, 1442023200000, 167, 329, 1 ] - - [ "DE", 1442023200000, 64, 25583, 1442016000000, 1442030400000, 167, 329, 1 ] - - [ "DE", 1442030400000, 373, 25583, 1442019600000, 1442034000000, 167, 329, 1 ] - - [ "DE", 1442034000000, 358, 25583, 1442023200000, 1442037600000, 167, 329, 1 ] - - [ "DE", 1442037600000, 544, 25583, 1442030400000, 1442041200000, 167, 329, 1 ] - - [ "DE", 1442041200000, 197, 25583, 1442034000000, 1442044800000, 167, 329, 1 ] - - [ "DE", 1442044800000, 979, 25583, 1442037600000, 1442048400000, 167, 329, 1 ] - - [ "DE", 1442048400000, 811, 25583, 1442041200000, 1442052000000, 167, 329, 2 ] - - [ "DE", 1442052000000, 1600, 25583, 1442044800000, 1442055600000, 167, 329, 2 ] - - [ "DE", 1442055600000, 1523, 25583, 1442048400000, 1442059200000, 167, 329, 2 ] - - [ "DE", 1442059200000, 289, 25583, 1442052000000, 1442062800000, 167, 329, 2 ] - - [ "DE", 1442062800000, 283, 25583, 1442055600000, 1442066400000, 167, 329, 2 ] - - [ "DE", 1442066400000, 1577, 25583, 1442059200000, 1442070000000, 167, 329, 2 ] - - [ "DE", 1442070000000, 1666, 25583, 1442062800000, 1442073600000, 167, 329, 2 ] - - [ "DE", 1442073600000, 6075, 25583, 1442066400000, 1442077200000, 167, 329, 2 ] - - [ "DE", 1442077200000, 2188, 25583, 1442070000000, 1442080800000, 167, 329, 3 ] - - [ "DE", 1442080800000, 1133, 25583, 1442073600000, 1442084400000, 167, 329, 3 ] - - [ "DE", 1442084400000, -125, 25583, 1442077200000, 1442088000000, 167, 329, 3 ] - - [ "DE", 1442088000000, 190, 25583, 1442080800000, 1442091600000, 167, 329, 3 ] - - [ "DE", 1442091600000, 4355, 25583, 1442084400000, 1442095200000, 167, 329, 3 ] - - [ "DE", 1442095200000, 1007, 25583, 1442088000000, 1442098800000, 167, 329, 3 ] - - [ "DE", 1442098800000, 329, 25583, 1442091600000, null, 167, 329, 3 ] - - [ "DK", 1442037600000, 10, 594, null, 1442044800000, 10, 0, 1 ] - - [ "DK", 1442044800000, 36, 594, null, 1442048400000, 10, 0, 1 ] - - [ "DK", 1442048400000, -5, 594, 1442037600000, 1442055600000, 10, 0, 1 ] - - [ "DK", 1442055600000, 42, 594, 1442044800000, 1442059200000, 10, 0, 1 ] - - [ "DK", 1442059200000, 0, 594, 1442048400000, 1442062800000, 10, 0, 2 ] - - [ "DK", 1442062800000, 1, 594, 1442055600000, 1442066400000, 10, 0, 2 ] - - [ "DK", 1442066400000, 416, 594, 1442059200000, 1442077200000, 10, 0, 2 ] - - [ "DK", 1442077200000, -9, 594, 1442062800000, 1442080800000, 10, 0, 2 ] - - [ "DK", 1442080800000, 61, 594, 1442066400000, 1442084400000, 10, 0, 3 ] - - [ "DK", 1442084400000, -97, 594, 1442077200000, 1442091600000, 10, 0, 3 ] - - [ "DK", 1442091600000, 139, 594, 1442080800000, 1442095200000, 10, 0, 3 ] - - [ "DK", 1442095200000, 0, 594, 1442084400000, null, 10, 0, 3 ] - - [ "DO", 1442023200000, 8, 264, null, 1442066400000, 8, 13, 1 ] - - [ "DO", 1442066400000, 35, 264, null, 1442073600000, 8, 13, 1 ] - - [ "DO", 1442073600000, 200, 264, 1442023200000, 1442084400000, 8, 13, 2 ] - - [ "DO", 1442084400000, 8, 264, 1442066400000, 1442095200000, 8, 13, 2 ] - - [ "DO", 1442095200000, 13, 264, 1442073600000, null, 8, 13, 3 ] - - [ "DZ", 1442077200000, -1, -1, null, null, -1, -1, 1 ] - - [ "EC", 1442019600000, 29, 232, null, 1442023200000, 29, 10, 1 ] - - [ "EC", 1442023200000, -9, 232, null, 1442030400000, 29, 10, 1 ] - - [ "EC", 1442030400000, 0, 232, 1442019600000, 1442077200000, 29, 10, 2 ] - - [ "EC", 1442077200000, -366, 232, 1442023200000, 1442084400000, 29, 10, 2 ] - - [ "EC", 1442084400000, 568, 232, 1442030400000, 1442095200000, 29, 10, 3 ] - - [ "EC", 1442095200000, 10, 232, 1442077200000, null, 29, 10, 3 ] - - [ "EE", 1442041200000, 37, 18, null, 1442044800000, 37, -19, 1 ] - - [ "EE", 1442044800000, -19, 18, null, null, 37, -19, 2 ] - - [ "EG", 1442026800000, 16, 170, null, 1442055600000, 16, 27, 1 ] - - [ "EG", 1442055600000, 14, 170, null, 1442062800000, 16, 27, 1 ] - - [ "EG", 1442062800000, 112, 170, 1442026800000, 1442073600000, 16, 27, 2 ] - - [ "EG", 1442073600000, 1, 170, 1442055600000, 1442091600000, 16, 27, 2 ] - - [ "EG", 1442091600000, 27, 170, 1442062800000, null, 16, 27, 3 ] - - [ "ES", 1442019600000, 103, 7449, null, 1442023200000, 103, 458, 1 ] - - [ "ES", 1442023200000, -5, 7449, null, 1442034000000, 103, 458, 1 ] - - [ "ES", 1442034000000, -52, 7449, 1442019600000, 1442037600000, 103, 458, 1 ] - - [ "ES", 1442037600000, 3, 7449, 1442023200000, 1442041200000, 103, 458, 1 ] - - [ "ES", 1442041200000, 118, 7449, 1442034000000, 1442044800000, 103, 458, 1 ] - - [ "ES", 1442044800000, -169, 7449, 1442037600000, 1442048400000, 103, 458, 1 ] - - [ "ES", 1442048400000, 158, 7449, 1442041200000, 1442052000000, 103, 458, 1 ] - - [ "ES", 1442052000000, -4, 7449, 1442044800000, 1442055600000, 103, 458, 2 ] - - [ "ES", 1442055600000, 495, 7449, 1442048400000, 1442059200000, 103, 458, 2 ] - - [ "ES", 1442059200000, 1086, 7449, 1442052000000, 1442062800000, 103, 458, 2 ] - - [ "ES", 1442062800000, -71, 7449, 1442055600000, 1442066400000, 103, 458, 2 ] - - [ "ES", 1442066400000, 461, 7449, 1442059200000, 1442070000000, 103, 458, 2 ] - - [ "ES", 1442070000000, 61, 7449, 1442062800000, 1442073600000, 103, 458, 2 ] - - [ "ES", 1442073600000, 154, 7449, 1442066400000, 1442077200000, 103, 458, 2 ] - - [ "ES", 1442077200000, 1240, 7449, 1442070000000, 1442084400000, 103, 458, 3 ] - - [ "ES", 1442084400000, 337, 7449, 1442073600000, 1442088000000, 103, 458, 3 ] - - [ "ES", 1442088000000, -130, 7449, 1442077200000, 1442091600000, 103, 458, 3 ] - - [ "ES", 1442091600000, 700, 7449, 1442084400000, 1442095200000, 103, 458, 3 ] - - [ "ES", 1442095200000, 2506, 7449, 1442088000000, 1442098800000, 103, 458, 3 ] - - [ "ES", 1442098800000, 458, 7449, 1442091600000, null, 103, 458, 3 ] - - [ "FI", 1442030400000, 1491, 3579, null, 1442037600000, 1491, 69, 1 ] - - [ "FI", 1442037600000, 14, 3579, null, 1442048400000, 1491, 69, 1 ] - - [ "FI", 1442048400000, 12, 3579, 1442030400000, 1442052000000, 1491, 69, 1 ] - - [ "FI", 1442052000000, 186, 3579, 1442037600000, 1442059200000, 1491, 69, 1 ] - - [ "FI", 1442059200000, 407, 3579, 1442048400000, 1442062800000, 1491, 69, 2 ] - - [ "FI", 1442062800000, 19, 3579, 1442052000000, 1442066400000, 1491, 69, 2 ] - - [ "FI", 1442066400000, 183, 3579, 1442059200000, 1442073600000, 1491, 69, 2 ] - - [ "FI", 1442073600000, -1, 3579, 1442062800000, 1442077200000, 1491, 69, 2 ] - - [ "FI", 1442077200000, 200, 3579, 1442066400000, 1442080800000, 1491, 69, 3 ] - - [ "FI", 1442080800000, 104, 3579, 1442073600000, 1442084400000, 1491, 69, 3 ] - - [ "FI", 1442084400000, 895, 3579, 1442077200000, 1442095200000, 1491, 69, 3 ] - - [ "FI", 1442095200000, 69, 3579, 1442080800000, null, 1491, 69, 3 ] - - [ "FR", 1442016000000, -1, 37281, null, 1442019600000, -1, 136, 1 ] - - [ "FR", 1442019600000, 585, 37281, null, 1442023200000, -1, 136, 1 ] - - [ "FR", 1442023200000, 628, 37281, 1442016000000, 1442026800000, -1, 136, 1 ] - - [ "FR", 1442026800000, 86, 37281, 1442019600000, 1442034000000, -1, 136, 1 ] - - [ "FR", 1442034000000, 476, 37281, 1442023200000, 1442037600000, -1, 136, 1 ] - - [ "FR", 1442037600000, 4174, 37281, 1442026800000, 1442041200000, -1, 136, 1 ] - - [ "FR", 1442041200000, 604, 37281, 1442034000000, 1442044800000, -1, 136, 1 ] - - [ "FR", 1442044800000, 172, 37281, 1442037600000, 1442048400000, -1, 136, 1 ] - - [ "FR", 1442048400000, 3027, 37281, 1442041200000, 1442052000000, -1, 136, 2 ] - - [ "FR", 1442052000000, 637, 37281, 1442044800000, 1442055600000, -1, 136, 2 ] - - [ "FR", 1442055600000, 463, 37281, 1442048400000, 1442059200000, -1, 136, 2 ] - - [ "FR", 1442059200000, 4650, 37281, 1442052000000, 1442062800000, -1, 136, 2 ] - - [ "FR", 1442062800000, 5676, 37281, 1442055600000, 1442066400000, -1, 136, 2 ] - - [ "FR", 1442066400000, 2516, 37281, 1442059200000, 1442070000000, -1, 136, 2 ] - - [ "FR", 1442070000000, 474, 37281, 1442062800000, 1442073600000, -1, 136, 2 ] - - [ "FR", 1442073600000, 3522, 37281, 1442066400000, 1442077200000, -1, 136, 2 ] - - [ "FR", 1442077200000, -444, 37281, 1442070000000, 1442080800000, -1, 136, 3 ] - - [ "FR", 1442080800000, 557, 37281, 1442073600000, 1442084400000, -1, 136, 3 ] - - [ "FR", 1442084400000, 6643, 37281, 1442077200000, 1442088000000, -1, 136, 3 ] - - [ "FR", 1442088000000, 1872, 37281, 1442080800000, 1442091600000, -1, 136, 3 ] - - [ "FR", 1442091600000, 741, 37281, 1442084400000, 1442095200000, -1, 136, 3 ] - - [ "FR", 1442095200000, 87, 37281, 1442088000000, 1442098800000, -1, 136, 3 ] - - [ "FR", 1442098800000, 136, 37281, 1442091600000, null, -1, 136, 3 ] - - [ "GB", 1442016000000, -44, 35857, null, 1442019600000, -44, 49, 1 ] - - [ "GB", 1442019600000, 54, 35857, null, 1442023200000, -44, 49, 1 ] - - [ "GB", 1442023200000, 1816, 35857, 1442016000000, 1442026800000, -44, 49, 1 ] - - [ "GB", 1442026800000, 339, 35857, 1442019600000, 1442030400000, -44, 49, 1 ] - - [ "GB", 1442030400000, 2524, 35857, 1442023200000, 1442034000000, -44, 49, 1 ] - - [ "GB", 1442034000000, -12, 35857, 1442026800000, 1442037600000, -44, 49, 1 ] - - [ "GB", 1442037600000, 544, 35857, 1442030400000, 1442041200000, -44, 49, 1 ] - - [ "GB", 1442041200000, 42, 35857, 1442034000000, 1442044800000, -44, 49, 1 ] - - [ "GB", 1442044800000, 32, 35857, 1442037600000, 1442048400000, -44, 49, 2 ] - - [ "GB", 1442048400000, 740, 35857, 1442041200000, 1442052000000, -44, 49, 2 ] - - [ "GB", 1442052000000, 168, 35857, 1442044800000, 1442055600000, -44, 49, 2 ] - - [ "GB", 1442055600000, 453, 35857, 1442048400000, 1442059200000, -44, 49, 2 ] - - [ "GB", 1442059200000, 16111, 35857, 1442052000000, 1442062800000, -44, 49, 2 ] - - [ "GB", 1442062800000, 5743, 35857, 1442055600000, 1442066400000, -44, 49, 2 ] - - [ "GB", 1442066400000, 671, 35857, 1442059200000, 1442070000000, -44, 49, 2 ] - - [ "GB", 1442070000000, 374, 35857, 1442062800000, 1442073600000, -44, 49, 2 ] - - [ "GB", 1442073600000, 648, 35857, 1442066400000, 1442077200000, -44, 49, 3 ] - - [ "GB", 1442077200000, 1135, 35857, 1442070000000, 1442080800000, -44, 49, 3 ] - - [ "GB", 1442080800000, 1444, 35857, 1442073600000, 1442084400000, -44, 49, 3 ] - - [ "GB", 1442084400000, 384, 35857, 1442077200000, 1442088000000, -44, 49, 3 ] - - [ "GB", 1442088000000, 1593, 35857, 1442080800000, 1442091600000, -44, 49, 3 ] - - [ "GB", 1442091600000, 811, 35857, 1442084400000, 1442095200000, -44, 49, 3 ] - - [ "GB", 1442095200000, 238, 35857, 1442088000000, 1442098800000, -44, 49, 3 ] - - [ "GB", 1442098800000, 49, 35857, 1442091600000, null, -44, 49, 3 ] - - [ "GE", 1442044800000, -21, -140, null, 1442052000000, -21, -27, 1 ] - - [ "GE", 1442052000000, -108, -140, null, 1442062800000, -21, -27, 1 ] - - [ "GE", 1442062800000, 16, -140, 1442044800000, 1442080800000, -21, -27, 2 ] - - [ "GE", 1442080800000, -27, -140, 1442052000000, null, -21, -27, 3 ] - - [ "GH", 1442088000000, 0, 0, null, null, 0, 0, 1 ] - - [ "GR", 1442019600000, 82, 149, null, 1442034000000, 82, 123, 1 ] - - [ "GR", 1442034000000, 0, 149, null, 1442041200000, 82, 123, 1 ] - - [ "GR", 1442041200000, 7, 149, 1442019600000, 1442048400000, 82, 123, 1 ] - - [ "GR", 1442048400000, -26, 149, 1442034000000, 1442062800000, 82, 123, 1 ] - - [ "GR", 1442062800000, 8, 149, 1442041200000, 1442070000000, 82, 123, 2 ] - - [ "GR", 1442070000000, 2, 149, 1442048400000, 1442073600000, 82, 123, 2 ] - - [ "GR", 1442073600000, -314, 149, 1442062800000, 1442080800000, 82, 123, 2 ] - - [ "GR", 1442080800000, 88, 149, 1442070000000, 1442084400000, 82, 123, 3 ] - - [ "GR", 1442084400000, 179, 149, 1442073600000, 1442091600000, 82, 123, 3 ] - - [ "GR", 1442091600000, 123, 149, 1442080800000, null, 82, 123, 3 ] - - [ "GT", 1442023200000, -167, 7, null, 1442026800000, -167, 1, 1 ] - - [ "GT", 1442026800000, 173, 7, null, 1442098800000, -167, 1, 2 ] - - [ "GT", 1442098800000, 1, 7, 1442023200000, null, -167, 1, 3 ] - - [ "HK", 1442019600000, -113, 10743, null, 1442023200000, -113, -1, 1 ] - - [ "HK", 1442023200000, 2414, 10743, null, 1442026800000, -113, -1, 1 ] - - [ "HK", 1442026800000, -211, 10743, 1442019600000, 1442030400000, -113, -1, 1 ] - - [ "HK", 1442030400000, 157, 10743, 1442023200000, 1442034000000, -113, -1, 1 ] - - [ "HK", 1442034000000, 1137, 10743, 1442026800000, 1442037600000, -113, -1, 1 ] - - [ "HK", 1442037600000, 636, 10743, 1442030400000, 1442041200000, -113, -1, 1 ] - - [ "HK", 1442041200000, -15, 10743, 1442034000000, 1442044800000, -113, -1, 1 ] - - [ "HK", 1442044800000, 21, 10743, 1442037600000, 1442048400000, -113, -1, 2 ] - - [ "HK", 1442048400000, 1, 10743, 1442041200000, 1442052000000, -113, -1, 2 ] - - [ "HK", 1442052000000, 15, 10743, 1442044800000, 1442055600000, -113, -1, 2 ] - - [ "HK", 1442055600000, 804, 10743, 1442048400000, 1442059200000, -113, -1, 2 ] - - [ "HK", 1442059200000, 2, 10743, 1442052000000, 1442062800000, -113, -1, 2 ] - - [ "HK", 1442062800000, 1, 10743, 1442055600000, 1442066400000, -113, -1, 2 ] - - [ "HK", 1442066400000, 39, 10743, 1442059200000, 1442070000000, -113, -1, 3 ] - - [ "HK", 1442070000000, 314, 10743, 1442062800000, 1442073600000, -113, -1, 3 ] - - [ "HK", 1442073600000, 5545, 10743, 1442066400000, 1442080800000, -113, -1, 3 ] - - [ "HK", 1442080800000, 0, 10743, 1442070000000, 1442091600000, -113, -1, 3 ] - - [ "HK", 1442091600000, -3, 10743, 1442073600000, 1442095200000, -113, -1, 3 ] - - [ "HK", 1442095200000, -1, 10743, 1442080800000, null, -113, -1, 3 ] - - [ "HN", 1442026800000, -1, -1, null, null, -1, -1, 1 ] - - [ "HR", 1442070000000, 32, 382, null, 1442073600000, 32, 82, 1 ] - - [ "HR", 1442073600000, 0, 382, null, 1442077200000, 32, 82, 1 ] - - [ "HR", 1442077200000, 58, 382, 1442070000000, 1442080800000, 32, 82, 2 ] - - [ "HR", 1442080800000, 220, 382, 1442073600000, 1442084400000, 32, 82, 2 ] - - [ "HR", 1442084400000, -10, 382, 1442077200000, 1442088000000, 32, 82, 3 ] - - [ "HR", 1442088000000, 82, 382, 1442080800000, null, 32, 82, 3 ] - - [ "HU", 1442019600000, 46, 2116, null, 1442037600000, 46, 110, 1 ] - - [ "HU", 1442037600000, 197, 2116, null, 1442041200000, 46, 110, 1 ] - - [ "HU", 1442041200000, 91, 2116, 1442019600000, 1442044800000, 46, 110, 1 ] - - [ "HU", 1442044800000, 547, 2116, 1442037600000, 1442048400000, 46, 110, 1 ] - - [ "HU", 1442048400000, 499, 2116, 1442041200000, 1442055600000, 46, 110, 1 ] - - [ "HU", 1442055600000, -2, 2116, 1442044800000, 1442062800000, 46, 110, 2 ] - - [ "HU", 1442062800000, 50, 2116, 1442048400000, 1442080800000, 46, 110, 2 ] - - [ "HU", 1442080800000, 242, 2116, 1442055600000, 1442084400000, 46, 110, 2 ] - - [ "HU", 1442084400000, 141, 2116, 1442062800000, 1442088000000, 46, 110, 2 ] - - [ "HU", 1442088000000, -71, 2116, 1442080800000, 1442091600000, 46, 110, 3 ] - - [ "HU", 1442091600000, -5, 2116, 1442084400000, 1442095200000, 46, 110, 3 ] - - [ "HU", 1442095200000, 271, 2116, 1442088000000, 1442098800000, 46, 110, 3 ] - - [ "HU", 1442098800000, 110, 2116, 1442091600000, null, 46, 110, 3 ] - - [ "ID", 1442023200000, 106, -255, null, 1442026800000, 106, 13, 1 ] - - [ "ID", 1442026800000, -416, -255, null, 1442030400000, 106, 13, 1 ] - - [ "ID", 1442030400000, 279, -255, 1442023200000, 1442034000000, 106, 13, 1 ] - - [ "ID", 1442034000000, 19, -255, 1442026800000, 1442037600000, 106, 13, 1 ] - - [ "ID", 1442037600000, 14, -255, 1442030400000, 1442041200000, 106, 13, 1 ] - - [ "ID", 1442041200000, 2, -255, 1442034000000, 1442044800000, 106, 13, 2 ] - - [ "ID", 1442044800000, -388, -255, 1442037600000, 1442055600000, 106, 13, 2 ] - - [ "ID", 1442055600000, 16, -255, 1442041200000, 1442059200000, 106, 13, 2 ] - - [ "ID", 1442059200000, 17, -255, 1442044800000, 1442070000000, 106, 13, 2 ] - - [ "ID", 1442070000000, 42, -255, 1442055600000, 1442091600000, 106, 13, 3 ] - - [ "ID", 1442091600000, 21, -255, 1442059200000, 1442095200000, 106, 13, 3 ] - - [ "ID", 1442095200000, 20, -255, 1442070000000, 1442098800000, 106, 13, 3 ] - - [ "ID", 1442098800000, 13, -255, 1442091600000, null, 106, 13, 3 ] - - [ "IE", 1442026800000, 1, 2142, null, 1442030400000, 1, -71, 1 ] - - [ "IE", 1442030400000, 1, 2142, null, 1442048400000, 1, -71, 1 ] - - [ "IE", 1442048400000, 27, 2142, 1442026800000, 1442066400000, 1, -71, 1 ] - - [ "IE", 1442066400000, 1062, 2142, 1442030400000, 1442070000000, 1, -71, 2 ] - - [ "IE", 1442070000000, -100, 2142, 1442048400000, 1442077200000, 1, -71, 2 ] - - [ "IE", 1442077200000, 403, 2142, 1442066400000, 1442084400000, 1, -71, 2 ] - - [ "IE", 1442084400000, 819, 2142, 1442070000000, 1442091600000, 1, -71, 3 ] - - [ "IE", 1442091600000, -71, 2142, 1442077200000, null, 1, -71, 3 ] - - [ "IL", 1442041200000, 35, 6617, null, 1442044800000, 35, 3, 1 ] - - [ "IL", 1442044800000, 218, 6617, null, 1442048400000, 35, 3, 1 ] - - [ "IL", 1442048400000, 25, 6617, 1442041200000, 1442052000000, 35, 3, 1 ] - - [ "IL", 1442052000000, 2745, 6617, 1442044800000, 1442055600000, 35, 3, 1 ] - - [ "IL", 1442055600000, 4, 6617, 1442048400000, 1442059200000, 35, 3, 1 ] - - [ "IL", 1442059200000, 1205, 6617, 1442052000000, 1442062800000, 35, 3, 1 ] - - [ "IL", 1442062800000, 180, 6617, 1442055600000, 1442066400000, 35, 3, 2 ] - - [ "IL", 1442066400000, 3, 6617, 1442059200000, 1442070000000, 35, 3, 2 ] - - [ "IL", 1442070000000, 49, 6617, 1442062800000, 1442073600000, 35, 3, 2 ] - - [ "IL", 1442073600000, 31, 6617, 1442066400000, 1442077200000, 35, 3, 2 ] - - [ "IL", 1442077200000, 187, 6617, 1442070000000, 1442080800000, 35, 3, 2 ] - - [ "IL", 1442080800000, 88, 6617, 1442073600000, 1442084400000, 35, 3, 3 ] - - [ "IL", 1442084400000, 1137, 6617, 1442077200000, 1442091600000, 35, 3, 3 ] - - [ "IL", 1442091600000, 707, 6617, 1442080800000, 1442095200000, 35, 3, 3 ] - - [ "IL", 1442095200000, 0, 6617, 1442084400000, 1442098800000, 35, 3, 3 ] - - [ "IL", 1442098800000, 3, 6617, 1442091600000, null, 35, 3, 3 ] - - [ "IN", 1442016000000, 1, 29166, null, 1442019600000, 1, 4, 1 ] - - [ "IN", 1442019600000, 38, 29166, null, 1442023200000, 1, 4, 1 ] - - [ "IN", 1442023200000, -142, 29166, 1442016000000, 1442026800000, 1, 4, 1 ] - - [ "IN", 1442026800000, 974, 29166, 1442019600000, 1442030400000, 1, 4, 1 ] - - [ "IN", 1442030400000, 1448, 29166, 1442023200000, 1442034000000, 1, 4, 1 ] - - [ "IN", 1442034000000, 1350, 29166, 1442026800000, 1442037600000, 1, 4, 1 ] - - [ "IN", 1442037600000, 135, 29166, 1442030400000, 1442041200000, 1, 4, 1 ] - - [ "IN", 1442041200000, 80, 29166, 1442034000000, 1442044800000, 1, 4, 1 ] - - [ "IN", 1442044800000, 2677, 29166, 1442037600000, 1442048400000, 1, 4, 2 ] - - [ "IN", 1442048400000, 262, 29166, 1442041200000, 1442052000000, 1, 4, 2 ] - - [ "IN", 1442052000000, 534, 29166, 1442044800000, 1442055600000, 1, 4, 2 ] - - [ "IN", 1442055600000, 166, 29166, 1442048400000, 1442059200000, 1, 4, 2 ] - - [ "IN", 1442059200000, 708, 29166, 1442052000000, 1442062800000, 1, 4, 2 ] - - [ "IN", 1442062800000, 1547, 29166, 1442055600000, 1442066400000, 1, 4, 2 ] - - [ "IN", 1442066400000, 116, 29166, 1442059200000, 1442070000000, 1, 4, 2 ] - - [ "IN", 1442070000000, 12091, 29166, 1442062800000, 1442073600000, 1, 4, 3 ] - - [ "IN", 1442073600000, 1170, 29166, 1442066400000, 1442077200000, 1, 4, 3 ] - - [ "IN", 1442077200000, 5699, 29166, 1442070000000, 1442080800000, 1, 4, 3 ] - - [ "IN", 1442080800000, 0, 29166, 1442073600000, 1442084400000, 1, 4, 3 ] - - [ "IN", 1442084400000, 187, 29166, 1442077200000, 1442088000000, 1, 4, 3 ] - - [ "IN", 1442088000000, 121, 29166, 1442080800000, 1442095200000, 1, 4, 3 ] - - [ "IN", 1442095200000, 4, 29166, 1442084400000, null, 1, 4, 3 ] - - [ "IQ", 1442041200000, -1, 3, null, 1442044800000, -1, -2, 1 ] - - [ "IQ", 1442044800000, 6, 3, null, 1442052000000, -1, -2, 1 ] - - [ "IQ", 1442052000000, 0, 3, 1442041200000, 1442095200000, -1, -2, 2 ] - - [ "IQ", 1442095200000, -2, 3, 1442044800000, null, -1, -2, 3 ] - - [ "IR", 1442026800000, 0, 2698, null, 1442030400000, 0, 0, 1 ] - - [ "IR", 1442030400000, 375, 2698, null, 1442034000000, 0, 0, 1 ] - - [ "IR", 1442034000000, -8, 2698, 1442026800000, 1442041200000, 0, 0, 1 ] - - [ "IR", 1442041200000, -79, 2698, 1442030400000, 1442044800000, 0, 0, 1 ] - - [ "IR", 1442044800000, 306, 2698, 1442034000000, 1442052000000, 0, 0, 1 ] - - [ "IR", 1442052000000, 155, 2698, 1442041200000, 1442055600000, 0, 0, 2 ] - - [ "IR", 1442055600000, -124, 2698, 1442044800000, 1442059200000, 0, 0, 2 ] - - [ "IR", 1442059200000, 1455, 2698, 1442052000000, 1442073600000, 0, 0, 2 ] - - [ "IR", 1442073600000, -193, 2698, 1442055600000, 1442077200000, 0, 0, 2 ] - - [ "IR", 1442077200000, -34, 2698, 1442059200000, 1442080800000, 0, 0, 3 ] - - [ "IR", 1442080800000, 131, 2698, 1442073600000, 1442088000000, 0, 0, 3 ] - - [ "IR", 1442088000000, 714, 2698, 1442077200000, 1442091600000, 0, 0, 3 ] - - [ "IR", 1442091600000, 0, 2698, 1442080800000, null, 0, 0, 3 ] - - [ "IT", 1442016000000, 0, 39091, null, 1442019600000, 0, 565, 1 ] - - [ "IT", 1442019600000, 183, 39091, null, 1442023200000, 0, 565, 1 ] - - [ "IT", 1442023200000, 111, 39091, 1442016000000, 1442026800000, 0, 565, 1 ] - - [ "IT", 1442026800000, 222, 39091, 1442019600000, 1442030400000, 0, 565, 1 ] - - [ "IT", 1442030400000, -17, 39091, 1442023200000, 1442034000000, 0, 565, 1 ] - - [ "IT", 1442034000000, 1006, 39091, 1442026800000, 1442037600000, 0, 565, 1 ] - - [ "IT", 1442037600000, -9, 39091, 1442030400000, 1442041200000, 0, 565, 1 ] - - [ "IT", 1442041200000, 20, 39091, 1442034000000, 1442044800000, 0, 565, 1 ] - - [ "IT", 1442044800000, 1483, 39091, 1442037600000, 1442048400000, 0, 565, 2 ] - - [ "IT", 1442048400000, 676, 39091, 1442041200000, 1442052000000, 0, 565, 2 ] - - [ "IT", 1442052000000, 1880, 39091, 1442044800000, 1442055600000, 0, 565, 2 ] - - [ "IT", 1442055600000, 6240, 39091, 1442048400000, 1442059200000, 0, 565, 2 ] - - [ "IT", 1442059200000, 542, 39091, 1442052000000, 1442062800000, 0, 565, 2 ] - - [ "IT", 1442062800000, 1938, 39091, 1442055600000, 1442066400000, 0, 565, 2 ] - - [ "IT", 1442066400000, 4155, 39091, 1442059200000, 1442070000000, 0, 565, 2 ] - - [ "IT", 1442070000000, 81, 39091, 1442062800000, 1442073600000, 0, 565, 2 ] - - [ "IT", 1442073600000, 2586, 39091, 1442066400000, 1442077200000, 0, 565, 3 ] - - [ "IT", 1442077200000, 2188, 39091, 1442070000000, 1442080800000, 0, 565, 3 ] - - [ "IT", 1442080800000, 5544, 39091, 1442073600000, 1442084400000, 0, 565, 3 ] - - [ "IT", 1442084400000, 2660, 39091, 1442077200000, 1442088000000, 0, 565, 3 ] - - [ "IT", 1442088000000, 3746, 39091, 1442080800000, 1442091600000, 0, 565, 3 ] - - [ "IT", 1442091600000, 351, 39091, 1442084400000, 1442095200000, 0, 565, 3 ] - - [ "IT", 1442095200000, 2940, 39091, 1442088000000, 1442098800000, 0, 565, 3 ] - - [ "IT", 1442098800000, 565, 39091, 1442091600000, null, 0, 565, 3 ] - - [ "JM", 1442070000000, 30, 30, null, null, 30, 30, 1 ] - - [ "JO", 1442055600000, -2, 2, null, 1442059200000, -2, 4, 1 ] - - [ "JO", 1442059200000, 0, 2, null, 1442080800000, -2, 4, 2 ] - - [ "JO", 1442080800000, 4, 2, 1442055600000, null, -2, 4, 3 ] - - [ "JP", 1442016000000, -113, 20378, null, 1442019600000, -113, -6, 1 ] - - [ "JP", 1442019600000, 2002, 20378, null, 1442023200000, -113, -6, 1 ] - - [ "JP", 1442023200000, 1959, 20378, 1442016000000, 1442026800000, -113, -6, 1 ] - - [ "JP", 1442026800000, 1035, 20378, 1442019600000, 1442030400000, -113, -6, 1 ] - - [ "JP", 1442030400000, 805, 20378, 1442023200000, 1442034000000, -113, -6, 1 ] - - [ "JP", 1442034000000, 910, 20378, 1442026800000, 1442037600000, -113, -6, 1 ] - - [ "JP", 1442037600000, 2181, 20378, 1442030400000, 1442041200000, -113, -6, 1 ] - - [ "JP", 1442041200000, 1373, 20378, 1442034000000, 1442044800000, -113, -6, 1 ] - - [ "JP", 1442044800000, 1569, 20378, 1442037600000, 1442048400000, -113, -6, 2 ] - - [ "JP", 1442048400000, 1981, 20378, 1442041200000, 1442052000000, -113, -6, 2 ] - - [ "JP", 1442052000000, 2789, 20378, 1442044800000, 1442055600000, -113, -6, 2 ] - - [ "JP", 1442055600000, 998, 20378, 1442048400000, 1442059200000, -113, -6, 2 ] - - [ "JP", 1442059200000, -85, 20378, 1442052000000, 1442062800000, -113, -6, 2 ] - - [ "JP", 1442062800000, 803, 20378, 1442055600000, 1442066400000, -113, -6, 2 ] - - [ "JP", 1442066400000, 167, 20378, 1442059200000, 1442070000000, -113, -6, 2 ] - - [ "JP", 1442070000000, 79, 20378, 1442062800000, 1442073600000, -113, -6, 2 ] - - [ "JP", 1442073600000, 1162, 20378, 1442066400000, 1442077200000, -113, -6, 3 ] - - [ "JP", 1442077200000, 51, 20378, 1442070000000, 1442080800000, -113, -6, 3 ] - - [ "JP", 1442080800000, 420, 20378, 1442073600000, 1442084400000, -113, -6, 3 ] - - [ "JP", 1442084400000, 13, 20378, 1442077200000, 1442088000000, -113, -6, 3 ] - - [ "JP", 1442088000000, 57, 20378, 1442080800000, 1442091600000, -113, -6, 3 ] - - [ "JP", 1442091600000, 228, 20378, 1442084400000, 1442095200000, -113, -6, 3 ] - - [ "JP", 1442095200000, 0, 20378, 1442088000000, 1442098800000, -113, -6, 3 ] - - [ "JP", 1442098800000, -6, 20378, 1442091600000, null, -113, -6, 3 ] - - [ "KE", 1442044800000, -1, -1, null, null, -1, -1, 1 ] - - [ "KG", 1442073600000, 6, 6, null, null, 6, 6, 1 ] - - [ "KR", 1442016000000, 1024, 13597, null, 1442019600000, 1024, -36, 1 ] - - [ "KR", 1442019600000, 445, 13597, null, 1442023200000, 1024, -36, 1 ] - - [ "KR", 1442023200000, 319, 13597, 1442016000000, 1442026800000, 1024, -36, 1 ] - - [ "KR", 1442026800000, -179, 13597, 1442019600000, 1442030400000, 1024, -36, 1 ] - - [ "KR", 1442030400000, 1035, 13597, 1442023200000, 1442034000000, 1024, -36, 1 ] - - [ "KR", 1442034000000, 434, 13597, 1442026800000, 1442037600000, 1024, -36, 1 ] - - [ "KR", 1442037600000, 26, 13597, 1442030400000, 1442041200000, 1024, -36, 1 ] - - [ "KR", 1442041200000, 20, 13597, 1442034000000, 1442044800000, 1024, -36, 1 ] - - [ "KR", 1442044800000, 829, 13597, 1442037600000, 1442048400000, 1024, -36, 2 ] - - [ "KR", 1442048400000, -374, 13597, 1442041200000, 1442052000000, 1024, -36, 2 ] - - [ "KR", 1442052000000, -3, 13597, 1442044800000, 1442055600000, 1024, -36, 2 ] - - [ "KR", 1442055600000, 3640, 13597, 1442048400000, 1442059200000, 1024, -36, 2 ] - - [ "KR", 1442059200000, 208, 13597, 1442052000000, 1442062800000, 1024, -36, 2 ] - - [ "KR", 1442062800000, 1096, 13597, 1442055600000, 1442066400000, 1024, -36, 2 ] - - [ "KR", 1442066400000, 3299, 13597, 1442059200000, 1442070000000, 1024, -36, 2 ] - - [ "KR", 1442070000000, 222, 13597, 1442062800000, 1442077200000, 1024, -36, 3 ] - - [ "KR", 1442077200000, -40, 13597, 1442066400000, 1442080800000, 1024, -36, 3 ] - - [ "KR", 1442080800000, -33, 13597, 1442070000000, 1442084400000, 1024, -36, 3 ] - - [ "KR", 1442084400000, 314, 13597, 1442077200000, 1442088000000, 1024, -36, 3 ] - - [ "KR", 1442088000000, 524, 13597, 1442080800000, 1442095200000, 1024, -36, 3 ] - - [ "KR", 1442095200000, 827, 13597, 1442084400000, 1442098800000, 1024, -36, 3 ] - - [ "KR", 1442098800000, -36, 13597, 1442088000000, null, 1024, -36, 3 ] - - [ "KW", 1442055600000, -2, 1778, null, 1442070000000, -2, -33, 1 ] - - [ "KW", 1442070000000, 1815, 1778, null, 1442077200000, -2, -33, 1 ] - - [ "KW", 1442077200000, -2, 1778, 1442055600000, 1442080800000, -2, -33, 2 ] - - [ "KW", 1442080800000, -33, 1778, 1442070000000, null, -2, -33, 3 ] - - [ "KZ", 1442034000000, 161, 1261, null, 1442044800000, 161, 91, 1 ] - - [ "KZ", 1442044800000, 401, 1261, null, 1442048400000, 161, 91, 1 ] - - [ "KZ", 1442048400000, 439, 1261, 1442034000000, 1442052000000, 161, 91, 1 ] - - [ "KZ", 1442052000000, 412, 1261, 1442044800000, 1442055600000, 161, 91, 1 ] - - [ "KZ", 1442055600000, 63, 1261, 1442048400000, 1442059200000, 161, 91, 2 ] - - [ "KZ", 1442059200000, 33, 1261, 1442052000000, 1442062800000, 161, 91, 2 ] - - [ "KZ", 1442062800000, 0, 1261, 1442055600000, 1442066400000, 161, 91, 2 ] - - [ "KZ", 1442066400000, 0, 1261, 1442059200000, 1442077200000, 161, 91, 2 ] - - [ "KZ", 1442077200000, -317, 1261, 1442062800000, 1442084400000, 161, 91, 3 ] - - [ "KZ", 1442084400000, -22, 1261, 1442066400000, 1442095200000, 161, 91, 3 ] - - [ "KZ", 1442095200000, 91, 1261, 1442077200000, null, 161, 91, 3 ] - - [ "LB", 1442055600000, -67, -67, null, null, -67, -67, 1 ] - - [ "LK", 1442026800000, 79, 131, null, 1442048400000, 79, -3, 1 ] - - [ "LK", 1442048400000, 8, 131, null, 1442052000000, 79, -3, 1 ] - - [ "LK", 1442052000000, 47, 131, 1442026800000, 1442084400000, 79, -3, 2 ] - - [ "LK", 1442084400000, -3, 131, 1442048400000, null, 79, -3, 3 ] - - [ "LT", 1442080800000, 12, -12, null, 1442098800000, 12, -24, 1 ] - - [ "LT", 1442098800000, -24, -12, null, null, 12, -24, 2 ] - - [ "LU", 1442059200000, 79, 606, null, 1442066400000, 79, 2, 1 ] - - [ "LU", 1442066400000, 0, 606, null, 1442077200000, 79, 2, 1 ] - - [ "LU", 1442077200000, 525, 606, 1442059200000, 1442095200000, 79, 2, 2 ] - - [ "LU", 1442095200000, 2, 606, 1442066400000, null, 79, 2, 3 ] - - [ "LV", 1442095200000, 0, 0, null, null, 0, 0, 1 ] - - [ "MA", 1442019600000, -1, 229, null, 1442055600000, -1, 8, 1 ] - - [ "MA", 1442055600000, 23, 229, null, 1442059200000, -1, 8, 1 ] - - [ "MA", 1442059200000, -56, 229, 1442019600000, 1442062800000, -1, 8, 1 ] - - [ "MA", 1442062800000, 0, 229, 1442055600000, 1442077200000, -1, 8, 2 ] - - [ "MA", 1442077200000, 250, 229, 1442059200000, 1442080800000, -1, 8, 2 ] - - [ "MA", 1442080800000, 5, 229, 1442062800000, 1442098800000, -1, 8, 3 ] - - [ "MA", 1442098800000, 8, 229, 1442077200000, null, -1, 8, 3 ] - - [ "MD", 1442077200000, 6916, 6916, null, null, 6916, 6916, 1 ] - - [ "ME", 1442073600000, 0, 0, null, null, 0, 0, 1 ] - - [ "MH", 1442052000000, 40, 40, null, null, 40, 40, 1 ] - - [ "MK", 1442077200000, -72, -72, null, null, -72, -72, 1 ] - - [ "MM", 1442070000000, 3, 28, null, 1442073600000, 3, 25, 1 ] - - [ "MM", 1442073600000, 25, 28, null, null, 3, 25, 2 ] - - [ "MO", 1442034000000, 30, 48, null, 1442070000000, 30, 18, 1 ] - - [ "MO", 1442070000000, 18, 48, null, null, 30, 18, 2 ] - - [ "MR", 1442080800000, 10, 10, null, null, 10, 10, 1 ] - - [ "MT", 1442048400000, -1, -1, null, null, -1, -1, 1 ] - - [ "MV", 1442073600000, -3, -3, null, null, -3, -3, 1 ] - - [ "MX", 1442016000000, -67, 10472, null, 1442023200000, -67, 28, 1 ] - - [ "MX", 1442023200000, 549, 10472, null, 1442026800000, -67, 28, 1 ] - - [ "MX", 1442026800000, 3642, 10472, 1442016000000, 1442030400000, -67, 28, 1 ] - - [ "MX", 1442030400000, 373, 10472, 1442023200000, 1442034000000, -67, 28, 1 ] - - [ "MX", 1442034000000, 944, 10472, 1442026800000, 1442037600000, -67, 28, 1 ] - - [ "MX", 1442037600000, 4, 10472, 1442030400000, 1442041200000, -67, 28, 1 ] - - [ "MX", 1442041200000, -294, 10472, 1442034000000, 1442066400000, -67, 28, 2 ] - - [ "MX", 1442066400000, -1, 10472, 1442037600000, 1442070000000, -67, 28, 2 ] - - [ "MX", 1442070000000, -1, 10472, 1442041200000, 1442073600000, -67, 28, 2 ] - - [ "MX", 1442073600000, -21, 10472, 1442066400000, 1442077200000, -67, 28, 2 ] - - [ "MX", 1442077200000, 3874, 10472, 1442070000000, 1442080800000, -67, 28, 2 ] - - [ "MX", 1442080800000, -376, 10472, 1442073600000, 1442084400000, -67, 28, 2 ] - - [ "MX", 1442084400000, 981, 10472, 1442077200000, 1442088000000, -67, 28, 3 ] - - [ "MX", 1442088000000, 494, 10472, 1442080800000, 1442091600000, -67, 28, 3 ] - - [ "MX", 1442091600000, 799, 10472, 1442084400000, 1442095200000, -67, 28, 3 ] - - [ "MX", 1442095200000, -456, 10472, 1442088000000, 1442098800000, -67, 28, 3 ] - - [ "MX", 1442098800000, 28, 10472, 1442091600000, null, -67, 28, 3 ] - - [ "MY", 1442019600000, -7, 3207, null, 1442030400000, -7, 739, 1 ] - - [ "MY", 1442030400000, -3, 3207, null, 1442034000000, -7, 739, 1 ] - - [ "MY", 1442034000000, 1028, 3207, 1442019600000, 1442041200000, -7, 739, 1 ] - - [ "MY", 1442041200000, 935, 3207, 1442030400000, 1442044800000, -7, 739, 1 ] - - [ "MY", 1442044800000, -127, 3207, 1442034000000, 1442048400000, -7, 739, 2 ] - - [ "MY", 1442048400000, 649, 3207, 1442041200000, 1442055600000, -7, 739, 2 ] - - [ "MY", 1442055600000, 1, 3207, 1442044800000, 1442059200000, -7, 739, 2 ] - - [ "MY", 1442059200000, 0, 3207, 1442048400000, 1442066400000, -7, 739, 2 ] - - [ "MY", 1442066400000, 1, 3207, 1442055600000, 1442073600000, -7, 739, 3 ] - - [ "MY", 1442073600000, 1, 3207, 1442059200000, 1442077200000, -7, 739, 3 ] - - [ "MY", 1442077200000, -10, 3207, 1442066400000, 1442098800000, -7, 739, 3 ] - - [ "MY", 1442098800000, 739, 3207, 1442073600000, null, -7, 739, 3 ] - - [ "NG", 1442052000000, 208, 214, null, 1442070000000, 208, 6, 1 ] - - [ "NG", 1442070000000, 6, 214, null, null, 208, 6, 2 ] - - [ "NL", 1442034000000, 0, 12162, null, 1442044800000, 0, 4, 1 ] - - [ "NL", 1442044800000, 16, 12162, null, 1442048400000, 0, 4, 1 ] - - [ "NL", 1442048400000, 1303, 12162, 1442034000000, 1442052000000, 0, 4, 1 ] - - [ "NL", 1442052000000, 53, 12162, 1442044800000, 1442055600000, 0, 4, 1 ] - - [ "NL", 1442055600000, 105, 12162, 1442048400000, 1442059200000, 0, 4, 1 ] - - [ "NL", 1442059200000, 206, 12162, 1442052000000, 1442062800000, 0, 4, 1 ] - - [ "NL", 1442062800000, -30, 12162, 1442055600000, 1442066400000, 0, 4, 2 ] - - [ "NL", 1442066400000, 61, 12162, 1442059200000, 1442070000000, 0, 4, 2 ] - - [ "NL", 1442070000000, -84, 12162, 1442062800000, 1442073600000, 0, 4, 2 ] - - [ "NL", 1442073600000, 166, 12162, 1442066400000, 1442077200000, 0, 4, 2 ] - - [ "NL", 1442077200000, 878, 12162, 1442070000000, 1442080800000, 0, 4, 2 ] - - [ "NL", 1442080800000, 8947, 12162, 1442073600000, 1442084400000, 0, 4, 2 ] - - [ "NL", 1442084400000, 436, 12162, 1442077200000, 1442088000000, 0, 4, 3 ] - - [ "NL", 1442088000000, 12, 12162, 1442080800000, 1442091600000, 0, 4, 3 ] - - [ "NL", 1442091600000, 19, 12162, 1442084400000, 1442095200000, 0, 4, 3 ] - - [ "NL", 1442095200000, 70, 12162, 1442088000000, 1442098800000, 0, 4, 3 ] - - [ "NL", 1442098800000, 4, 12162, 1442091600000, null, 0, 4, 3 ] - - [ "NO", 1442019600000, 48, 432, null, 1442048400000, 48, 2, 1 ] - - [ "NO", 1442048400000, -447, 432, null, 1442052000000, 48, 2, 1 ] - - [ "NO", 1442052000000, 447, 432, 1442019600000, 1442055600000, 48, 2, 1 ] - - [ "NO", 1442055600000, 29, 432, 1442048400000, 1442066400000, 48, 2, 1 ] - - [ "NO", 1442066400000, 71, 432, 1442052000000, 1442073600000, 48, 2, 2 ] - - [ "NO", 1442073600000, 222, 432, 1442055600000, 1442080800000, 48, 2, 2 ] - - [ "NO", 1442080800000, 31, 432, 1442066400000, 1442088000000, 48, 2, 2 ] - - [ "NO", 1442088000000, 15, 432, 1442073600000, 1442091600000, 48, 2, 2 ] - - [ "NO", 1442091600000, 15, 432, 1442080800000, 1442095200000, 48, 2, 3 ] - - [ "NO", 1442095200000, -1, 432, 1442088000000, 1442098800000, 48, 2, 3 ] - - [ "NO", 1442098800000, 2, 432, 1442091600000, null, 48, 2, 3 ] - - [ "NP", 1442048400000, 61, 61, null, null, 61, 61, 1 ] - - [ "NZ", 1442019600000, 28, 1693, null, 1442026800000, 28, -2, 1 ] - - [ "NZ", 1442026800000, 635, 1693, null, 1442037600000, 28, -2, 1 ] - - [ "NZ", 1442037600000, 66, 1693, 1442019600000, 1442048400000, 28, -2, 1 ] - - [ "NZ", 1442048400000, 189, 1693, 1442026800000, 1442059200000, 28, -2, 2 ] - - [ "NZ", 1442059200000, 428, 1693, 1442037600000, 1442084400000, 28, -2, 2 ] - - [ "NZ", 1442084400000, -52, 1693, 1442048400000, 1442088000000, 28, -2, 2 ] - - [ "NZ", 1442088000000, 405, 1693, 1442059200000, 1442095200000, 28, -2, 3 ] - - [ "NZ", 1442095200000, -4, 1693, 1442084400000, 1442098800000, 28, -2, 3 ] - - [ "NZ", 1442098800000, -2, 1693, 1442088000000, null, 28, -2, 3 ] - - [ "OM", 1442052000000, 0, 0, null, null, 0, 0, 1 ] - - [ "PA", 1442026800000, 0, 0, null, null, 0, 0, 1 ] - - [ "PE", 1442019600000, 523, 2134, null, 1442023200000, 523, 1861, 1 ] - - [ "PE", 1442023200000, 26, 2134, null, 1442026800000, 523, 1861, 1 ] - - [ "PE", 1442026800000, -12, 2134, 1442019600000, 1442062800000, 523, 1861, 1 ] - - [ "PE", 1442062800000, -12, 2134, 1442023200000, 1442077200000, 523, 1861, 2 ] - - [ "PE", 1442077200000, -163, 2134, 1442026800000, 1442080800000, 523, 1861, 2 ] - - [ "PE", 1442080800000, -2, 2134, 1442062800000, 1442084400000, 523, 1861, 2 ] - - [ "PE", 1442084400000, -68, 2134, 1442077200000, 1442095200000, 523, 1861, 3 ] - - [ "PE", 1442095200000, -19, 2134, 1442080800000, 1442098800000, 523, 1861, 3 ] - - [ "PE", 1442098800000, 1861, 2134, 1442084400000, null, 523, 1861, 3 ] - - [ "PH", 1442019600000, 6, 6613, null, 1442023200000, 6, 8, 1 ] - - [ "PH", 1442023200000, 459, 6613, null, 1442026800000, 6, 8, 1 ] - - [ "PH", 1442026800000, 910, 6613, 1442019600000, 1442030400000, 6, 8, 1 ] - - [ "PH", 1442030400000, 26, 6613, 1442023200000, 1442034000000, 6, 8, 1 ] - - [ "PH", 1442034000000, 59, 6613, 1442026800000, 1442037600000, 6, 8, 1 ] - - [ "PH", 1442037600000, 17, 6613, 1442030400000, 1442041200000, 6, 8, 1 ] - - [ "PH", 1442041200000, 0, 6613, 1442034000000, 1442044800000, 6, 8, 1 ] - - [ "PH", 1442044800000, 55, 6613, 1442037600000, 1442048400000, 6, 8, 2 ] - - [ "PH", 1442048400000, 62, 6613, 1442041200000, 1442052000000, 6, 8, 2 ] - - [ "PH", 1442052000000, 22, 6613, 1442044800000, 1442055600000, 6, 8, 2 ] - - [ "PH", 1442055600000, 1969, 6613, 1442048400000, 1442059200000, 6, 8, 2 ] - - [ "PH", 1442059200000, 273, 6613, 1442052000000, 1442062800000, 6, 8, 2 ] - - [ "PH", 1442062800000, 171, 6613, 1442055600000, 1442066400000, 6, 8, 2 ] - - [ "PH", 1442066400000, 1880, 6613, 1442059200000, 1442070000000, 6, 8, 2 ] - - [ "PH", 1442070000000, 34, 6613, 1442062800000, 1442073600000, 6, 8, 3 ] - - [ "PH", 1442073600000, -227, 6613, 1442066400000, 1442077200000, 6, 8, 3 ] - - [ "PH", 1442077200000, 2, 6613, 1442070000000, 1442080800000, 6, 8, 3 ] - - [ "PH", 1442080800000, 32, 6613, 1442073600000, 1442084400000, 6, 8, 3 ] - - [ "PH", 1442084400000, 39, 6613, 1442077200000, 1442091600000, 6, 8, 3 ] - - [ "PH", 1442091600000, 816, 6613, 1442080800000, 1442098800000, 6, 8, 3 ] - - [ "PH", 1442098800000, 8, 6613, 1442084400000, null, 6, 8, 3 ] - - [ "PK", 1442019600000, 335, 641, null, 1442026800000, 335, 43, 1 ] - - [ "PK", 1442026800000, 101, 641, null, 1442037600000, 335, 43, 1 ] - - [ "PK", 1442037600000, 100, 641, 1442019600000, 1442041200000, 335, 43, 1 ] - - [ "PK", 1442041200000, 24, 641, 1442026800000, 1442048400000, 335, 43, 2 ] - - [ "PK", 1442048400000, 15, 641, 1442037600000, 1442062800000, 335, 43, 2 ] - - [ "PK", 1442062800000, 23, 641, 1442041200000, 1442070000000, 335, 43, 3 ] - - [ "PK", 1442070000000, 43, 641, 1442048400000, null, 335, 43, 3 ] - - [ "PL", 1442037600000, 95, 9815, null, 1442041200000, 95, -9, 1 ] - - [ "PL", 1442041200000, 281, 9815, null, 1442044800000, 95, -9, 1 ] - - [ "PL", 1442044800000, 319, 9815, 1442037600000, 1442048400000, 95, -9, 1 ] - - [ "PL", 1442048400000, 366, 9815, 1442041200000, 1442052000000, 95, -9, 1 ] - - [ "PL", 1442052000000, 330, 9815, 1442044800000, 1442055600000, 95, -9, 1 ] - - [ "PL", 1442055600000, 410, 9815, 1442048400000, 1442059200000, 95, -9, 1 ] - - [ "PL", 1442059200000, 199, 9815, 1442052000000, 1442062800000, 95, -9, 2 ] - - [ "PL", 1442062800000, 4171, 9815, 1442055600000, 1442066400000, 95, -9, 2 ] - - [ "PL", 1442066400000, 34, 9815, 1442059200000, 1442070000000, 95, -9, 2 ] - - [ "PL", 1442070000000, 146, 9815, 1442062800000, 1442073600000, 95, -9, 2 ] - - [ "PL", 1442073600000, 30, 9815, 1442066400000, 1442077200000, 95, -9, 2 ] - - [ "PL", 1442077200000, 324, 9815, 1442070000000, 1442080800000, 95, -9, 2 ] - - [ "PL", 1442080800000, 7, 9815, 1442073600000, 1442084400000, 95, -9, 3 ] - - [ "PL", 1442084400000, 13, 9815, 1442077200000, 1442088000000, 95, -9, 3 ] - - [ "PL", 1442088000000, 346, 9815, 1442080800000, 1442091600000, 95, -9, 3 ] - - [ "PL", 1442091600000, 902, 9815, 1442084400000, 1442095200000, 95, -9, 3 ] - - [ "PL", 1442095200000, 1851, 9815, 1442088000000, 1442098800000, 95, -9, 3 ] - - [ "PL", 1442098800000, -9, 9815, 1442091600000, null, 95, -9, 3 ] - - [ "PR", 1442026800000, 22, 23, null, 1442030400000, 22, 29, 1 ] - - [ "PR", 1442030400000, 2, 23, null, 1442059200000, 22, 29, 1 ] - - [ "PR", 1442059200000, -35, 23, 1442026800000, 1442077200000, 22, 29, 2 ] - - [ "PR", 1442077200000, 5, 23, 1442030400000, 1442095200000, 22, 29, 2 ] - - [ "PR", 1442095200000, 29, 23, 1442059200000, null, 22, 29, 3 ] - - [ "PT", 1442019600000, 172, 4037, null, 1442044800000, 172, 2, 1 ] - - [ "PT", 1442044800000, 11, 4037, null, 1442052000000, 172, 2, 1 ] - - [ "PT", 1442052000000, 102, 4037, 1442019600000, 1442066400000, 172, 2, 1 ] - - [ "PT", 1442066400000, 12, 4037, 1442044800000, 1442070000000, 172, 2, 1 ] - - [ "PT", 1442070000000, 3470, 4037, 1442052000000, 1442077200000, 172, 2, 2 ] - - [ "PT", 1442077200000, -75, 4037, 1442066400000, 1442080800000, 172, 2, 2 ] - - [ "PT", 1442080800000, -79, 4037, 1442070000000, 1442088000000, 172, 2, 2 ] - - [ "PT", 1442088000000, 403, 4037, 1442077200000, 1442095200000, 172, 2, 3 ] - - [ "PT", 1442095200000, 19, 4037, 1442080800000, 1442098800000, 172, 2, 3 ] - - [ "PT", 1442098800000, 2, 4037, 1442088000000, null, 172, 2, 3 ] - - [ "PY", 1442019600000, 1, 634, null, 1442080800000, 1, 628, 1 ] - - [ "PY", 1442080800000, 5, 634, null, 1442084400000, 1, 628, 2 ] - - [ "PY", 1442084400000, 628, 634, 1442019600000, null, 1, 628, 3 ] - - [ "QA", 1442041200000, 13, 13, null, null, 13, 13, 1 ] - - [ "RO", 1442034000000, 68, 2893, null, 1442041200000, 68, 824, 1 ] - - [ "RO", 1442041200000, 845, 2893, null, 1442044800000, 68, 824, 1 ] - - [ "RO", 1442044800000, 284, 2893, 1442034000000, 1442052000000, 68, 824, 1 ] - - [ "RO", 1442052000000, 319, 2893, 1442041200000, 1442055600000, 68, 824, 1 ] - - [ "RO", 1442055600000, 26, 2893, 1442044800000, 1442062800000, 68, 824, 2 ] - - [ "RO", 1442062800000, 541, 2893, 1442052000000, 1442070000000, 68, 824, 2 ] - - [ "RO", 1442070000000, -29, 2893, 1442055600000, 1442073600000, 68, 824, 2 ] - - [ "RO", 1442073600000, 15, 2893, 1442062800000, 1442091600000, 68, 824, 3 ] - - [ "RO", 1442091600000, 0, 2893, 1442070000000, 1442095200000, 68, 824, 3 ] - - [ "RO", 1442095200000, 824, 2893, 1442073600000, null, 68, 824, 3 ] - - [ "RS", 1442019600000, 6, 906, null, 1442062800000, 6, -15, 1 ] - - [ "RS", 1442062800000, 13, 906, null, 1442066400000, 6, -15, 1 ] - - [ "RS", 1442066400000, 0, 906, 1442019600000, 1442073600000, 6, -15, 1 ] - - [ "RS", 1442073600000, 813, 906, 1442062800000, 1442080800000, 6, -15, 2 ] - - [ "RS", 1442080800000, 0, 906, 1442066400000, 1442084400000, 6, -15, 2 ] - - [ "RS", 1442084400000, 89, 906, 1442073600000, 1442091600000, 6, -15, 3 ] - - [ "RS", 1442091600000, -15, 906, 1442080800000, null, 6, -15, 3 ] - - [ "RU", 1442019600000, 2214, 48104, null, 1442023200000, 2214, 12098, 1 ] - - [ "RU", 1442023200000, 299, 48104, null, 1442026800000, 2214, 12098, 1 ] - - [ "RU", 1442026800000, 0, 48104, 1442019600000, 1442030400000, 2214, 12098, 1 ] - - [ "RU", 1442030400000, 76, 48104, 1442023200000, 1442034000000, 2214, 12098, 1 ] - - [ "RU", 1442034000000, 658, 48104, 1442026800000, 1442037600000, 2214, 12098, 1 ] - - [ "RU", 1442037600000, -324, 48104, 1442030400000, 1442041200000, 2214, 12098, 1 ] - - [ "RU", 1442041200000, 580, 48104, 1442034000000, 1442044800000, 2214, 12098, 1 ] - - [ "RU", 1442044800000, 2564, 48104, 1442037600000, 1442048400000, 2214, 12098, 1 ] - - [ "RU", 1442048400000, 1027, 48104, 1442041200000, 1442052000000, 2214, 12098, 2 ] - - [ "RU", 1442052000000, 1214, 48104, 1442044800000, 1442055600000, 2214, 12098, 2 ] - - [ "RU", 1442055600000, 499, 48104, 1442048400000, 1442059200000, 2214, 12098, 2 ] - - [ "RU", 1442059200000, 3902, 48104, 1442052000000, 1442062800000, 2214, 12098, 2 ] - - [ "RU", 1442062800000, 168, 48104, 1442055600000, 1442066400000, 2214, 12098, 2 ] - - [ "RU", 1442066400000, 2047, 48104, 1442059200000, 1442070000000, 2214, 12098, 2 ] - - [ "RU", 1442070000000, 4706, 48104, 1442062800000, 1442073600000, 2214, 12098, 2 ] - - [ "RU", 1442073600000, 1618, 48104, 1442066400000, 1442077200000, 2214, 12098, 2 ] - - [ "RU", 1442077200000, 1162, 48104, 1442070000000, 1442080800000, 2214, 12098, 3 ] - - [ "RU", 1442080800000, 655, 48104, 1442073600000, 1442084400000, 2214, 12098, 3 ] - - [ "RU", 1442084400000, 6461, 48104, 1442077200000, 1442088000000, 2214, 12098, 3 ] - - [ "RU", 1442088000000, 2596, 48104, 1442080800000, 1442091600000, 2214, 12098, 3 ] - - [ "RU", 1442091600000, 3449, 48104, 1442084400000, 1442095200000, 2214, 12098, 3 ] - - [ "RU", 1442095200000, 435, 48104, 1442088000000, 1442098800000, 2214, 12098, 3 ] - - [ "RU", 1442098800000, 12098, 48104, 1442091600000, null, 2214, 12098, 3 ] - - [ "SA", 1442037600000, -97, 1614, null, 1442048400000, -97, 458, 1 ] - - [ "SA", 1442048400000, 14, 1614, null, 1442055600000, -97, 458, 1 ] - - [ "SA", 1442055600000, 11, 1614, 1442037600000, 1442059200000, -97, 458, 1 ] - - [ "SA", 1442059200000, 0, 1614, 1442048400000, 1442066400000, -97, 458, 2 ] - - [ "SA", 1442066400000, 1276, 1614, 1442055600000, 1442073600000, -97, 458, 2 ] - - [ "SA", 1442073600000, 2, 1614, 1442059200000, 1442077200000, -97, 458, 2 ] - - [ "SA", 1442077200000, -50, 1614, 1442066400000, 1442084400000, -97, 458, 3 ] - - [ "SA", 1442084400000, 458, 1614, 1442073600000, null, -97, 458, 3 ] - - [ "SE", 1442019600000, 109, 1838, null, 1442023200000, 109, 0, 1 ] - - [ "SE", 1442023200000, 3, 1838, null, 1442030400000, 109, 0, 1 ] - - [ "SE", 1442030400000, 30, 1838, 1442019600000, 1442041200000, 109, 0, 1 ] - - [ "SE", 1442041200000, 91, 1838, 1442023200000, 1442048400000, 109, 0, 1 ] - - [ "SE", 1442048400000, -145, 1838, 1442030400000, 1442052000000, 109, 0, 1 ] - - [ "SE", 1442052000000, 1, 1838, 1442041200000, 1442055600000, 109, 0, 2 ] - - [ "SE", 1442055600000, -5, 1838, 1442048400000, 1442059200000, 109, 0, 2 ] - - [ "SE", 1442059200000, 1476, 1838, 1442052000000, 1442066400000, 109, 0, 2 ] - - [ "SE", 1442066400000, 14, 1838, 1442055600000, 1442070000000, 109, 0, 2 ] - - [ "SE", 1442070000000, 78, 1838, 1442059200000, 1442080800000, 109, 0, 2 ] - - [ "SE", 1442080800000, 89, 1838, 1442066400000, 1442084400000, 109, 0, 3 ] - - [ "SE", 1442084400000, 37, 1838, 1442070000000, 1442091600000, 109, 0, 3 ] - - [ "SE", 1442091600000, -1, 1838, 1442080800000, 1442095200000, 109, 0, 3 ] - - [ "SE", 1442095200000, 61, 1838, 1442084400000, 1442098800000, 109, 0, 3 ] - - [ "SE", 1442098800000, 0, 1838, 1442091600000, null, 109, 0, 3 ] - - [ "SG", 1442026800000, 2758, 3338, null, 1442030400000, 2758, 0, 1 ] - - [ "SG", 1442030400000, 1, 3338, null, 1442037600000, 2758, 0, 1 ] - - [ "SG", 1442037600000, 3, 3338, 1442026800000, 1442041200000, 2758, 0, 1 ] - - [ "SG", 1442041200000, 59, 3338, 1442030400000, 1442044800000, 2758, 0, 2 ] - - [ "SG", 1442044800000, 77, 3338, 1442037600000, 1442048400000, 2758, 0, 2 ] - - [ "SG", 1442048400000, 52, 3338, 1442041200000, 1442062800000, 2758, 0, 2 ] - - [ "SG", 1442062800000, 388, 3338, 1442044800000, 1442066400000, 2758, 0, 3 ] - - [ "SG", 1442066400000, 0, 3338, 1442048400000, null, 2758, 0, 3 ] - - [ "SI", 1442080800000, -45, -36, null, 1442091600000, -45, 9, 1 ] - - [ "SI", 1442091600000, 9, -36, null, null, -45, 9, 2 ] - - [ "SK", 1442037600000, -1, 379, null, 1442052000000, -1, 7, 1 ] - - [ "SK", 1442052000000, 13, 379, null, 1442062800000, -1, 7, 1 ] - - [ "SK", 1442062800000, 6, 379, 1442037600000, 1442073600000, -1, 7, 2 ] - - [ "SK", 1442073600000, 446, 379, 1442052000000, 1442084400000, -1, 7, 2 ] - - [ "SK", 1442084400000, -92, 379, 1442062800000, 1442098800000, -1, 7, 3 ] - - [ "SK", 1442098800000, 7, 379, 1442073600000, null, -1, 7, 3 ] - - [ "SV", 1442019600000, -1, 114, null, 1442084400000, -1, 9, 1 ] - - [ "SV", 1442084400000, 106, 114, null, 1442088000000, -1, 9, 2 ] - - [ "SV", 1442088000000, 9, 114, 1442019600000, null, -1, 9, 3 ] - - [ "TH", 1442034000000, 0, 24, null, 1442041200000, 0, 13, 1 ] - - [ "TH", 1442041200000, 3, 24, null, 1442044800000, 0, 13, 1 ] - - [ "TH", 1442044800000, 110, 24, 1442034000000, 1442052000000, 0, 13, 1 ] - - [ "TH", 1442052000000, -22, 24, 1442041200000, 1442055600000, 0, 13, 2 ] - - [ "TH", 1442055600000, 0, 24, 1442044800000, 1442062800000, 0, 13, 2 ] - - [ "TH", 1442062800000, -46, 24, 1442052000000, 1442066400000, 0, 13, 2 ] - - [ "TH", 1442066400000, -34, 24, 1442055600000, 1442070000000, 0, 13, 3 ] - - [ "TH", 1442070000000, 0, 24, 1442062800000, 1442084400000, 0, 13, 3 ] - - [ "TH", 1442084400000, 13, 24, 1442066400000, null, 0, 13, 3 ] - - [ "TJ", 1442048400000, 1471, 1471, null, null, 1471, 1471, 1 ] - - [ "TN", 1442098800000, -9, -9, null, null, -9, -9, 1 ] - - [ "TR", 1442023200000, 306, 7078, null, 1442041200000, 306, -29, 1 ] - - [ "TR", 1442041200000, 1, 7078, null, 1442044800000, 306, -29, 1 ] - - [ "TR", 1442044800000, 41, 7078, 1442023200000, 1442048400000, 306, -29, 1 ] - - [ "TR", 1442048400000, 88, 7078, 1442041200000, 1442052000000, 306, -29, 1 ] - - [ "TR", 1442052000000, 41, 7078, 1442044800000, 1442055600000, 306, -29, 1 ] - - [ "TR", 1442055600000, 299, 7078, 1442048400000, 1442062800000, 306, -29, 2 ] - - [ "TR", 1442062800000, 315, 7078, 1442052000000, 1442066400000, 306, -29, 2 ] - - [ "TR", 1442066400000, 85, 7078, 1442055600000, 1442070000000, 306, -29, 2 ] - - [ "TR", 1442070000000, 236, 7078, 1442062800000, 1442077200000, 306, -29, 2 ] - - [ "TR", 1442077200000, 89, 7078, 1442066400000, 1442080800000, 306, -29, 2 ] - - [ "TR", 1442080800000, -1, 7078, 1442070000000, 1442084400000, 306, -29, 3 ] - - [ "TR", 1442084400000, 170, 7078, 1442077200000, 1442088000000, 306, -29, 3 ] - - [ "TR", 1442088000000, 2389, 7078, 1442080800000, 1442091600000, 306, -29, 3 ] - - [ "TR", 1442091600000, 3048, 7078, 1442084400000, 1442095200000, 306, -29, 3 ] - - [ "TR", 1442095200000, -29, 7078, 1442088000000, null, 306, -29, 3 ] - - [ "TT", 1442088000000, 9, 9, null, null, 9, 9, 1 ] - - [ "TW", 1442016000000, 92, 3656, null, 1442019600000, 92, -60, 1 ] - - [ "TW", 1442019600000, 0, 3656, null, 1442023200000, 92, -60, 1 ] - - [ "TW", 1442023200000, 97, 3656, 1442016000000, 1442026800000, 92, -60, 1 ] - - [ "TW", 1442026800000, 680, 3656, 1442019600000, 1442030400000, 92, -60, 1 ] - - [ "TW", 1442030400000, 0, 3656, 1442023200000, 1442034000000, 92, -60, 1 ] - - [ "TW", 1442034000000, 143, 3656, 1442026800000, 1442037600000, 92, -60, 1 ] - - [ "TW", 1442037600000, 266, 3656, 1442030400000, 1442041200000, 92, -60, 1 ] - - [ "TW", 1442041200000, 366, 3656, 1442034000000, 1442044800000, 92, -60, 1 ] - - [ "TW", 1442044800000, 24, 3656, 1442037600000, 1442048400000, 92, -60, 2 ] - - [ "TW", 1442048400000, 75, 3656, 1442041200000, 1442052000000, 92, -60, 2 ] - - [ "TW", 1442052000000, 24, 3656, 1442044800000, 1442055600000, 92, -60, 2 ] - - [ "TW", 1442055600000, 48, 3656, 1442048400000, 1442059200000, 92, -60, 2 ] - - [ "TW", 1442059200000, -157, 3656, 1442052000000, 1442062800000, 92, -60, 2 ] - - [ "TW", 1442062800000, -272, 3656, 1442055600000, 1442066400000, 92, -60, 2 ] - - [ "TW", 1442066400000, 624, 3656, 1442059200000, 1442070000000, 92, -60, 2 ] - - [ "TW", 1442070000000, 485, 3656, 1442062800000, 1442073600000, 92, -60, 3 ] - - [ "TW", 1442073600000, 772, 3656, 1442066400000, 1442077200000, 92, -60, 3 ] - - [ "TW", 1442077200000, 502, 3656, 1442070000000, 1442080800000, 92, -60, 3 ] - - [ "TW", 1442080800000, 24, 3656, 1442073600000, 1442084400000, 92, -60, 3 ] - - [ "TW", 1442084400000, 0, 3656, 1442077200000, 1442095200000, 92, -60, 3 ] - - [ "TW", 1442095200000, -77, 3656, 1442080800000, 1442098800000, 92, -60, 3 ] - - [ "TW", 1442098800000, -60, 3656, 1442084400000, null, 92, -60, 3 ] - - [ "UA", 1442034000000, 3468, 24898, null, 1442037600000, 3468, 38, 1 ] - - [ "UA", 1442037600000, -1, 24898, null, 1442041200000, 3468, 38, 1 ] - - [ "UA", 1442041200000, 74, 24898, 1442034000000, 1442044800000, 3468, 38, 1 ] - - [ "UA", 1442044800000, 280, 24898, 1442037600000, 1442048400000, 3468, 38, 1 ] - - [ "UA", 1442048400000, 2, 24898, 1442041200000, 1442052000000, 3468, 38, 1 ] - - [ "UA", 1442052000000, 410, 24898, 1442044800000, 1442055600000, 3468, 38, 1 ] - - [ "UA", 1442055600000, 14202, 24898, 1442048400000, 1442059200000, 3468, 38, 1 ] - - [ "UA", 1442059200000, -2, 24898, 1442052000000, 1442062800000, 3468, 38, 2 ] - - [ "UA", 1442062800000, 773, 24898, 1442055600000, 1442066400000, 3468, 38, 2 ] - - [ "UA", 1442066400000, 296, 24898, 1442059200000, 1442070000000, 3468, 38, 2 ] - - [ "UA", 1442070000000, 1733, 24898, 1442062800000, 1442073600000, 3468, 38, 2 ] - - [ "UA", 1442073600000, 4241, 24898, 1442066400000, 1442077200000, 3468, 38, 2 ] - - [ "UA", 1442077200000, -181, 24898, 1442070000000, 1442080800000, 3468, 38, 2 ] - - [ "UA", 1442080800000, -1, 24898, 1442073600000, 1442084400000, 3468, 38, 3 ] - - [ "UA", 1442084400000, 5, 24898, 1442077200000, 1442088000000, 3468, 38, 3 ] - - [ "UA", 1442088000000, -21, 24898, 1442080800000, 1442091600000, 3468, 38, 3 ] - - [ "UA", 1442091600000, -388, 24898, 1442084400000, 1442095200000, 3468, 38, 3 ] - - [ "UA", 1442095200000, -30, 24898, 1442088000000, 1442098800000, 3468, 38, 3 ] - - [ "UA", 1442098800000, 38, 24898, 1442091600000, null, 3468, 38, 3 ] - - [ "UG", 1442070000000, 1, 1, null, null, 1, 1, 1 ] - - [ "US", 1442016000000, 0, 38882, null, 1442019600000, 0, 3575, 1 ] - - [ "US", 1442019600000, 1043, 38882, null, 1442023200000, 0, 3575, 1 ] - - [ "US", 1442023200000, 2844, 38882, 1442016000000, 1442026800000, 0, 3575, 1 ] - - [ "US", 1442026800000, 1512, 38882, 1442019600000, 1442030400000, 0, 3575, 1 ] - - [ "US", 1442030400000, 2023, 38882, 1442023200000, 1442034000000, 0, 3575, 1 ] - - [ "US", 1442034000000, 3648, 38882, 1442026800000, 1442037600000, 0, 3575, 1 ] - - [ "US", 1442037600000, 3675, 38882, 1442030400000, 1442041200000, 0, 3575, 1 ] - - [ "US", 1442041200000, 1999, 38882, 1442034000000, 1442044800000, 0, 3575, 1 ] - - [ "US", 1442044800000, 139, 38882, 1442037600000, 1442048400000, 0, 3575, 2 ] - - [ "US", 1442048400000, -466, 38882, 1442041200000, 1442052000000, 0, 3575, 2 ] - - [ "US", 1442052000000, -2, 38882, 1442044800000, 1442055600000, 0, 3575, 2 ] - - [ "US", 1442055600000, 156, 38882, 1442048400000, 1442059200000, 0, 3575, 2 ] - - [ "US", 1442059200000, 11, 38882, 1442052000000, 1442062800000, 0, 3575, 2 ] - - [ "US", 1442062800000, 47, 38882, 1442055600000, 1442066400000, 0, 3575, 2 ] - - [ "US", 1442066400000, 772, 38882, 1442059200000, 1442070000000, 0, 3575, 2 ] - - [ "US", 1442070000000, 3505, 38882, 1442062800000, 1442073600000, 0, 3575, 2 ] - - [ "US", 1442073600000, 1100, 38882, 1442066400000, 1442077200000, 0, 3575, 3 ] - - [ "US", 1442077200000, 2168, 38882, 1442070000000, 1442080800000, 0, 3575, 3 ] - - [ "US", 1442080800000, 4001, 38882, 1442073600000, 1442084400000, 0, 3575, 3 ] - - [ "US", 1442084400000, 2523, 38882, 1442077200000, 1442088000000, 0, 3575, 3 ] - - [ "US", 1442088000000, 1691, 38882, 1442080800000, 1442091600000, 0, 3575, 3 ] - - [ "US", 1442091600000, 2502, 38882, 1442084400000, 1442095200000, 0, 3575, 3 ] - - [ "US", 1442095200000, 416, 38882, 1442088000000, 1442098800000, 0, 3575, 3 ] - - [ "US", 1442098800000, 3575, 38882, 1442091600000, null, 0, 3575, 3 ] - - [ "UY", 1442019600000, 77, 936, null, 1442023200000, 77, 23, 1 ] - - [ "UY", 1442023200000, 517, 936, null, 1442026800000, 77, 23, 1 ] - - [ "UY", 1442026800000, 76, 936, 1442019600000, 1442037600000, 77, 23, 1 ] - - [ "UY", 1442037600000, 1, 936, 1442023200000, 1442070000000, 77, 23, 2 ] - - [ "UY", 1442070000000, 284, 936, 1442026800000, 1442073600000, 77, 23, 2 ] - - [ "UY", 1442073600000, -42, 936, 1442037600000, 1442077200000, 77, 23, 3 ] - - [ "UY", 1442077200000, 23, 936, 1442070000000, null, 77, 23, 3 ] - - [ "UZ", 1442044800000, 1369, 1369, null, null, 1369, 1369, 1 ] - - [ "VE", 1442023200000, 115, 1101, null, 1442026800000, 115, 9, 1 ] - - [ "VE", 1442026800000, -17, 1101, null, 1442030400000, 115, 9, 1 ] - - [ "VE", 1442030400000, 51, 1101, 1442023200000, 1442034000000, 115, 9, 1 ] - - [ "VE", 1442034000000, -2, 1101, 1442026800000, 1442066400000, 115, 9, 1 ] - - [ "VE", 1442066400000, 18, 1101, 1442030400000, 1442070000000, 115, 9, 2 ] - - [ "VE", 1442070000000, 420, 1101, 1442034000000, 1442077200000, 115, 9, 2 ] - - [ "VE", 1442077200000, 412, 1101, 1442066400000, 1442084400000, 115, 9, 2 ] - - [ "VE", 1442084400000, 60, 1101, 1442070000000, 1442095200000, 115, 9, 3 ] - - [ "VE", 1442095200000, 35, 1101, 1442077200000, 1442098800000, 115, 9, 3 ] - - [ "VE", 1442098800000, 9, 1101, 1442084400000, null, 115, 9, 3 ] - - [ "VG", 1442062800000, -238, -238, null, null, -238, -238, 1 ] - - [ "VN", 1442023200000, -9, 1560, null, 1442026800000, -9, -10, 1 ] - - [ "VN", 1442026800000, 63, 1560, null, 1442034000000, -9, -10, 1 ] - - [ "VN", 1442034000000, -29, 1560, 1442023200000, 1442037600000, -9, -10, 1 ] - - [ "VN", 1442037600000, -11, 1560, 1442026800000, 1442041200000, -9, -10, 1 ] - - [ "VN", 1442041200000, 0, 1560, 1442034000000, 1442048400000, -9, -10, 1 ] - - [ "VN", 1442048400000, -15, 1560, 1442037600000, 1442052000000, -9, -10, 2 ] - - [ "VN", 1442052000000, 90, 1560, 1442041200000, 1442055600000, -9, -10, 2 ] - - [ "VN", 1442055600000, 37, 1560, 1442048400000, 1442059200000, -9, -10, 2 ] - - [ "VN", 1442059200000, 8, 1560, 1442052000000, 1442062800000, -9, -10, 2 ] - - [ "VN", 1442062800000, 146, 1560, 1442055600000, 1442066400000, -9, -10, 3 ] - - [ "VN", 1442066400000, 811, 1560, 1442059200000, 1442070000000, -9, -10, 3 ] - - [ "VN", 1442070000000, 479, 1560, 1442062800000, 1442084400000, -9, -10, 3 ] - - [ "VN", 1442084400000, -10, 1560, 1442066400000, null, -9, -10, 3 ] - - [ "ZA", 1442034000000, -3, 127, null, 1442048400000, -3, 1, 1 ] - - [ "ZA", 1442048400000, 79, 127, null, 1442059200000, -3, 1, 1 ] - - [ "ZA", 1442059200000, 50, 127, 1442034000000, 1442070000000, -3, 1, 2 ] - - [ "ZA", 1442070000000, 0, 127, 1442048400000, 1442091600000, -3, 1, 2 ] - - [ "ZA", 1442091600000, 1, 127, 1442059200000, null, -3, 1, 3 ] - - [ "ZM", 1442041200000, 133, 133, null, null, 133, 133, 1 ] - - [ "ZW", 1442044800000, 0, 254, null, 1442048400000, 0, 254, 1 ] - - [ "ZW", 1442048400000, 254, 254, null, null, 0, 254, 2 ] \ No newline at end of file + - [null,1442016000000,29873,8414700,null,1442019600000,29873,276159,1] + - [null,1442019600000,173892,8414700,null,1442023200000,29873,276159,1] + - [null,1442023200000,399636,8414700,1442016000000,1442026800000,29873,276159,1] + - [null,1442026800000,252626,8414700,1442019600000,1442030400000,29873,276159,1] + - [null,1442030400000,166672,8414700,1442023200000,1442034000000,29873,276159,1] + - [null,1442034000000,330957,8414700,1442026800000,1442037600000,29873,276159,1] + - [null,1442037600000,200605,8414700,1442030400000,1442041200000,29873,276159,1] + - [null,1442041200000,543450,8414700,1442034000000,1442044800000,29873,276159,1] + - [null,1442044800000,316002,8414700,1442037600000,1442048400000,29873,276159,2] + - [null,1442048400000,308316,8414700,1442041200000,1442052000000,29873,276159,2] + - [null,1442052000000,787370,8414700,1442044800000,1442055600000,29873,276159,2] + - [null,1442055600000,283958,8414700,1442048400000,1442059200000,29873,276159,2] + - [null,1442059200000,459297,8414700,1442052000000,1442062800000,29873,276159,2] + - [null,1442062800000,389465,8414700,1442055600000,1442066400000,29873,276159,2] + - [null,1442066400000,351584,8414700,1442059200000,1442070000000,29873,276159,2] + - [null,1442070000000,358515,8414700,1442062800000,1442073600000,29873,276159,2] + - [null,1442073600000,375394,8414700,1442066400000,1442077200000,29873,276159,3] + - [null,1442077200000,392483,8414700,1442070000000,1442080800000,29873,276159,3] + - [null,1442080800000,453077,8414700,1442073600000,1442084400000,29873,276159,3] + - [null,1442084400000,372569,8414700,1442077200000,1442088000000,29873,276159,3] + - [null,1442088000000,303872,8414700,1442080800000,1442091600000,29873,276159,3] + - [null,1442091600000,514427,8414700,1442084400000,1442095200000,29873,276159,3] + - [null,1442095200000,374501,8414700,1442088000000,1442098800000,29873,276159,3] + - [null,1442098800000,276159,8414700,1442091600000,null,29873,276159,3] + - ["AE",1442030400000,118,6547,null,1442044800000,118,42,1] + - ["AE",1442044800000,-7,6547,null,1442048400000,118,42,1] + - ["AE",1442048400000,39,6547,1442030400000,1442052000000,118,42,1] + - ["AE",1442052000000,-3,6547,1442044800000,1442059200000,118,42,2] + - ["AE",1442059200000,-11,6547,1442048400000,1442070000000,118,42,2] + - ["AE",1442070000000,46,6547,1442052000000,1442077200000,118,42,2] + - ["AE",1442077200000,6323,6547,1442059200000,1442080800000,118,42,3] + - ["AE",1442080800000,42,6547,1442070000000,null,118,42,3] + - ["AL",1442077200000,26,80,null,1442091600000,26,54,1] + - ["AL",1442091600000,54,80,null,null,26,54,2] + - ["AO",1442041200000,-26,740,null,1442052000000,-26,722,1] + - ["AO",1442052000000,-18,740,null,1442088000000,-26,722,1] + - ["AO",1442088000000,62,740,1442041200000,1442098800000,-26,722,2] + - ["AO",1442098800000,722,740,1442052000000,null,-26,722,3] + - ["AR",1442019600000,1,4450,null,1442023200000,1,64,1] + - ["AR",1442023200000,2514,4450,null,1442026800000,1,64,1] + - ["AR",1442026800000,644,4450,1442019600000,1442030400000,1,64,1] + - ["AR",1442030400000,-3,4450,1442023200000,1442034000000,1,64,1] + - ["AR",1442034000000,212,4450,1442026800000,1442037600000,1,64,1] + - ["AR",1442037600000,81,4450,1442030400000,1442055600000,1,64,1] + - ["AR",1442055600000,-54,4450,1442034000000,1442059200000,1,64,2] + - ["AR",1442059200000,210,4450,1442037600000,1442062800000,1,64,2] + - ["AR",1442062800000,29,4450,1442055600000,1442066400000,1,64,2] + - ["AR",1442066400000,0,4450,1442059200000,1442070000000,1,64,2] + - ["AR",1442070000000,377,4450,1442062800000,1442077200000,1,64,2] + - ["AR",1442077200000,-591,4450,1442066400000,1442080800000,1,64,2] + - ["AR",1442080800000,1,4450,1442070000000,1442084400000,1,64,3] + - ["AR",1442084400000,-5,4450,1442077200000,1442091600000,1,64,3] + - ["AR",1442091600000,340,4450,1442080800000,1442095200000,1,64,3] + - ["AR",1442095200000,630,4450,1442084400000,1442098800000,1,64,3] + - ["AR",1442098800000,64,4450,1442091600000,null,1,64,3] + - ["AT",1442052000000,4793,12047,null,1442062800000,4793,89,1] + - ["AT",1442062800000,-155,12047,null,1442066400000,4793,89,1] + - ["AT",1442066400000,0,12047,1442052000000,1442070000000,4793,89,1] + - ["AT",1442070000000,272,12047,1442062800000,1442084400000,4793,89,2] + - ["AT",1442084400000,-2,12047,1442066400000,1442088000000,4793,89,2] + - ["AT",1442088000000,7050,12047,1442070000000,1442091600000,4793,89,3] + - ["AT",1442091600000,89,12047,1442084400000,null,4793,89,3] + - ["AU",1442016000000,0,2700,null,1442019600000,0,518,1] + - ["AU",1442019600000,253,2700,null,1442023200000,0,518,1] + - ["AU",1442023200000,52,2700,1442016000000,1442026800000,0,518,1] + - ["AU",1442026800000,188,2700,1442019600000,1442030400000,0,518,1] + - ["AU",1442030400000,-377,2700,1442023200000,1442034000000,0,518,1] + - ["AU",1442034000000,283,2700,1442026800000,1442037600000,0,518,1] + - ["AU",1442037600000,3,2700,1442030400000,1442041200000,0,518,1] + - ["AU",1442041200000,194,2700,1442034000000,1442044800000,0,518,2] + - ["AU",1442044800000,373,2700,1442037600000,1442048400000,0,518,2] + - ["AU",1442048400000,135,2700,1442041200000,1442052000000,0,518,2] + - ["AU",1442052000000,-643,2700,1442044800000,1442055600000,0,518,2] + - ["AU",1442055600000,182,2700,1442048400000,1442059200000,0,518,2] + - ["AU",1442059200000,38,2700,1442052000000,1442066400000,0,518,2] + - ["AU",1442066400000,-21,2700,1442055600000,1442070000000,0,518,3] + - ["AU",1442070000000,-12,2700,1442059200000,1442077200000,0,518,3] + - ["AU",1442077200000,1,2700,1442066400000,1442091600000,0,518,3] + - ["AU",1442091600000,1138,2700,1442070000000,1442095200000,0,518,3] + - ["AU",1442095200000,395,2700,1442077200000,1442098800000,0,518,3] + - ["AU",1442098800000,518,2700,1442091600000,null,0,518,3] + - ["BA",1442048400000,-13,-178,null,1442052000000,-13,-1,1] + - ["BA",1442052000000,38,-178,null,1442055600000,-13,-1,1] + - ["BA",1442055600000,-202,-178,1442048400000,1442084400000,-13,-1,2] + - ["BA",1442084400000,-1,-178,1442052000000,null,-13,-1,3] + - ["BD",1442019600000,0,1106,null,1442041200000,0,-2,1] + - ["BD",1442041200000,854,1106,null,1442066400000,0,-2,1] + - ["BD",1442066400000,76,1106,1442019600000,1442073600000,0,-2,2] + - ["BD",1442073600000,103,1106,1442041200000,1442077200000,0,-2,2] + - ["BD",1442077200000,75,1106,1442066400000,1442091600000,0,-2,3] + - ["BD",1442091600000,-2,1106,1442073600000,null,0,-2,3] + - ["BE",1442030400000,-103,795,null,1442048400000,-103,9,1] + - ["BE",1442048400000,59,795,null,1442052000000,-103,9,1] + - ["BE",1442052000000,-1,795,1442030400000,1442055600000,-103,9,1] + - ["BE",1442055600000,233,795,1442048400000,1442062800000,-103,9,1] + - ["BE",1442062800000,91,795,1442052000000,1442066400000,-103,9,2] + - ["BE",1442066400000,136,795,1442055600000,1442073600000,-103,9,2] + - ["BE",1442073600000,19,795,1442062800000,1442080800000,-103,9,2] + - ["BE",1442080800000,1,795,1442066400000,1442084400000,-103,9,2] + - ["BE",1442084400000,183,795,1442073600000,1442088000000,-103,9,3] + - ["BE",1442088000000,67,795,1442080800000,1442091600000,-103,9,3] + - ["BE",1442091600000,101,795,1442084400000,1442098800000,-103,9,3] + - ["BE",1442098800000,9,795,1442088000000,null,-103,9,3] + - ["BG",1442041200000,9,19592,null,1442052000000,9,401,1] + - ["BG",1442052000000,18936,19592,null,1442059200000,9,401,1] + - ["BG",1442059200000,191,19592,1442041200000,1442070000000,9,401,2] + - ["BG",1442070000000,55,19592,1442052000000,1442084400000,9,401,2] + - ["BG",1442084400000,401,19592,1442059200000,null,9,401,3] + - ["BH",1442052000000,44,44,null,null,44,44,1] + - ["BO",1442080800000,4,4,null,1442088000000,4,-4,1] + - ["BO",1442088000000,4,4,null,1442095200000,4,-4,2] + - ["BO",1442095200000,-4,4,1442080800000,null,4,-4,3] + - ["BR",1442016000000,-248,8550,null,1442019600000,-248,-645,1] + - ["BR",1442019600000,372,8550,null,1442023200000,-248,-645,1] + - ["BR",1442023200000,879,8550,1442016000000,1442026800000,-248,-645,1] + - ["BR",1442026800000,51,8550,1442019600000,1442030400000,-248,-645,1] + - ["BR",1442030400000,30,8550,1442023200000,1442034000000,-248,-645,1] + - ["BR",1442034000000,21,8550,1442026800000,1442037600000,-248,-645,1] + - ["BR",1442037600000,267,8550,1442030400000,1442041200000,-248,-645,1] + - ["BR",1442041200000,3,8550,1442034000000,1442044800000,-248,-645,1] + - ["BR",1442044800000,71,8550,1442037600000,1442052000000,-248,-645,2] + - ["BR",1442052000000,232,8550,1442041200000,1442055600000,-248,-645,2] + - ["BR",1442055600000,242,8550,1442044800000,1442059200000,-248,-645,2] + - ["BR",1442059200000,73,8550,1442052000000,1442062800000,-248,-645,2] + - ["BR",1442062800000,93,8550,1442055600000,1442066400000,-248,-645,2] + - ["BR",1442066400000,1034,8550,1442059200000,1442070000000,-248,-645,2] + - ["BR",1442070000000,536,8550,1442062800000,1442073600000,-248,-645,2] + - ["BR",1442073600000,2087,8550,1442066400000,1442077200000,-248,-645,2] + - ["BR",1442077200000,2253,8550,1442070000000,1442080800000,-248,-645,3] + - ["BR",1442080800000,-267,8550,1442073600000,1442084400000,-248,-645,3] + - ["BR",1442084400000,492,8550,1442077200000,1442088000000,-248,-645,3] + - ["BR",1442088000000,215,8550,1442080800000,1442091600000,-248,-645,3] + - ["BR",1442091600000,11,8550,1442084400000,1442095200000,-248,-645,3] + - ["BR",1442095200000,748,8550,1442088000000,1442098800000,-248,-645,3] + - ["BR",1442098800000,-645,8550,1442091600000,null,-248,-645,3] + - ["BY",1442055600000,1,2153,null,1442059200000,1,33,1] + - ["BY",1442059200000,1464,2153,null,1442073600000,1,33,1] + - ["BY",1442073600000,596,2153,1442055600000,1442077200000,1,33,1] + - ["BY",1442077200000,30,2153,1442059200000,1442080800000,1,33,2] + - ["BY",1442080800000,28,2153,1442073600000,1442084400000,1,33,2] + - ["BY",1442084400000,1,2153,1442077200000,1442088000000,1,33,3] + - ["BY",1442088000000,33,2153,1442080800000,null,1,33,3] + - ["CA",1442016000000,-371,8544,null,1442019600000,-371,164,1] + - ["CA",1442019600000,2184,8544,null,1442023200000,-371,164,1] + - ["CA",1442023200000,286,8544,1442016000000,1442026800000,-371,164,1] + - ["CA",1442026800000,2216,8544,1442019600000,1442030400000,-371,164,1] + - ["CA",1442030400000,-47,8544,1442023200000,1442034000000,-371,164,1] + - ["CA",1442034000000,178,8544,1442026800000,1442037600000,-371,164,1] + - ["CA",1442037600000,-132,8544,1442030400000,1442041200000,-371,164,1] + - ["CA",1442041200000,5,8544,1442034000000,1442044800000,-371,164,1] + - ["CA",1442044800000,1,8544,1442037600000,1442052000000,-371,164,2] + - ["CA",1442052000000,38,8544,1442041200000,1442059200000,-371,164,2] + - ["CA",1442059200000,1036,8544,1442044800000,1442062800000,-371,164,2] + - ["CA",1442062800000,-367,8544,1442052000000,1442066400000,-371,164,2] + - ["CA",1442066400000,307,8544,1442059200000,1442070000000,-371,164,2] + - ["CA",1442070000000,185,8544,1442062800000,1442073600000,-371,164,2] + - ["CA",1442073600000,86,8544,1442066400000,1442077200000,-371,164,2] + - ["CA",1442077200000,-282,8544,1442070000000,1442080800000,-371,164,3] + - ["CA",1442080800000,481,8544,1442073600000,1442084400000,-371,164,3] + - ["CA",1442084400000,44,8544,1442077200000,1442088000000,-371,164,3] + - ["CA",1442088000000,35,8544,1442080800000,1442091600000,-371,164,3] + - ["CA",1442091600000,2858,8544,1442084400000,1442095200000,-371,164,3] + - ["CA",1442095200000,-361,8544,1442088000000,1442098800000,-371,164,3] + - ["CA",1442098800000,164,8544,1442091600000,null,-371,164,3] + - ["CH",1442037600000,59,753,null,1442041200000,59,67,1] + - ["CH",1442041200000,198,753,null,1442044800000,59,67,1] + - ["CH",1442044800000,-54,753,1442037600000,1442048400000,59,67,1] + - ["CH",1442048400000,24,753,1442041200000,1442052000000,59,67,1] + - ["CH",1442052000000,47,753,1442044800000,1442055600000,59,67,2] + - ["CH",1442055600000,0,753,1442048400000,1442062800000,59,67,2] + - ["CH",1442062800000,22,753,1442052000000,1442070000000,59,67,2] + - ["CH",1442070000000,11,753,1442055600000,1442073600000,59,67,2] + - ["CH",1442073600000,360,753,1442062800000,1442077200000,59,67,3] + - ["CH",1442077200000,6,753,1442070000000,1442084400000,59,67,3] + - ["CH",1442084400000,13,753,1442073600000,1442091600000,59,67,3] + - ["CH",1442091600000,67,753,1442077200000,null,59,67,3] + - ["CL",1442016000000,161,533,null,1442019600000,161,9,1] + - ["CL",1442019600000,-370,533,null,1442023200000,161,9,1] + - ["CL",1442023200000,15,533,1442016000000,1442030400000,161,9,1] + - ["CL",1442030400000,40,533,1442019600000,1442034000000,161,9,1] + - ["CL",1442034000000,-1,533,1442023200000,1442037600000,161,9,1] + - ["CL",1442037600000,2,533,1442030400000,1442041200000,161,9,1] + - ["CL",1442041200000,-1,533,1442034000000,1442052000000,161,9,1] + - ["CL",1442052000000,390,533,1442037600000,1442059200000,161,9,2] + - ["CL",1442059200000,-12,533,1442041200000,1442062800000,161,9,2] + - ["CL",1442062800000,17,533,1442052000000,1442066400000,161,9,2] + - ["CL",1442066400000,-41,533,1442059200000,1442070000000,161,9,2] + - ["CL",1442070000000,13,533,1442062800000,1442073600000,161,9,2] + - ["CL",1442073600000,153,533,1442066400000,1442077200000,161,9,2] + - ["CL",1442077200000,-15,533,1442070000000,1442080800000,161,9,2] + - ["CL",1442080800000,17,533,1442073600000,1442084400000,161,9,3] + - ["CL",1442084400000,126,533,1442077200000,1442088000000,161,9,3] + - ["CL",1442088000000,286,533,1442080800000,1442091600000,161,9,3] + - ["CL",1442091600000,20,533,1442084400000,1442095200000,161,9,3] + - ["CL",1442095200000,-276,533,1442088000000,1442098800000,161,9,3] + - ["CL",1442098800000,9,533,1442091600000,null,161,9,3] + - ["CN",1442023200000,-13,583,null,1442026800000,-13,-1,1] + - ["CN",1442026800000,154,583,null,1442037600000,-13,-1,1] + - ["CN",1442037600000,98,583,1442023200000,1442048400000,-13,-1,1] + - ["CN",1442048400000,293,583,1442026800000,1442052000000,-13,-1,1] + - ["CN",1442052000000,0,583,1442037600000,1442055600000,-13,-1,2] + - ["CN",1442055600000,69,583,1442048400000,1442059200000,-13,-1,2] + - ["CN",1442059200000,8,583,1442052000000,1442066400000,-13,-1,2] + - ["CN",1442066400000,-15,583,1442055600000,1442080800000,-13,-1,3] + - ["CN",1442080800000,-10,583,1442059200000,1442084400000,-13,-1,3] + - ["CN",1442084400000,-1,583,1442066400000,null,-13,-1,3] + - ["CO",1442016000000,16,59611,null,1442019600000,16,83,1] + - ["CO",1442019600000,12,59611,null,1442023200000,16,83,1] + - ["CO",1442023200000,9,59611,1442016000000,1442030400000,16,83,1] + - ["CO",1442030400000,441,59611,1442019600000,1442059200000,16,83,1] + - ["CO",1442059200000,473,59611,1442023200000,1442066400000,16,83,1] + - ["CO",1442066400000,288,59611,1442030400000,1442070000000,16,83,2] + - ["CO",1442070000000,-45,59611,1442059200000,1442073600000,16,83,2] + - ["CO",1442073600000,39860,59611,1442066400000,1442077200000,16,83,2] + - ["CO",1442077200000,581,59611,1442070000000,1442080800000,16,83,2] + - ["CO",1442080800000,25,59611,1442073600000,1442084400000,16,83,2] + - ["CO",1442084400000,51,59611,1442077200000,1442088000000,16,83,3] + - ["CO",1442088000000,17150,59611,1442080800000,1442091600000,16,83,3] + - ["CO",1442091600000,377,59611,1442084400000,1442095200000,16,83,3] + - ["CO",1442095200000,290,59611,1442088000000,1442098800000,16,83,3] + - ["CO",1442098800000,83,59611,1442091600000,null,16,83,3] + - ["CR",1442019600000,62,3241,null,1442023200000,62,72,1] + - ["CR",1442023200000,62,3241,null,1442026800000,62,72,1] + - ["CR",1442026800000,140,3241,1442019600000,1442030400000,62,72,1] + - ["CR",1442030400000,2497,3241,1442023200000,1442041200000,62,72,2] + - ["CR",1442041200000,51,3241,1442026800000,1442044800000,62,72,2] + - ["CR",1442044800000,194,3241,1442030400000,1442048400000,62,72,2] + - ["CR",1442048400000,163,3241,1442041200000,1442088000000,62,72,3] + - ["CR",1442088000000,72,3241,1442044800000,null,62,72,3] + - ["CZ",1442026800000,-19,3479,null,1442034000000,-19,2,1] + - ["CZ",1442034000000,78,3479,null,1442037600000,-19,2,1] + - ["CZ",1442037600000,18,3479,1442026800000,1442055600000,-19,2,1] + - ["CZ",1442055600000,1073,3479,1442034000000,1442059200000,-19,2,1] + - ["CZ",1442059200000,21,3479,1442037600000,1442062800000,-19,2,2] + - ["CZ",1442062800000,0,3479,1442055600000,1442070000000,-19,2,2] + - ["CZ",1442070000000,168,3479,1442059200000,1442073600000,-19,2,2] + - ["CZ",1442073600000,2051,3479,1442062800000,1442077200000,-19,2,2] + - ["CZ",1442077200000,115,3479,1442070000000,1442080800000,-19,2,3] + - ["CZ",1442080800000,-28,3479,1442073600000,1442098800000,-19,2,3] + - ["CZ",1442098800000,2,3479,1442077200000,null,-19,2,3] + - ["DE",1442016000000,167,25583,null,1442019600000,167,329,1] + - ["DE",1442019600000,0,25583,null,1442023200000,167,329,1] + - ["DE",1442023200000,64,25583,1442016000000,1442030400000,167,329,1] + - ["DE",1442030400000,373,25583,1442019600000,1442034000000,167,329,1] + - ["DE",1442034000000,358,25583,1442023200000,1442037600000,167,329,1] + - ["DE",1442037600000,544,25583,1442030400000,1442041200000,167,329,1] + - ["DE",1442041200000,197,25583,1442034000000,1442044800000,167,329,1] + - ["DE",1442044800000,979,25583,1442037600000,1442048400000,167,329,1] + - ["DE",1442048400000,811,25583,1442041200000,1442052000000,167,329,2] + - ["DE",1442052000000,1600,25583,1442044800000,1442055600000,167,329,2] + - ["DE",1442055600000,1523,25583,1442048400000,1442059200000,167,329,2] + - ["DE",1442059200000,289,25583,1442052000000,1442062800000,167,329,2] + - ["DE",1442062800000,283,25583,1442055600000,1442066400000,167,329,2] + - ["DE",1442066400000,1577,25583,1442059200000,1442070000000,167,329,2] + - ["DE",1442070000000,1666,25583,1442062800000,1442073600000,167,329,2] + - ["DE",1442073600000,6075,25583,1442066400000,1442077200000,167,329,2] + - ["DE",1442077200000,2188,25583,1442070000000,1442080800000,167,329,3] + - ["DE",1442080800000,1133,25583,1442073600000,1442084400000,167,329,3] + - ["DE",1442084400000,-125,25583,1442077200000,1442088000000,167,329,3] + - ["DE",1442088000000,190,25583,1442080800000,1442091600000,167,329,3] + - ["DE",1442091600000,4355,25583,1442084400000,1442095200000,167,329,3] + - ["DE",1442095200000,1007,25583,1442088000000,1442098800000,167,329,3] + - ["DE",1442098800000,329,25583,1442091600000,null,167,329,3] + - ["DK",1442037600000,10,594,null,1442044800000,10,0,1] + - ["DK",1442044800000,36,594,null,1442048400000,10,0,1] + - ["DK",1442048400000,-5,594,1442037600000,1442055600000,10,0,1] + - ["DK",1442055600000,42,594,1442044800000,1442059200000,10,0,1] + - ["DK",1442059200000,0,594,1442048400000,1442062800000,10,0,2] + - ["DK",1442062800000,1,594,1442055600000,1442066400000,10,0,2] + - ["DK",1442066400000,416,594,1442059200000,1442077200000,10,0,2] + - ["DK",1442077200000,-9,594,1442062800000,1442080800000,10,0,2] + - ["DK",1442080800000,61,594,1442066400000,1442084400000,10,0,3] + - ["DK",1442084400000,-97,594,1442077200000,1442091600000,10,0,3] + - ["DK",1442091600000,139,594,1442080800000,1442095200000,10,0,3] + - ["DK",1442095200000,0,594,1442084400000,null,10,0,3] + - ["DO",1442023200000,8,264,null,1442066400000,8,13,1] + - ["DO",1442066400000,35,264,null,1442073600000,8,13,1] + - ["DO",1442073600000,200,264,1442023200000,1442084400000,8,13,2] + - ["DO",1442084400000,8,264,1442066400000,1442095200000,8,13,2] + - ["DO",1442095200000,13,264,1442073600000,null,8,13,3] + - ["DZ",1442077200000,-1,-1,null,null,-1,-1,1] + - ["EC",1442019600000,29,232,null,1442023200000,29,10,1] + - ["EC",1442023200000,-9,232,null,1442030400000,29,10,1] + - ["EC",1442030400000,0,232,1442019600000,1442077200000,29,10,2] + - ["EC",1442077200000,-366,232,1442023200000,1442084400000,29,10,2] + - ["EC",1442084400000,568,232,1442030400000,1442095200000,29,10,3] + - ["EC",1442095200000,10,232,1442077200000,null,29,10,3] + - ["EE",1442041200000,37,18,null,1442044800000,37,-19,1] + - ["EE",1442044800000,-19,18,null,null,37,-19,2] + - ["EG",1442026800000,16,170,null,1442055600000,16,27,1] + - ["EG",1442055600000,14,170,null,1442062800000,16,27,1] + - ["EG",1442062800000,112,170,1442026800000,1442073600000,16,27,2] + - ["EG",1442073600000,1,170,1442055600000,1442091600000,16,27,2] + - ["EG",1442091600000,27,170,1442062800000,null,16,27,3] + - ["ES",1442019600000,103,7449,null,1442023200000,103,458,1] + - ["ES",1442023200000,-5,7449,null,1442034000000,103,458,1] + - ["ES",1442034000000,-52,7449,1442019600000,1442037600000,103,458,1] + - ["ES",1442037600000,3,7449,1442023200000,1442041200000,103,458,1] + - ["ES",1442041200000,118,7449,1442034000000,1442044800000,103,458,1] + - ["ES",1442044800000,-169,7449,1442037600000,1442048400000,103,458,1] + - ["ES",1442048400000,158,7449,1442041200000,1442052000000,103,458,1] + - ["ES",1442052000000,-4,7449,1442044800000,1442055600000,103,458,2] + - ["ES",1442055600000,495,7449,1442048400000,1442059200000,103,458,2] + - ["ES",1442059200000,1086,7449,1442052000000,1442062800000,103,458,2] + - ["ES",1442062800000,-71,7449,1442055600000,1442066400000,103,458,2] + - ["ES",1442066400000,461,7449,1442059200000,1442070000000,103,458,2] + - ["ES",1442070000000,61,7449,1442062800000,1442073600000,103,458,2] + - ["ES",1442073600000,154,7449,1442066400000,1442077200000,103,458,2] + - ["ES",1442077200000,1240,7449,1442070000000,1442084400000,103,458,3] + - ["ES",1442084400000,337,7449,1442073600000,1442088000000,103,458,3] + - ["ES",1442088000000,-130,7449,1442077200000,1442091600000,103,458,3] + - ["ES",1442091600000,700,7449,1442084400000,1442095200000,103,458,3] + - ["ES",1442095200000,2506,7449,1442088000000,1442098800000,103,458,3] + - ["ES",1442098800000,458,7449,1442091600000,null,103,458,3] + - ["FI",1442030400000,1491,3579,null,1442037600000,1491,69,1] + - ["FI",1442037600000,14,3579,null,1442048400000,1491,69,1] + - ["FI",1442048400000,12,3579,1442030400000,1442052000000,1491,69,1] + - ["FI",1442052000000,186,3579,1442037600000,1442059200000,1491,69,1] + - ["FI",1442059200000,407,3579,1442048400000,1442062800000,1491,69,2] + - ["FI",1442062800000,19,3579,1442052000000,1442066400000,1491,69,2] + - ["FI",1442066400000,183,3579,1442059200000,1442073600000,1491,69,2] + - ["FI",1442073600000,-1,3579,1442062800000,1442077200000,1491,69,2] + - ["FI",1442077200000,200,3579,1442066400000,1442080800000,1491,69,3] + - ["FI",1442080800000,104,3579,1442073600000,1442084400000,1491,69,3] + - ["FI",1442084400000,895,3579,1442077200000,1442095200000,1491,69,3] + - ["FI",1442095200000,69,3579,1442080800000,null,1491,69,3] + - ["FR",1442016000000,-1,37281,null,1442019600000,-1,136,1] + - ["FR",1442019600000,585,37281,null,1442023200000,-1,136,1] + - ["FR",1442023200000,628,37281,1442016000000,1442026800000,-1,136,1] + - ["FR",1442026800000,86,37281,1442019600000,1442034000000,-1,136,1] + - ["FR",1442034000000,476,37281,1442023200000,1442037600000,-1,136,1] + - ["FR",1442037600000,4174,37281,1442026800000,1442041200000,-1,136,1] + - ["FR",1442041200000,604,37281,1442034000000,1442044800000,-1,136,1] + - ["FR",1442044800000,172,37281,1442037600000,1442048400000,-1,136,1] + - ["FR",1442048400000,3027,37281,1442041200000,1442052000000,-1,136,2] + - ["FR",1442052000000,637,37281,1442044800000,1442055600000,-1,136,2] + - ["FR",1442055600000,463,37281,1442048400000,1442059200000,-1,136,2] + - ["FR",1442059200000,4650,37281,1442052000000,1442062800000,-1,136,2] + - ["FR",1442062800000,5676,37281,1442055600000,1442066400000,-1,136,2] + - ["FR",1442066400000,2516,37281,1442059200000,1442070000000,-1,136,2] + - ["FR",1442070000000,474,37281,1442062800000,1442073600000,-1,136,2] + - ["FR",1442073600000,3522,37281,1442066400000,1442077200000,-1,136,2] + - ["FR",1442077200000,-444,37281,1442070000000,1442080800000,-1,136,3] + - ["FR",1442080800000,557,37281,1442073600000,1442084400000,-1,136,3] + - ["FR",1442084400000,6643,37281,1442077200000,1442088000000,-1,136,3] + - ["FR",1442088000000,1872,37281,1442080800000,1442091600000,-1,136,3] + - ["FR",1442091600000,741,37281,1442084400000,1442095200000,-1,136,3] + - ["FR",1442095200000,87,37281,1442088000000,1442098800000,-1,136,3] + - ["FR",1442098800000,136,37281,1442091600000,null,-1,136,3] + - ["GB",1442016000000,-44,35857,null,1442019600000,-44,49,1] + - ["GB",1442019600000,54,35857,null,1442023200000,-44,49,1] + - ["GB",1442023200000,1816,35857,1442016000000,1442026800000,-44,49,1] + - ["GB",1442026800000,339,35857,1442019600000,1442030400000,-44,49,1] + - ["GB",1442030400000,2524,35857,1442023200000,1442034000000,-44,49,1] + - ["GB",1442034000000,-12,35857,1442026800000,1442037600000,-44,49,1] + - ["GB",1442037600000,544,35857,1442030400000,1442041200000,-44,49,1] + - ["GB",1442041200000,42,35857,1442034000000,1442044800000,-44,49,1] + - ["GB",1442044800000,32,35857,1442037600000,1442048400000,-44,49,2] + - ["GB",1442048400000,740,35857,1442041200000,1442052000000,-44,49,2] + - ["GB",1442052000000,168,35857,1442044800000,1442055600000,-44,49,2] + - ["GB",1442055600000,453,35857,1442048400000,1442059200000,-44,49,2] + - ["GB",1442059200000,16111,35857,1442052000000,1442062800000,-44,49,2] + - ["GB",1442062800000,5743,35857,1442055600000,1442066400000,-44,49,2] + - ["GB",1442066400000,671,35857,1442059200000,1442070000000,-44,49,2] + - ["GB",1442070000000,374,35857,1442062800000,1442073600000,-44,49,2] + - ["GB",1442073600000,648,35857,1442066400000,1442077200000,-44,49,3] + - ["GB",1442077200000,1135,35857,1442070000000,1442080800000,-44,49,3] + - ["GB",1442080800000,1444,35857,1442073600000,1442084400000,-44,49,3] + - ["GB",1442084400000,384,35857,1442077200000,1442088000000,-44,49,3] + - ["GB",1442088000000,1593,35857,1442080800000,1442091600000,-44,49,3] + - ["GB",1442091600000,811,35857,1442084400000,1442095200000,-44,49,3] + - ["GB",1442095200000,238,35857,1442088000000,1442098800000,-44,49,3] + - ["GB",1442098800000,49,35857,1442091600000,null,-44,49,3] + - ["GE",1442044800000,-21,-140,null,1442052000000,-21,-27,1] + - ["GE",1442052000000,-108,-140,null,1442062800000,-21,-27,1] + - ["GE",1442062800000,16,-140,1442044800000,1442080800000,-21,-27,2] + - ["GE",1442080800000,-27,-140,1442052000000,null,-21,-27,3] + - ["GH",1442088000000,0,0,null,null,0,0,1] + - ["GR",1442019600000,82,149,null,1442034000000,82,123,1] + - ["GR",1442034000000,0,149,null,1442041200000,82,123,1] + - ["GR",1442041200000,7,149,1442019600000,1442048400000,82,123,1] + - ["GR",1442048400000,-26,149,1442034000000,1442062800000,82,123,1] + - ["GR",1442062800000,8,149,1442041200000,1442070000000,82,123,2] + - ["GR",1442070000000,2,149,1442048400000,1442073600000,82,123,2] + - ["GR",1442073600000,-314,149,1442062800000,1442080800000,82,123,2] + - ["GR",1442080800000,88,149,1442070000000,1442084400000,82,123,3] + - ["GR",1442084400000,179,149,1442073600000,1442091600000,82,123,3] + - ["GR",1442091600000,123,149,1442080800000,null,82,123,3] + - ["GT",1442023200000,-167,7,null,1442026800000,-167,1,1] + - ["GT",1442026800000,173,7,null,1442098800000,-167,1,2] + - ["GT",1442098800000,1,7,1442023200000,null,-167,1,3] + - ["HK",1442019600000,-113,10743,null,1442023200000,-113,-1,1] + - ["HK",1442023200000,2414,10743,null,1442026800000,-113,-1,1] + - ["HK",1442026800000,-211,10743,1442019600000,1442030400000,-113,-1,1] + - ["HK",1442030400000,157,10743,1442023200000,1442034000000,-113,-1,1] + - ["HK",1442034000000,1137,10743,1442026800000,1442037600000,-113,-1,1] + - ["HK",1442037600000,636,10743,1442030400000,1442041200000,-113,-1,1] + - ["HK",1442041200000,-15,10743,1442034000000,1442044800000,-113,-1,1] + - ["HK",1442044800000,21,10743,1442037600000,1442048400000,-113,-1,2] + - ["HK",1442048400000,1,10743,1442041200000,1442052000000,-113,-1,2] + - ["HK",1442052000000,15,10743,1442044800000,1442055600000,-113,-1,2] + - ["HK",1442055600000,804,10743,1442048400000,1442059200000,-113,-1,2] + - ["HK",1442059200000,2,10743,1442052000000,1442062800000,-113,-1,2] + - ["HK",1442062800000,1,10743,1442055600000,1442066400000,-113,-1,2] + - ["HK",1442066400000,39,10743,1442059200000,1442070000000,-113,-1,3] + - ["HK",1442070000000,314,10743,1442062800000,1442073600000,-113,-1,3] + - ["HK",1442073600000,5545,10743,1442066400000,1442080800000,-113,-1,3] + - ["HK",1442080800000,0,10743,1442070000000,1442091600000,-113,-1,3] + - ["HK",1442091600000,-3,10743,1442073600000,1442095200000,-113,-1,3] + - ["HK",1442095200000,-1,10743,1442080800000,null,-113,-1,3] + - ["HN",1442026800000,-1,-1,null,null,-1,-1,1] + - ["HR",1442070000000,32,382,null,1442073600000,32,82,1] + - ["HR",1442073600000,0,382,null,1442077200000,32,82,1] + - ["HR",1442077200000,58,382,1442070000000,1442080800000,32,82,2] + - ["HR",1442080800000,220,382,1442073600000,1442084400000,32,82,2] + - ["HR",1442084400000,-10,382,1442077200000,1442088000000,32,82,3] + - ["HR",1442088000000,82,382,1442080800000,null,32,82,3] + - ["HU",1442019600000,46,2116,null,1442037600000,46,110,1] + - ["HU",1442037600000,197,2116,null,1442041200000,46,110,1] + - ["HU",1442041200000,91,2116,1442019600000,1442044800000,46,110,1] + - ["HU",1442044800000,547,2116,1442037600000,1442048400000,46,110,1] + - ["HU",1442048400000,499,2116,1442041200000,1442055600000,46,110,1] + - ["HU",1442055600000,-2,2116,1442044800000,1442062800000,46,110,2] + - ["HU",1442062800000,50,2116,1442048400000,1442080800000,46,110,2] + - ["HU",1442080800000,242,2116,1442055600000,1442084400000,46,110,2] + - ["HU",1442084400000,141,2116,1442062800000,1442088000000,46,110,2] + - ["HU",1442088000000,-71,2116,1442080800000,1442091600000,46,110,3] + - ["HU",1442091600000,-5,2116,1442084400000,1442095200000,46,110,3] + - ["HU",1442095200000,271,2116,1442088000000,1442098800000,46,110,3] + - ["HU",1442098800000,110,2116,1442091600000,null,46,110,3] + - ["ID",1442023200000,106,-255,null,1442026800000,106,13,1] + - ["ID",1442026800000,-416,-255,null,1442030400000,106,13,1] + - ["ID",1442030400000,279,-255,1442023200000,1442034000000,106,13,1] + - ["ID",1442034000000,19,-255,1442026800000,1442037600000,106,13,1] + - ["ID",1442037600000,14,-255,1442030400000,1442041200000,106,13,1] + - ["ID",1442041200000,2,-255,1442034000000,1442044800000,106,13,2] + - ["ID",1442044800000,-388,-255,1442037600000,1442055600000,106,13,2] + - ["ID",1442055600000,16,-255,1442041200000,1442059200000,106,13,2] + - ["ID",1442059200000,17,-255,1442044800000,1442070000000,106,13,2] + - ["ID",1442070000000,42,-255,1442055600000,1442091600000,106,13,3] + - ["ID",1442091600000,21,-255,1442059200000,1442095200000,106,13,3] + - ["ID",1442095200000,20,-255,1442070000000,1442098800000,106,13,3] + - ["ID",1442098800000,13,-255,1442091600000,null,106,13,3] + - ["IE",1442026800000,1,2142,null,1442030400000,1,-71,1] + - ["IE",1442030400000,1,2142,null,1442048400000,1,-71,1] + - ["IE",1442048400000,27,2142,1442026800000,1442066400000,1,-71,1] + - ["IE",1442066400000,1062,2142,1442030400000,1442070000000,1,-71,2] + - ["IE",1442070000000,-100,2142,1442048400000,1442077200000,1,-71,2] + - ["IE",1442077200000,403,2142,1442066400000,1442084400000,1,-71,2] + - ["IE",1442084400000,819,2142,1442070000000,1442091600000,1,-71,3] + - ["IE",1442091600000,-71,2142,1442077200000,null,1,-71,3] + - ["IL",1442041200000,35,6617,null,1442044800000,35,3,1] + - ["IL",1442044800000,218,6617,null,1442048400000,35,3,1] + - ["IL",1442048400000,25,6617,1442041200000,1442052000000,35,3,1] + - ["IL",1442052000000,2745,6617,1442044800000,1442055600000,35,3,1] + - ["IL",1442055600000,4,6617,1442048400000,1442059200000,35,3,1] + - ["IL",1442059200000,1205,6617,1442052000000,1442062800000,35,3,1] + - ["IL",1442062800000,180,6617,1442055600000,1442066400000,35,3,2] + - ["IL",1442066400000,3,6617,1442059200000,1442070000000,35,3,2] + - ["IL",1442070000000,49,6617,1442062800000,1442073600000,35,3,2] + - ["IL",1442073600000,31,6617,1442066400000,1442077200000,35,3,2] + - ["IL",1442077200000,187,6617,1442070000000,1442080800000,35,3,2] + - ["IL",1442080800000,88,6617,1442073600000,1442084400000,35,3,3] + - ["IL",1442084400000,1137,6617,1442077200000,1442091600000,35,3,3] + - ["IL",1442091600000,707,6617,1442080800000,1442095200000,35,3,3] + - ["IL",1442095200000,0,6617,1442084400000,1442098800000,35,3,3] + - ["IL",1442098800000,3,6617,1442091600000,null,35,3,3] + - ["IN",1442016000000,1,29166,null,1442019600000,1,4,1] + - ["IN",1442019600000,38,29166,null,1442023200000,1,4,1] + - ["IN",1442023200000,-142,29166,1442016000000,1442026800000,1,4,1] + - ["IN",1442026800000,974,29166,1442019600000,1442030400000,1,4,1] + - ["IN",1442030400000,1448,29166,1442023200000,1442034000000,1,4,1] + - ["IN",1442034000000,1350,29166,1442026800000,1442037600000,1,4,1] + - ["IN",1442037600000,135,29166,1442030400000,1442041200000,1,4,1] + - ["IN",1442041200000,80,29166,1442034000000,1442044800000,1,4,1] + - ["IN",1442044800000,2677,29166,1442037600000,1442048400000,1,4,2] + - ["IN",1442048400000,262,29166,1442041200000,1442052000000,1,4,2] + - ["IN",1442052000000,534,29166,1442044800000,1442055600000,1,4,2] + - ["IN",1442055600000,166,29166,1442048400000,1442059200000,1,4,2] + - ["IN",1442059200000,708,29166,1442052000000,1442062800000,1,4,2] + - ["IN",1442062800000,1547,29166,1442055600000,1442066400000,1,4,2] + - ["IN",1442066400000,116,29166,1442059200000,1442070000000,1,4,2] + - ["IN",1442070000000,12091,29166,1442062800000,1442073600000,1,4,3] + - ["IN",1442073600000,1170,29166,1442066400000,1442077200000,1,4,3] + - ["IN",1442077200000,5699,29166,1442070000000,1442080800000,1,4,3] + - ["IN",1442080800000,0,29166,1442073600000,1442084400000,1,4,3] + - ["IN",1442084400000,187,29166,1442077200000,1442088000000,1,4,3] + - ["IN",1442088000000,121,29166,1442080800000,1442095200000,1,4,3] + - ["IN",1442095200000,4,29166,1442084400000,null,1,4,3] + - ["IQ",1442041200000,-1,3,null,1442044800000,-1,-2,1] + - ["IQ",1442044800000,6,3,null,1442052000000,-1,-2,1] + - ["IQ",1442052000000,0,3,1442041200000,1442095200000,-1,-2,2] + - ["IQ",1442095200000,-2,3,1442044800000,null,-1,-2,3] + - ["IR",1442026800000,0,2698,null,1442030400000,0,0,1] + - ["IR",1442030400000,375,2698,null,1442034000000,0,0,1] + - ["IR",1442034000000,-8,2698,1442026800000,1442041200000,0,0,1] + - ["IR",1442041200000,-79,2698,1442030400000,1442044800000,0,0,1] + - ["IR",1442044800000,306,2698,1442034000000,1442052000000,0,0,1] + - ["IR",1442052000000,155,2698,1442041200000,1442055600000,0,0,2] + - ["IR",1442055600000,-124,2698,1442044800000,1442059200000,0,0,2] + - ["IR",1442059200000,1455,2698,1442052000000,1442073600000,0,0,2] + - ["IR",1442073600000,-193,2698,1442055600000,1442077200000,0,0,2] + - ["IR",1442077200000,-34,2698,1442059200000,1442080800000,0,0,3] + - ["IR",1442080800000,131,2698,1442073600000,1442088000000,0,0,3] + - ["IR",1442088000000,714,2698,1442077200000,1442091600000,0,0,3] + - ["IR",1442091600000,0,2698,1442080800000,null,0,0,3] + - ["IT",1442016000000,0,39091,null,1442019600000,0,565,1] + - ["IT",1442019600000,183,39091,null,1442023200000,0,565,1] + - ["IT",1442023200000,111,39091,1442016000000,1442026800000,0,565,1] + - ["IT",1442026800000,222,39091,1442019600000,1442030400000,0,565,1] + - ["IT",1442030400000,-17,39091,1442023200000,1442034000000,0,565,1] + - ["IT",1442034000000,1006,39091,1442026800000,1442037600000,0,565,1] + - ["IT",1442037600000,-9,39091,1442030400000,1442041200000,0,565,1] + - ["IT",1442041200000,20,39091,1442034000000,1442044800000,0,565,1] + - ["IT",1442044800000,1483,39091,1442037600000,1442048400000,0,565,2] + - ["IT",1442048400000,676,39091,1442041200000,1442052000000,0,565,2] + - ["IT",1442052000000,1880,39091,1442044800000,1442055600000,0,565,2] + - ["IT",1442055600000,6240,39091,1442048400000,1442059200000,0,565,2] + - ["IT",1442059200000,542,39091,1442052000000,1442062800000,0,565,2] + - ["IT",1442062800000,1938,39091,1442055600000,1442066400000,0,565,2] + - ["IT",1442066400000,4155,39091,1442059200000,1442070000000,0,565,2] + - ["IT",1442070000000,81,39091,1442062800000,1442073600000,0,565,2] + - ["IT",1442073600000,2586,39091,1442066400000,1442077200000,0,565,3] + - ["IT",1442077200000,2188,39091,1442070000000,1442080800000,0,565,3] + - ["IT",1442080800000,5544,39091,1442073600000,1442084400000,0,565,3] + - ["IT",1442084400000,2660,39091,1442077200000,1442088000000,0,565,3] + - ["IT",1442088000000,3746,39091,1442080800000,1442091600000,0,565,3] + - ["IT",1442091600000,351,39091,1442084400000,1442095200000,0,565,3] + - ["IT",1442095200000,2940,39091,1442088000000,1442098800000,0,565,3] + - ["IT",1442098800000,565,39091,1442091600000,null,0,565,3] + - ["JM",1442070000000,30,30,null,null,30,30,1] + - ["JO",1442055600000,-2,2,null,1442059200000,-2,4,1] + - ["JO",1442059200000,0,2,null,1442080800000,-2,4,2] + - ["JO",1442080800000,4,2,1442055600000,null,-2,4,3] + - ["JP",1442016000000,-113,20378,null,1442019600000,-113,-6,1] + - ["JP",1442019600000,2002,20378,null,1442023200000,-113,-6,1] + - ["JP",1442023200000,1959,20378,1442016000000,1442026800000,-113,-6,1] + - ["JP",1442026800000,1035,20378,1442019600000,1442030400000,-113,-6,1] + - ["JP",1442030400000,805,20378,1442023200000,1442034000000,-113,-6,1] + - ["JP",1442034000000,910,20378,1442026800000,1442037600000,-113,-6,1] + - ["JP",1442037600000,2181,20378,1442030400000,1442041200000,-113,-6,1] + - ["JP",1442041200000,1373,20378,1442034000000,1442044800000,-113,-6,1] + - ["JP",1442044800000,1569,20378,1442037600000,1442048400000,-113,-6,2] + - ["JP",1442048400000,1981,20378,1442041200000,1442052000000,-113,-6,2] + - ["JP",1442052000000,2789,20378,1442044800000,1442055600000,-113,-6,2] + - ["JP",1442055600000,998,20378,1442048400000,1442059200000,-113,-6,2] + - ["JP",1442059200000,-85,20378,1442052000000,1442062800000,-113,-6,2] + - ["JP",1442062800000,803,20378,1442055600000,1442066400000,-113,-6,2] + - ["JP",1442066400000,167,20378,1442059200000,1442070000000,-113,-6,2] + - ["JP",1442070000000,79,20378,1442062800000,1442073600000,-113,-6,2] + - ["JP",1442073600000,1162,20378,1442066400000,1442077200000,-113,-6,3] + - ["JP",1442077200000,51,20378,1442070000000,1442080800000,-113,-6,3] + - ["JP",1442080800000,420,20378,1442073600000,1442084400000,-113,-6,3] + - ["JP",1442084400000,13,20378,1442077200000,1442088000000,-113,-6,3] + - ["JP",1442088000000,57,20378,1442080800000,1442091600000,-113,-6,3] + - ["JP",1442091600000,228,20378,1442084400000,1442095200000,-113,-6,3] + - ["JP",1442095200000,0,20378,1442088000000,1442098800000,-113,-6,3] + - ["JP",1442098800000,-6,20378,1442091600000,null,-113,-6,3] + - ["KE",1442044800000,-1,-1,null,null,-1,-1,1] + - ["KG",1442073600000,6,6,null,null,6,6,1] + - ["KR",1442016000000,1024,13597,null,1442019600000,1024,-36,1] + - ["KR",1442019600000,445,13597,null,1442023200000,1024,-36,1] + - ["KR",1442023200000,319,13597,1442016000000,1442026800000,1024,-36,1] + - ["KR",1442026800000,-179,13597,1442019600000,1442030400000,1024,-36,1] + - ["KR",1442030400000,1035,13597,1442023200000,1442034000000,1024,-36,1] + - ["KR",1442034000000,434,13597,1442026800000,1442037600000,1024,-36,1] + - ["KR",1442037600000,26,13597,1442030400000,1442041200000,1024,-36,1] + - ["KR",1442041200000,20,13597,1442034000000,1442044800000,1024,-36,1] + - ["KR",1442044800000,829,13597,1442037600000,1442048400000,1024,-36,2] + - ["KR",1442048400000,-374,13597,1442041200000,1442052000000,1024,-36,2] + - ["KR",1442052000000,-3,13597,1442044800000,1442055600000,1024,-36,2] + - ["KR",1442055600000,3640,13597,1442048400000,1442059200000,1024,-36,2] + - ["KR",1442059200000,208,13597,1442052000000,1442062800000,1024,-36,2] + - ["KR",1442062800000,1096,13597,1442055600000,1442066400000,1024,-36,2] + - ["KR",1442066400000,3299,13597,1442059200000,1442070000000,1024,-36,2] + - ["KR",1442070000000,222,13597,1442062800000,1442077200000,1024,-36,3] + - ["KR",1442077200000,-40,13597,1442066400000,1442080800000,1024,-36,3] + - ["KR",1442080800000,-33,13597,1442070000000,1442084400000,1024,-36,3] + - ["KR",1442084400000,314,13597,1442077200000,1442088000000,1024,-36,3] + - ["KR",1442088000000,524,13597,1442080800000,1442095200000,1024,-36,3] + - ["KR",1442095200000,827,13597,1442084400000,1442098800000,1024,-36,3] + - ["KR",1442098800000,-36,13597,1442088000000,null,1024,-36,3] + - ["KW",1442055600000,-2,1778,null,1442070000000,-2,-33,1] + - ["KW",1442070000000,1815,1778,null,1442077200000,-2,-33,1] + - ["KW",1442077200000,-2,1778,1442055600000,1442080800000,-2,-33,2] + - ["KW",1442080800000,-33,1778,1442070000000,null,-2,-33,3] + - ["KZ",1442034000000,161,1261,null,1442044800000,161,91,1] + - ["KZ",1442044800000,401,1261,null,1442048400000,161,91,1] + - ["KZ",1442048400000,439,1261,1442034000000,1442052000000,161,91,1] + - ["KZ",1442052000000,412,1261,1442044800000,1442055600000,161,91,1] + - ["KZ",1442055600000,63,1261,1442048400000,1442059200000,161,91,2] + - ["KZ",1442059200000,33,1261,1442052000000,1442062800000,161,91,2] + - ["KZ",1442062800000,0,1261,1442055600000,1442066400000,161,91,2] + - ["KZ",1442066400000,0,1261,1442059200000,1442077200000,161,91,2] + - ["KZ",1442077200000,-317,1261,1442062800000,1442084400000,161,91,3] + - ["KZ",1442084400000,-22,1261,1442066400000,1442095200000,161,91,3] + - ["KZ",1442095200000,91,1261,1442077200000,null,161,91,3] + - ["LB",1442055600000,-67,-67,null,null,-67,-67,1] + - ["LK",1442026800000,79,131,null,1442048400000,79,-3,1] + - ["LK",1442048400000,8,131,null,1442052000000,79,-3,1] + - ["LK",1442052000000,47,131,1442026800000,1442084400000,79,-3,2] + - ["LK",1442084400000,-3,131,1442048400000,null,79,-3,3] + - ["LT",1442080800000,12,-12,null,1442098800000,12,-24,1] + - ["LT",1442098800000,-24,-12,null,null,12,-24,2] + - ["LU",1442059200000,79,606,null,1442066400000,79,2,1] + - ["LU",1442066400000,0,606,null,1442077200000,79,2,1] + - ["LU",1442077200000,525,606,1442059200000,1442095200000,79,2,2] + - ["LU",1442095200000,2,606,1442066400000,null,79,2,3] + - ["LV",1442095200000,0,0,null,null,0,0,1] + - ["MA",1442019600000,-1,229,null,1442055600000,-1,8,1] + - ["MA",1442055600000,23,229,null,1442059200000,-1,8,1] + - ["MA",1442059200000,-56,229,1442019600000,1442062800000,-1,8,1] + - ["MA",1442062800000,0,229,1442055600000,1442077200000,-1,8,2] + - ["MA",1442077200000,250,229,1442059200000,1442080800000,-1,8,2] + - ["MA",1442080800000,5,229,1442062800000,1442098800000,-1,8,3] + - ["MA",1442098800000,8,229,1442077200000,null,-1,8,3] + - ["MD",1442077200000,6916,6916,null,null,6916,6916,1] + - ["ME",1442073600000,0,0,null,null,0,0,1] + - ["MH",1442052000000,40,40,null,null,40,40,1] + - ["MK",1442077200000,-72,-72,null,null,-72,-72,1] + - ["MM",1442070000000,3,28,null,1442073600000,3,25,1] + - ["MM",1442073600000,25,28,null,null,3,25,2] + - ["MO",1442034000000,30,48,null,1442070000000,30,18,1] + - ["MO",1442070000000,18,48,null,null,30,18,2] + - ["MR",1442080800000,10,10,null,null,10,10,1] + - ["MT",1442048400000,-1,-1,null,null,-1,-1,1] + - ["MV",1442073600000,-3,-3,null,null,-3,-3,1] + - ["MX",1442016000000,-67,10472,null,1442023200000,-67,28,1] + - ["MX",1442023200000,549,10472,null,1442026800000,-67,28,1] + - ["MX",1442026800000,3642,10472,1442016000000,1442030400000,-67,28,1] + - ["MX",1442030400000,373,10472,1442023200000,1442034000000,-67,28,1] + - ["MX",1442034000000,944,10472,1442026800000,1442037600000,-67,28,1] + - ["MX",1442037600000,4,10472,1442030400000,1442041200000,-67,28,1] + - ["MX",1442041200000,-294,10472,1442034000000,1442066400000,-67,28,2] + - ["MX",1442066400000,-1,10472,1442037600000,1442070000000,-67,28,2] + - ["MX",1442070000000,-1,10472,1442041200000,1442073600000,-67,28,2] + - ["MX",1442073600000,-21,10472,1442066400000,1442077200000,-67,28,2] + - ["MX",1442077200000,3874,10472,1442070000000,1442080800000,-67,28,2] + - ["MX",1442080800000,-376,10472,1442073600000,1442084400000,-67,28,2] + - ["MX",1442084400000,981,10472,1442077200000,1442088000000,-67,28,3] + - ["MX",1442088000000,494,10472,1442080800000,1442091600000,-67,28,3] + - ["MX",1442091600000,799,10472,1442084400000,1442095200000,-67,28,3] + - ["MX",1442095200000,-456,10472,1442088000000,1442098800000,-67,28,3] + - ["MX",1442098800000,28,10472,1442091600000,null,-67,28,3] + - ["MY",1442019600000,-7,3207,null,1442030400000,-7,739,1] + - ["MY",1442030400000,-3,3207,null,1442034000000,-7,739,1] + - ["MY",1442034000000,1028,3207,1442019600000,1442041200000,-7,739,1] + - ["MY",1442041200000,935,3207,1442030400000,1442044800000,-7,739,1] + - ["MY",1442044800000,-127,3207,1442034000000,1442048400000,-7,739,2] + - ["MY",1442048400000,649,3207,1442041200000,1442055600000,-7,739,2] + - ["MY",1442055600000,1,3207,1442044800000,1442059200000,-7,739,2] + - ["MY",1442059200000,0,3207,1442048400000,1442066400000,-7,739,2] + - ["MY",1442066400000,1,3207,1442055600000,1442073600000,-7,739,3] + - ["MY",1442073600000,1,3207,1442059200000,1442077200000,-7,739,3] + - ["MY",1442077200000,-10,3207,1442066400000,1442098800000,-7,739,3] + - ["MY",1442098800000,739,3207,1442073600000,null,-7,739,3] + - ["NG",1442052000000,208,214,null,1442070000000,208,6,1] + - ["NG",1442070000000,6,214,null,null,208,6,2] + - ["NL",1442034000000,0,12162,null,1442044800000,0,4,1] + - ["NL",1442044800000,16,12162,null,1442048400000,0,4,1] + - ["NL",1442048400000,1303,12162,1442034000000,1442052000000,0,4,1] + - ["NL",1442052000000,53,12162,1442044800000,1442055600000,0,4,1] + - ["NL",1442055600000,105,12162,1442048400000,1442059200000,0,4,1] + - ["NL",1442059200000,206,12162,1442052000000,1442062800000,0,4,1] + - ["NL",1442062800000,-30,12162,1442055600000,1442066400000,0,4,2] + - ["NL",1442066400000,61,12162,1442059200000,1442070000000,0,4,2] + - ["NL",1442070000000,-84,12162,1442062800000,1442073600000,0,4,2] + - ["NL",1442073600000,166,12162,1442066400000,1442077200000,0,4,2] + - ["NL",1442077200000,878,12162,1442070000000,1442080800000,0,4,2] + - ["NL",1442080800000,8947,12162,1442073600000,1442084400000,0,4,2] + - ["NL",1442084400000,436,12162,1442077200000,1442088000000,0,4,3] + - ["NL",1442088000000,12,12162,1442080800000,1442091600000,0,4,3] + - ["NL",1442091600000,19,12162,1442084400000,1442095200000,0,4,3] + - ["NL",1442095200000,70,12162,1442088000000,1442098800000,0,4,3] + - ["NL",1442098800000,4,12162,1442091600000,null,0,4,3] + - ["NO",1442019600000,48,432,null,1442048400000,48,2,1] + - ["NO",1442048400000,-447,432,null,1442052000000,48,2,1] + - ["NO",1442052000000,447,432,1442019600000,1442055600000,48,2,1] + - ["NO",1442055600000,29,432,1442048400000,1442066400000,48,2,1] + - ["NO",1442066400000,71,432,1442052000000,1442073600000,48,2,2] + - ["NO",1442073600000,222,432,1442055600000,1442080800000,48,2,2] + - ["NO",1442080800000,31,432,1442066400000,1442088000000,48,2,2] + - ["NO",1442088000000,15,432,1442073600000,1442091600000,48,2,2] + - ["NO",1442091600000,15,432,1442080800000,1442095200000,48,2,3] + - ["NO",1442095200000,-1,432,1442088000000,1442098800000,48,2,3] + - ["NO",1442098800000,2,432,1442091600000,null,48,2,3] + - ["NP",1442048400000,61,61,null,null,61,61,1] + - ["NZ",1442019600000,28,1693,null,1442026800000,28,-2,1] + - ["NZ",1442026800000,635,1693,null,1442037600000,28,-2,1] + - ["NZ",1442037600000,66,1693,1442019600000,1442048400000,28,-2,1] + - ["NZ",1442048400000,189,1693,1442026800000,1442059200000,28,-2,2] + - ["NZ",1442059200000,428,1693,1442037600000,1442084400000,28,-2,2] + - ["NZ",1442084400000,-52,1693,1442048400000,1442088000000,28,-2,2] + - ["NZ",1442088000000,405,1693,1442059200000,1442095200000,28,-2,3] + - ["NZ",1442095200000,-4,1693,1442084400000,1442098800000,28,-2,3] + - ["NZ",1442098800000,-2,1693,1442088000000,null,28,-2,3] + - ["OM",1442052000000,0,0,null,null,0,0,1] + - ["PA",1442026800000,0,0,null,null,0,0,1] + - ["PE",1442019600000,523,2134,null,1442023200000,523,1861,1] + - ["PE",1442023200000,26,2134,null,1442026800000,523,1861,1] + - ["PE",1442026800000,-12,2134,1442019600000,1442062800000,523,1861,1] + - ["PE",1442062800000,-12,2134,1442023200000,1442077200000,523,1861,2] + - ["PE",1442077200000,-163,2134,1442026800000,1442080800000,523,1861,2] + - ["PE",1442080800000,-2,2134,1442062800000,1442084400000,523,1861,2] + - ["PE",1442084400000,-68,2134,1442077200000,1442095200000,523,1861,3] + - ["PE",1442095200000,-19,2134,1442080800000,1442098800000,523,1861,3] + - ["PE",1442098800000,1861,2134,1442084400000,null,523,1861,3] + - ["PH",1442019600000,6,6613,null,1442023200000,6,8,1] + - ["PH",1442023200000,459,6613,null,1442026800000,6,8,1] + - ["PH",1442026800000,910,6613,1442019600000,1442030400000,6,8,1] + - ["PH",1442030400000,26,6613,1442023200000,1442034000000,6,8,1] + - ["PH",1442034000000,59,6613,1442026800000,1442037600000,6,8,1] + - ["PH",1442037600000,17,6613,1442030400000,1442041200000,6,8,1] + - ["PH",1442041200000,0,6613,1442034000000,1442044800000,6,8,1] + - ["PH",1442044800000,55,6613,1442037600000,1442048400000,6,8,2] + - ["PH",1442048400000,62,6613,1442041200000,1442052000000,6,8,2] + - ["PH",1442052000000,22,6613,1442044800000,1442055600000,6,8,2] + - ["PH",1442055600000,1969,6613,1442048400000,1442059200000,6,8,2] + - ["PH",1442059200000,273,6613,1442052000000,1442062800000,6,8,2] + - ["PH",1442062800000,171,6613,1442055600000,1442066400000,6,8,2] + - ["PH",1442066400000,1880,6613,1442059200000,1442070000000,6,8,2] + - ["PH",1442070000000,34,6613,1442062800000,1442073600000,6,8,3] + - ["PH",1442073600000,-227,6613,1442066400000,1442077200000,6,8,3] + - ["PH",1442077200000,2,6613,1442070000000,1442080800000,6,8,3] + - ["PH",1442080800000,32,6613,1442073600000,1442084400000,6,8,3] + - ["PH",1442084400000,39,6613,1442077200000,1442091600000,6,8,3] + - ["PH",1442091600000,816,6613,1442080800000,1442098800000,6,8,3] + - ["PH",1442098800000,8,6613,1442084400000,null,6,8,3] + - ["PK",1442019600000,335,641,null,1442026800000,335,43,1] + - ["PK",1442026800000,101,641,null,1442037600000,335,43,1] + - ["PK",1442037600000,100,641,1442019600000,1442041200000,335,43,1] + - ["PK",1442041200000,24,641,1442026800000,1442048400000,335,43,2] + - ["PK",1442048400000,15,641,1442037600000,1442062800000,335,43,2] + - ["PK",1442062800000,23,641,1442041200000,1442070000000,335,43,3] + - ["PK",1442070000000,43,641,1442048400000,null,335,43,3] + - ["PL",1442037600000,95,9815,null,1442041200000,95,-9,1] + - ["PL",1442041200000,281,9815,null,1442044800000,95,-9,1] + - ["PL",1442044800000,319,9815,1442037600000,1442048400000,95,-9,1] + - ["PL",1442048400000,366,9815,1442041200000,1442052000000,95,-9,1] + - ["PL",1442052000000,330,9815,1442044800000,1442055600000,95,-9,1] + - ["PL",1442055600000,410,9815,1442048400000,1442059200000,95,-9,1] + - ["PL",1442059200000,199,9815,1442052000000,1442062800000,95,-9,2] + - ["PL",1442062800000,4171,9815,1442055600000,1442066400000,95,-9,2] + - ["PL",1442066400000,34,9815,1442059200000,1442070000000,95,-9,2] + - ["PL",1442070000000,146,9815,1442062800000,1442073600000,95,-9,2] + - ["PL",1442073600000,30,9815,1442066400000,1442077200000,95,-9,2] + - ["PL",1442077200000,324,9815,1442070000000,1442080800000,95,-9,2] + - ["PL",1442080800000,7,9815,1442073600000,1442084400000,95,-9,3] + - ["PL",1442084400000,13,9815,1442077200000,1442088000000,95,-9,3] + - ["PL",1442088000000,346,9815,1442080800000,1442091600000,95,-9,3] + - ["PL",1442091600000,902,9815,1442084400000,1442095200000,95,-9,3] + - ["PL",1442095200000,1851,9815,1442088000000,1442098800000,95,-9,3] + - ["PL",1442098800000,-9,9815,1442091600000,null,95,-9,3] + - ["PR",1442026800000,22,23,null,1442030400000,22,29,1] + - ["PR",1442030400000,2,23,null,1442059200000,22,29,1] + - ["PR",1442059200000,-35,23,1442026800000,1442077200000,22,29,2] + - ["PR",1442077200000,5,23,1442030400000,1442095200000,22,29,2] + - ["PR",1442095200000,29,23,1442059200000,null,22,29,3] + - ["PT",1442019600000,172,4037,null,1442044800000,172,2,1] + - ["PT",1442044800000,11,4037,null,1442052000000,172,2,1] + - ["PT",1442052000000,102,4037,1442019600000,1442066400000,172,2,1] + - ["PT",1442066400000,12,4037,1442044800000,1442070000000,172,2,1] + - ["PT",1442070000000,3470,4037,1442052000000,1442077200000,172,2,2] + - ["PT",1442077200000,-75,4037,1442066400000,1442080800000,172,2,2] + - ["PT",1442080800000,-79,4037,1442070000000,1442088000000,172,2,2] + - ["PT",1442088000000,403,4037,1442077200000,1442095200000,172,2,3] + - ["PT",1442095200000,19,4037,1442080800000,1442098800000,172,2,3] + - ["PT",1442098800000,2,4037,1442088000000,null,172,2,3] + - ["PY",1442019600000,1,634,null,1442080800000,1,628,1] + - ["PY",1442080800000,5,634,null,1442084400000,1,628,2] + - ["PY",1442084400000,628,634,1442019600000,null,1,628,3] + - ["QA",1442041200000,13,13,null,null,13,13,1] + - ["RO",1442034000000,68,2893,null,1442041200000,68,824,1] + - ["RO",1442041200000,845,2893,null,1442044800000,68,824,1] + - ["RO",1442044800000,284,2893,1442034000000,1442052000000,68,824,1] + - ["RO",1442052000000,319,2893,1442041200000,1442055600000,68,824,1] + - ["RO",1442055600000,26,2893,1442044800000,1442062800000,68,824,2] + - ["RO",1442062800000,541,2893,1442052000000,1442070000000,68,824,2] + - ["RO",1442070000000,-29,2893,1442055600000,1442073600000,68,824,2] + - ["RO",1442073600000,15,2893,1442062800000,1442091600000,68,824,3] + - ["RO",1442091600000,0,2893,1442070000000,1442095200000,68,824,3] + - ["RO",1442095200000,824,2893,1442073600000,null,68,824,3] + - ["RS",1442019600000,6,906,null,1442062800000,6,-15,1] + - ["RS",1442062800000,13,906,null,1442066400000,6,-15,1] + - ["RS",1442066400000,0,906,1442019600000,1442073600000,6,-15,1] + - ["RS",1442073600000,813,906,1442062800000,1442080800000,6,-15,2] + - ["RS",1442080800000,0,906,1442066400000,1442084400000,6,-15,2] + - ["RS",1442084400000,89,906,1442073600000,1442091600000,6,-15,3] + - ["RS",1442091600000,-15,906,1442080800000,null,6,-15,3] + - ["RU",1442019600000,2214,48104,null,1442023200000,2214,12098,1] + - ["RU",1442023200000,299,48104,null,1442026800000,2214,12098,1] + - ["RU",1442026800000,0,48104,1442019600000,1442030400000,2214,12098,1] + - ["RU",1442030400000,76,48104,1442023200000,1442034000000,2214,12098,1] + - ["RU",1442034000000,658,48104,1442026800000,1442037600000,2214,12098,1] + - ["RU",1442037600000,-324,48104,1442030400000,1442041200000,2214,12098,1] + - ["RU",1442041200000,580,48104,1442034000000,1442044800000,2214,12098,1] + - ["RU",1442044800000,2564,48104,1442037600000,1442048400000,2214,12098,1] + - ["RU",1442048400000,1027,48104,1442041200000,1442052000000,2214,12098,2] + - ["RU",1442052000000,1214,48104,1442044800000,1442055600000,2214,12098,2] + - ["RU",1442055600000,499,48104,1442048400000,1442059200000,2214,12098,2] + - ["RU",1442059200000,3902,48104,1442052000000,1442062800000,2214,12098,2] + - ["RU",1442062800000,168,48104,1442055600000,1442066400000,2214,12098,2] + - ["RU",1442066400000,2047,48104,1442059200000,1442070000000,2214,12098,2] + - ["RU",1442070000000,4706,48104,1442062800000,1442073600000,2214,12098,2] + - ["RU",1442073600000,1618,48104,1442066400000,1442077200000,2214,12098,2] + - ["RU",1442077200000,1162,48104,1442070000000,1442080800000,2214,12098,3] + - ["RU",1442080800000,655,48104,1442073600000,1442084400000,2214,12098,3] + - ["RU",1442084400000,6461,48104,1442077200000,1442088000000,2214,12098,3] + - ["RU",1442088000000,2596,48104,1442080800000,1442091600000,2214,12098,3] + - ["RU",1442091600000,3449,48104,1442084400000,1442095200000,2214,12098,3] + - ["RU",1442095200000,435,48104,1442088000000,1442098800000,2214,12098,3] + - ["RU",1442098800000,12098,48104,1442091600000,null,2214,12098,3] + - ["SA",1442037600000,-97,1614,null,1442048400000,-97,458,1] + - ["SA",1442048400000,14,1614,null,1442055600000,-97,458,1] + - ["SA",1442055600000,11,1614,1442037600000,1442059200000,-97,458,1] + - ["SA",1442059200000,0,1614,1442048400000,1442066400000,-97,458,2] + - ["SA",1442066400000,1276,1614,1442055600000,1442073600000,-97,458,2] + - ["SA",1442073600000,2,1614,1442059200000,1442077200000,-97,458,2] + - ["SA",1442077200000,-50,1614,1442066400000,1442084400000,-97,458,3] + - ["SA",1442084400000,458,1614,1442073600000,null,-97,458,3] + - ["SE",1442019600000,109,1838,null,1442023200000,109,0,1] + - ["SE",1442023200000,3,1838,null,1442030400000,109,0,1] + - ["SE",1442030400000,30,1838,1442019600000,1442041200000,109,0,1] + - ["SE",1442041200000,91,1838,1442023200000,1442048400000,109,0,1] + - ["SE",1442048400000,-145,1838,1442030400000,1442052000000,109,0,1] + - ["SE",1442052000000,1,1838,1442041200000,1442055600000,109,0,2] + - ["SE",1442055600000,-5,1838,1442048400000,1442059200000,109,0,2] + - ["SE",1442059200000,1476,1838,1442052000000,1442066400000,109,0,2] + - ["SE",1442066400000,14,1838,1442055600000,1442070000000,109,0,2] + - ["SE",1442070000000,78,1838,1442059200000,1442080800000,109,0,2] + - ["SE",1442080800000,89,1838,1442066400000,1442084400000,109,0,3] + - ["SE",1442084400000,37,1838,1442070000000,1442091600000,109,0,3] + - ["SE",1442091600000,-1,1838,1442080800000,1442095200000,109,0,3] + - ["SE",1442095200000,61,1838,1442084400000,1442098800000,109,0,3] + - ["SE",1442098800000,0,1838,1442091600000,null,109,0,3] + - ["SG",1442026800000,2758,3338,null,1442030400000,2758,0,1] + - ["SG",1442030400000,1,3338,null,1442037600000,2758,0,1] + - ["SG",1442037600000,3,3338,1442026800000,1442041200000,2758,0,1] + - ["SG",1442041200000,59,3338,1442030400000,1442044800000,2758,0,2] + - ["SG",1442044800000,77,3338,1442037600000,1442048400000,2758,0,2] + - ["SG",1442048400000,52,3338,1442041200000,1442062800000,2758,0,2] + - ["SG",1442062800000,388,3338,1442044800000,1442066400000,2758,0,3] + - ["SG",1442066400000,0,3338,1442048400000,null,2758,0,3] + - ["SI",1442080800000,-45,-36,null,1442091600000,-45,9,1] + - ["SI",1442091600000,9,-36,null,null,-45,9,2] + - ["SK",1442037600000,-1,379,null,1442052000000,-1,7,1] + - ["SK",1442052000000,13,379,null,1442062800000,-1,7,1] + - ["SK",1442062800000,6,379,1442037600000,1442073600000,-1,7,2] + - ["SK",1442073600000,446,379,1442052000000,1442084400000,-1,7,2] + - ["SK",1442084400000,-92,379,1442062800000,1442098800000,-1,7,3] + - ["SK",1442098800000,7,379,1442073600000,null,-1,7,3] + - ["SV",1442019600000,-1,114,null,1442084400000,-1,9,1] + - ["SV",1442084400000,106,114,null,1442088000000,-1,9,2] + - ["SV",1442088000000,9,114,1442019600000,null,-1,9,3] + - ["TH",1442034000000,0,24,null,1442041200000,0,13,1] + - ["TH",1442041200000,3,24,null,1442044800000,0,13,1] + - ["TH",1442044800000,110,24,1442034000000,1442052000000,0,13,1] + - ["TH",1442052000000,-22,24,1442041200000,1442055600000,0,13,2] + - ["TH",1442055600000,0,24,1442044800000,1442062800000,0,13,2] + - ["TH",1442062800000,-46,24,1442052000000,1442066400000,0,13,2] + - ["TH",1442066400000,-34,24,1442055600000,1442070000000,0,13,3] + - ["TH",1442070000000,0,24,1442062800000,1442084400000,0,13,3] + - ["TH",1442084400000,13,24,1442066400000,null,0,13,3] + - ["TJ",1442048400000,1471,1471,null,null,1471,1471,1] + - ["TN",1442098800000,-9,-9,null,null,-9,-9,1] + - ["TR",1442023200000,306,7078,null,1442041200000,306,-29,1] + - ["TR",1442041200000,1,7078,null,1442044800000,306,-29,1] + - ["TR",1442044800000,41,7078,1442023200000,1442048400000,306,-29,1] + - ["TR",1442048400000,88,7078,1442041200000,1442052000000,306,-29,1] + - ["TR",1442052000000,41,7078,1442044800000,1442055600000,306,-29,1] + - ["TR",1442055600000,299,7078,1442048400000,1442062800000,306,-29,2] + - ["TR",1442062800000,315,7078,1442052000000,1442066400000,306,-29,2] + - ["TR",1442066400000,85,7078,1442055600000,1442070000000,306,-29,2] + - ["TR",1442070000000,236,7078,1442062800000,1442077200000,306,-29,2] + - ["TR",1442077200000,89,7078,1442066400000,1442080800000,306,-29,2] + - ["TR",1442080800000,-1,7078,1442070000000,1442084400000,306,-29,3] + - ["TR",1442084400000,170,7078,1442077200000,1442088000000,306,-29,3] + - ["TR",1442088000000,2389,7078,1442080800000,1442091600000,306,-29,3] + - ["TR",1442091600000,3048,7078,1442084400000,1442095200000,306,-29,3] + - ["TR",1442095200000,-29,7078,1442088000000,null,306,-29,3] + - ["TT",1442088000000,9,9,null,null,9,9,1] + - ["TW",1442016000000,92,3656,null,1442019600000,92,-60,1] + - ["TW",1442019600000,0,3656,null,1442023200000,92,-60,1] + - ["TW",1442023200000,97,3656,1442016000000,1442026800000,92,-60,1] + - ["TW",1442026800000,680,3656,1442019600000,1442030400000,92,-60,1] + - ["TW",1442030400000,0,3656,1442023200000,1442034000000,92,-60,1] + - ["TW",1442034000000,143,3656,1442026800000,1442037600000,92,-60,1] + - ["TW",1442037600000,266,3656,1442030400000,1442041200000,92,-60,1] + - ["TW",1442041200000,366,3656,1442034000000,1442044800000,92,-60,1] + - ["TW",1442044800000,24,3656,1442037600000,1442048400000,92,-60,2] + - ["TW",1442048400000,75,3656,1442041200000,1442052000000,92,-60,2] + - ["TW",1442052000000,24,3656,1442044800000,1442055600000,92,-60,2] + - ["TW",1442055600000,48,3656,1442048400000,1442059200000,92,-60,2] + - ["TW",1442059200000,-157,3656,1442052000000,1442062800000,92,-60,2] + - ["TW",1442062800000,-272,3656,1442055600000,1442066400000,92,-60,2] + - ["TW",1442066400000,624,3656,1442059200000,1442070000000,92,-60,2] + - ["TW",1442070000000,485,3656,1442062800000,1442073600000,92,-60,3] + - ["TW",1442073600000,772,3656,1442066400000,1442077200000,92,-60,3] + - ["TW",1442077200000,502,3656,1442070000000,1442080800000,92,-60,3] + - ["TW",1442080800000,24,3656,1442073600000,1442084400000,92,-60,3] + - ["TW",1442084400000,0,3656,1442077200000,1442095200000,92,-60,3] + - ["TW",1442095200000,-77,3656,1442080800000,1442098800000,92,-60,3] + - ["TW",1442098800000,-60,3656,1442084400000,null,92,-60,3] + - ["UA",1442034000000,3468,24898,null,1442037600000,3468,38,1] + - ["UA",1442037600000,-1,24898,null,1442041200000,3468,38,1] + - ["UA",1442041200000,74,24898,1442034000000,1442044800000,3468,38,1] + - ["UA",1442044800000,280,24898,1442037600000,1442048400000,3468,38,1] + - ["UA",1442048400000,2,24898,1442041200000,1442052000000,3468,38,1] + - ["UA",1442052000000,410,24898,1442044800000,1442055600000,3468,38,1] + - ["UA",1442055600000,14202,24898,1442048400000,1442059200000,3468,38,1] + - ["UA",1442059200000,-2,24898,1442052000000,1442062800000,3468,38,2] + - ["UA",1442062800000,773,24898,1442055600000,1442066400000,3468,38,2] + - ["UA",1442066400000,296,24898,1442059200000,1442070000000,3468,38,2] + - ["UA",1442070000000,1733,24898,1442062800000,1442073600000,3468,38,2] + - ["UA",1442073600000,4241,24898,1442066400000,1442077200000,3468,38,2] + - ["UA",1442077200000,-181,24898,1442070000000,1442080800000,3468,38,2] + - ["UA",1442080800000,-1,24898,1442073600000,1442084400000,3468,38,3] + - ["UA",1442084400000,5,24898,1442077200000,1442088000000,3468,38,3] + - ["UA",1442088000000,-21,24898,1442080800000,1442091600000,3468,38,3] + - ["UA",1442091600000,-388,24898,1442084400000,1442095200000,3468,38,3] + - ["UA",1442095200000,-30,24898,1442088000000,1442098800000,3468,38,3] + - ["UA",1442098800000,38,24898,1442091600000,null,3468,38,3] + - ["UG",1442070000000,1,1,null,null,1,1,1] + - ["US",1442016000000,0,38882,null,1442019600000,0,3575,1] + - ["US",1442019600000,1043,38882,null,1442023200000,0,3575,1] + - ["US",1442023200000,2844,38882,1442016000000,1442026800000,0,3575,1] + - ["US",1442026800000,1512,38882,1442019600000,1442030400000,0,3575,1] + - ["US",1442030400000,2023,38882,1442023200000,1442034000000,0,3575,1] + - ["US",1442034000000,3648,38882,1442026800000,1442037600000,0,3575,1] + - ["US",1442037600000,3675,38882,1442030400000,1442041200000,0,3575,1] + - ["US",1442041200000,1999,38882,1442034000000,1442044800000,0,3575,1] + - ["US",1442044800000,139,38882,1442037600000,1442048400000,0,3575,2] + - ["US",1442048400000,-466,38882,1442041200000,1442052000000,0,3575,2] + - ["US",1442052000000,-2,38882,1442044800000,1442055600000,0,3575,2] + - ["US",1442055600000,156,38882,1442048400000,1442059200000,0,3575,2] + - ["US",1442059200000,11,38882,1442052000000,1442062800000,0,3575,2] + - ["US",1442062800000,47,38882,1442055600000,1442066400000,0,3575,2] + - ["US",1442066400000,772,38882,1442059200000,1442070000000,0,3575,2] + - ["US",1442070000000,3505,38882,1442062800000,1442073600000,0,3575,2] + - ["US",1442073600000,1100,38882,1442066400000,1442077200000,0,3575,3] + - ["US",1442077200000,2168,38882,1442070000000,1442080800000,0,3575,3] + - ["US",1442080800000,4001,38882,1442073600000,1442084400000,0,3575,3] + - ["US",1442084400000,2523,38882,1442077200000,1442088000000,0,3575,3] + - ["US",1442088000000,1691,38882,1442080800000,1442091600000,0,3575,3] + - ["US",1442091600000,2502,38882,1442084400000,1442095200000,0,3575,3] + - ["US",1442095200000,416,38882,1442088000000,1442098800000,0,3575,3] + - ["US",1442098800000,3575,38882,1442091600000,null,0,3575,3] + - ["UY",1442019600000,77,936,null,1442023200000,77,23,1] + - ["UY",1442023200000,517,936,null,1442026800000,77,23,1] + - ["UY",1442026800000,76,936,1442019600000,1442037600000,77,23,1] + - ["UY",1442037600000,1,936,1442023200000,1442070000000,77,23,2] + - ["UY",1442070000000,284,936,1442026800000,1442073600000,77,23,2] + - ["UY",1442073600000,-42,936,1442037600000,1442077200000,77,23,3] + - ["UY",1442077200000,23,936,1442070000000,null,77,23,3] + - ["UZ",1442044800000,1369,1369,null,null,1369,1369,1] + - ["VE",1442023200000,115,1101,null,1442026800000,115,9,1] + - ["VE",1442026800000,-17,1101,null,1442030400000,115,9,1] + - ["VE",1442030400000,51,1101,1442023200000,1442034000000,115,9,1] + - ["VE",1442034000000,-2,1101,1442026800000,1442066400000,115,9,1] + - ["VE",1442066400000,18,1101,1442030400000,1442070000000,115,9,2] + - ["VE",1442070000000,420,1101,1442034000000,1442077200000,115,9,2] + - ["VE",1442077200000,412,1101,1442066400000,1442084400000,115,9,2] + - ["VE",1442084400000,60,1101,1442070000000,1442095200000,115,9,3] + - ["VE",1442095200000,35,1101,1442077200000,1442098800000,115,9,3] + - ["VE",1442098800000,9,1101,1442084400000,null,115,9,3] + - ["VG",1442062800000,-238,-238,null,null,-238,-238,1] + - ["VN",1442023200000,-9,1560,null,1442026800000,-9,-10,1] + - ["VN",1442026800000,63,1560,null,1442034000000,-9,-10,1] + - ["VN",1442034000000,-29,1560,1442023200000,1442037600000,-9,-10,1] + - ["VN",1442037600000,-11,1560,1442026800000,1442041200000,-9,-10,1] + - ["VN",1442041200000,0,1560,1442034000000,1442048400000,-9,-10,1] + - ["VN",1442048400000,-15,1560,1442037600000,1442052000000,-9,-10,2] + - ["VN",1442052000000,90,1560,1442041200000,1442055600000,-9,-10,2] + - ["VN",1442055600000,37,1560,1442048400000,1442059200000,-9,-10,2] + - ["VN",1442059200000,8,1560,1442052000000,1442062800000,-9,-10,2] + - ["VN",1442062800000,146,1560,1442055600000,1442066400000,-9,-10,3] + - ["VN",1442066400000,811,1560,1442059200000,1442070000000,-9,-10,3] + - ["VN",1442070000000,479,1560,1442062800000,1442084400000,-9,-10,3] + - ["VN",1442084400000,-10,1560,1442066400000,null,-9,-10,3] + - ["ZA",1442034000000,-3,127,null,1442048400000,-3,1,1] + - ["ZA",1442048400000,79,127,null,1442059200000,-3,1,1] + - ["ZA",1442059200000,50,127,1442034000000,1442070000000,-3,1,2] + - ["ZA",1442070000000,0,127,1442048400000,1442091600000,-3,1,2] + - ["ZA",1442091600000,1,127,1442059200000,null,-3,1,3] + - ["ZM",1442041200000,133,133,null,null,133,133,1] + - ["ZW",1442044800000,0,254,null,1442048400000,0,254,1] + - ["ZW",1442048400000,254,254,null,null,0,254,2] From 2a4a3ab0d5c7efe8285eba404ebfe519b1c6be69 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 4 Oct 2023 10:29:56 +0000 Subject: [PATCH 006/100] updates to test ouptuts --- ...ipediaAggregationsMultipleOrdering.sqlTest | 48 +- .../window/wikipediaCumulativeOrdered.sqlTest | 1974 ++++++++--------- .../tests/window/wikipediaScanWindow.sqlTest | 496 ++--- ...ikipediaSimplePartitionInitialSort.sqlTest | 1974 ++++++++--------- 4 files changed, 2246 insertions(+), 2246 deletions(-) diff --git a/sql/src/test/resources/calcite/tests/window/wikipediaAggregationsMultipleOrdering.sqlTest b/sql/src/test/resources/calcite/tests/window/wikipediaAggregationsMultipleOrdering.sqlTest index b2b5aa49c611..e441d0f6f76a 100644 --- a/sql/src/test/resources/calcite/tests/window/wikipediaAggregationsMultipleOrdering.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/wikipediaAggregationsMultipleOrdering.sqlTest @@ -39,7 +39,7 @@ expectedResults: - ["CL",1442016000000,161,-194,13] - ["DE",1442016000000,167,231,14] - ["KR",1442016000000,1024,1788,15] - - ["",1442016000000,29873,603401,16] + - [null,1442016000000,29873,603401,16] - ["CL",1442019600000,-370,-154,1] - ["HK",1442019600000,-113,2090,2] - ["MY",1442019600000,-7,1018,3] @@ -76,7 +76,7 @@ expectedResults: - ["JP",1442019600000,2002,4883,34] - ["CA",1442019600000,2184,4315,35] - ["RU",1442019600000,2214,2513,36] - - ["",1442019600000,173892,856027,37] + - [null,1442019600000,173892,856027,37] - ["GT",1442023200000,-167,7,1] - ["IN",1442023200000,-142,2319,2] - ["CN",1442023200000,-13,239,3] @@ -109,7 +109,7 @@ expectedResults: - ["HK",1442023200000,2414,2247,30] - ["AR",1442023200000,2514,3156,31] - ["US",1442023200000,2844,7422,32] - - ["",1442023200000,399636,1022699,33] + - [null,1442023200000,399636,1022699,33] - ["ID",1442026800000,-416,-12,1] - ["HK",1442026800000,-211,3384,2] - ["KR",1442026800000,-179,3078,3] @@ -145,7 +145,7 @@ expectedResults: - ["CA",1442026800000,2216,4446,33] - ["SG",1442026800000,2758,2762,34] - ["MX",1442026800000,3642,5441,35] - - ["",1442026800000,252626,1353656,36] + - [null,1442026800000,252626,1353656,36] - ["AU",1442030400000,-377,402,1] - ["BE",1442030400000,-103,-45,2] - ["CA",1442030400000,-47,4685,3] @@ -177,7 +177,7 @@ expectedResults: - ["US",1442030400000,2023,14745,29] - ["CR",1442030400000,2497,3006,30] - ["GB",1442030400000,2524,5265,31] - - ["",1442030400000,166672,1524388,32] + - [null,1442030400000,166672,1524388,32] - ["ES",1442034000000,-52,167,1] - ["VN",1442034000000,-29,14,2] - ["GB",1442034000000,-12,5253,3] @@ -211,7 +211,7 @@ expectedResults: - ["IN",1442034000000,1350,3845,31] - ["UA",1442034000000,3468,3541,32] - ["US",1442034000000,3648,15701,33] - - ["",1442034000000,330957,1893946,34] + - [null,1442034000000,330957,1893946,34] - ["RU",1442037600000,-324,3554,1] - ["CA",1442037600000,-132,2221,2] - ["SA",1442037600000,-97,-72,3] @@ -247,7 +247,7 @@ expectedResults: - ["JP",1442037600000,2181,7873,33] - ["US",1442037600000,3675,12996,34] - ["FR",1442037600000,4174,6140,35] - - ["",1442037600000,200605,1810312,36] + - [null,1442037600000,200605,1810312,36] - ["MX",1442041200000,-294,1025,1] - ["IR",1442041200000,-79,749,2] - ["AO",1442041200000,-26,18,3] @@ -290,7 +290,7 @@ expectedResults: - ["MY",1442041200000,935,2475,40] - ["JP",1442041200000,1373,8819,41] - ["US",1442041200000,1999,11018,42] - - ["",1442041200000,543450,1866002,43] + - [null,1442041200000,543450,1866002,43] - ["ID",1442044800000,-388,-320,1] - ["ES",1442044800000,-169,54,2] - ["MY",1442044800000,-127,2483,3] @@ -331,7 +331,7 @@ expectedResults: - ["JP",1442044800000,1569,10803,38] - ["RU",1442044800000,2564,5719,39] - ["IN",1442044800000,2677,5038,40] - - ["",1442044800000,316002,2486700,41] + - [null,1442044800000,316002,2486700,41] - ["US",1442048400000,-466,5501,1] - ["NO",1442048400000,-447,77,2] - ["KR",1442048400000,-374,4138,3] @@ -377,7 +377,7 @@ expectedResults: - ["TJ",1442048400000,1471,1471,43] - ["JP",1442048400000,1981,10891,44] - ["FR",1442048400000,3027,9077,45] - - ["",1442048400000,308316,2439701,46] + - [null,1442048400000,308316,2439701,46] - ["AU",1442052000000,-643,279,1] - ["GE",1442052000000,-108,-140,2] - ["TH",1442052000000,-22,45,3] @@ -425,7 +425,7 @@ expectedResults: - ["JP",1442052000000,2789,8625,45] - ["AT",1442052000000,4793,4638,46] - ["BG",1442052000000,18936,19191,47] - - ["",1442052000000,787370,2698393,48] + - [null,1442052000000,787370,2698393,48] - ["BA",1442055600000,-202,-178,1] - ["IR",1442055600000,-124,1520,2] - ["LB",1442055600000,-67,-67,3] @@ -470,7 +470,7 @@ expectedResults: - ["KR",1442055600000,3640,5396,42] - ["IT",1442055600000,6240,12759,43] - ["UA",1442055600000,14202,15665,44] - - ["",1442055600000,283958,2544408,45] + - [null,1442055600000,283958,2544408,45] - ["TW",1442059200000,-157,342,1] - ["JP",1442059200000,-85,6653,2] - ["MA",1442059200000,-56,216,3] @@ -514,7 +514,7 @@ expectedResults: - ["RU",1442059200000,3902,8857,41] - ["FR",1442059200000,4650,16969,42] - ["GB",1442059200000,16111,23886,43] - - ["",1442059200000,459297,2579990,44] + - [null,1442059200000,459297,2579990,44] - ["CA",1442062800000,-367,1200,1] - ["TW",1442062800000,-272,752,2] - ["VG",1442062800000,-238,-238,3] @@ -558,7 +558,7 @@ expectedResults: - ["PL",1442062800000,4171,5290,41] - ["FR",1442062800000,5676,14416,42] - ["GB",1442062800000,5743,23520,43] - - ["",1442062800000,389465,2630189,44] + - [null,1442062800000,389465,2630189,44] - ["CL",1442066400000,-41,520,1] - ["TH",1442066400000,-34,-89,2] - ["AU",1442066400000,-21,-455,3] @@ -604,7 +604,7 @@ expectedResults: - ["FR",1442066400000,2516,17301,43] - ["KR",1442066400000,3299,8425,44] - ["IT",1442066400000,4155,15542,45] - - ["",1442066400000,351584,2218213,46] + - [null,1442066400000,351584,2218213,46] - ["IE",1442070000000,-100,2212,1] - ["NL",1442070000000,-84,1197,2] - ["CO",1442070000000,-45,41598,3] @@ -654,7 +654,7 @@ expectedResults: - ["US",1442070000000,3505,7603,47] - ["RU",1442070000000,4706,13603,48] - ["IN",1442070000000,12091,21331,49] - - ["",1442070000000,358515,2326738,50] + - [null,1442070000000,358515,2326738,50] - ["GR",1442073600000,-314,-63,1] - ["PH",1442073600000,-227,1892,2] - ["IR",1442073600000,-193,1390,3] @@ -698,7 +698,7 @@ expectedResults: - ["HK",1442073600000,5545,5896,41] - ["DE",1442073600000,6075,12922,42] - ["CO",1442073600000,39860,41182,43] - - ["",1442073600000,375394,2320518,44] + - [null,1442073600000,375394,2320518,44] - ["AR",1442077200000,-591,-189,1] - ["FR",1442077200000,-444,13268,2] - ["EC",1442077200000,-366,232,3] @@ -749,7 +749,7 @@ expectedResults: - ["IN",1442077200000,5699,19263,48] - ["AE",1442077200000,6323,6397,49] - ["MD",1442077200000,6916,6916,50] - - ["",1442077200000,392483,2303622,51] + - [null,1442077200000,392483,2303622,51] - ["MX",1442080800000,-376,4951,1] - ["BR",1442080800000,-267,5316,2] - ["PT",1442080800000,-79,3750,3] @@ -798,7 +798,7 @@ expectedResults: - ["US",1442080800000,4001,14988,46] - ["IT",1442080800000,5544,16805,47] - ["NL",1442080800000,8947,10355,48] - - ["",1442080800000,453077,2255910,49] + - [null,1442080800000,453077,2255910,49] - ["DE",1442084400000,-125,13816,1] - ["DK",1442084400000,-97,510,2] - ["SK",1442084400000,-92,380,3] @@ -850,7 +850,7 @@ expectedResults: - ["IT",1442084400000,2660,17075,49] - ["RU",1442084400000,6461,15941,50] - ["FR",1442084400000,6643,12891,51] - - ["",1442084400000,372569,2411822,52] + - [null,1442084400000,372569,2411822,52] - ["ES",1442088000000,-130,4807,1] - ["HU",1442088000000,-71,628,2] - ["UA",1442088000000,-21,-616,3] @@ -885,7 +885,7 @@ expectedResults: - ["IT",1442088000000,3746,17429,32] - ["AT",1442088000000,7050,7409,33] - ["CO",1442088000000,17150,18474,34] - - ["",1442088000000,303872,2410929,35] + - [null,1442088000000,303872,2410929,35] - ["UA",1442091600000,-388,-397,1] - ["IE",1442091600000,-71,1051,2] - ["RS",1442091600000,-15,887,3] @@ -926,7 +926,7 @@ expectedResults: - ["TR",1442091600000,3048,5577,38] - ["RU",1442091600000,3449,25694,39] - ["DE",1442091600000,4355,6889,40] - - ["",1442091600000,514427,2294605,41] + - [null,1442091600000,514427,2294605,41] - ["MX",1442095200000,-456,1846,1] - ["CA",1442095200000,-361,2740,2] - ["CL",1442095200000,-276,165,3] @@ -970,7 +970,7 @@ expectedResults: - ["PL",1442095200000,1851,3103,41] - ["ES",1442095200000,2506,3871,42] - ["IT",1442095200000,2940,10262,43] - - ["",1442095200000,374501,1841528,44] + - [null,1442095200000,374501,1841528,44] - ["BR",1442098800000,-645,329,1] - ["TW",1442098800000,-60,-113,2] - ["KR",1442098800000,-36,1629,3] @@ -1010,4 +1010,4 @@ expectedResults: - ["PE",1442098800000,1861,1772,37] - ["US",1442098800000,3575,8184,38] - ["RU",1442098800000,12098,18578,39] - - ["",1442098800000,276159,1468959,40] + - [null,1442098800000,276159,1468959,40] diff --git a/sql/src/test/resources/calcite/tests/window/wikipediaCumulativeOrdered.sqlTest b/sql/src/test/resources/calcite/tests/window/wikipediaCumulativeOrdered.sqlTest index 7777120e2bae..a5ed81a50c0a 100644 --- a/sql/src/test/resources/calcite/tests/window/wikipediaCumulativeOrdered.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/wikipediaCumulativeOrdered.sqlTest @@ -43,990 +43,990 @@ expectedOperators: - { "type": "longSum", "name": "w0", "fieldName": "a0" } expectedResults: - - [ "", 1442016000000, 29873, 29873, null, 1442030400000, 29873, 787370, 1, 1, 0.0, 1, 0.041666666666666664 ] - - [ "", 1442030400000, 166672, 196545, null, 1442019600000, 29873, 787370, 1, 2, 0.043478260869565216, 2, 0.08333333333333333 ] - - [ "", 1442019600000, 173892, 370437, 1442016000000, 1442037600000, 29873, 787370, 1, 3, 0.08695652173913043, 3, 0.125 ] - - [ "", 1442037600000, 200605, 571042, 1442030400000, 1442026800000, 29873, 787370, 1, 4, 0.13043478260869565, 4, 0.16666666666666666 ] - - [ "", 1442026800000, 252626, 823668, 1442019600000, 1442098800000, 29873, 787370, 1, 5, 0.17391304347826086, 5, 0.20833333333333334 ] - - [ "", 1442098800000, 276159, 1099827, 1442037600000, 1442055600000, 29873, 787370, 1, 6, 0.21739130434782608, 6, 0.25 ] - - [ "", 1442055600000, 283958, 1383785, 1442026800000, 1442088000000, 29873, 787370, 1, 7, 0.2608695652173913, 7, 0.2916666666666667 ] - - [ "", 1442088000000, 303872, 1687657, 1442098800000, 1442048400000, 29873, 787370, 1, 8, 0.30434782608695654, 8, 0.3333333333333333 ] - - [ "", 1442048400000, 308316, 1995973, 1442055600000, 1442044800000, 29873, 787370, 2, 9, 0.34782608695652173, 9, 0.375 ] - - [ "", 1442044800000, 316002, 2311975, 1442088000000, 1442034000000, 29873, 787370, 2, 10, 0.391304347826087, 10, 0.4166666666666667 ] - - [ "", 1442034000000, 330957, 2642932, 1442048400000, 1442066400000, 29873, 787370, 2, 11, 0.43478260869565216, 11, 0.4583333333333333 ] - - [ "", 1442066400000, 351584, 2994516, 1442044800000, 1442070000000, 29873, 787370, 2, 12, 0.4782608695652174, 12, 0.5 ] - - [ "", 1442070000000, 358515, 3353031, 1442034000000, 1442084400000, 29873, 787370, 2, 13, 0.5217391304347826, 13, 0.5416666666666666 ] - - [ "", 1442084400000, 372569, 3725600, 1442066400000, 1442095200000, 29873, 787370, 2, 14, 0.5652173913043478, 14, 0.5833333333333334 ] - - [ "", 1442095200000, 374501, 4100101, 1442070000000, 1442073600000, 29873, 787370, 2, 15, 0.6086956521739131, 15, 0.625 ] - - [ "", 1442073600000, 375394, 4475495, 1442084400000, 1442062800000, 29873, 787370, 2, 16, 0.6521739130434783, 16, 0.6666666666666666 ] - - [ "", 1442062800000, 389465, 4864960, 1442095200000, 1442077200000, 29873, 787370, 3, 17, 0.6956521739130435, 17, 0.7083333333333334 ] - - [ "", 1442077200000, 392483, 5257443, 1442073600000, 1442023200000, 29873, 787370, 3, 18, 0.7391304347826086, 18, 0.75 ] - - [ "", 1442023200000, 399636, 5657079, 1442062800000, 1442080800000, 29873, 787370, 3, 19, 0.782608695652174, 19, 0.7916666666666666 ] - - [ "", 1442080800000, 453077, 6110156, 1442077200000, 1442059200000, 29873, 787370, 3, 20, 0.8260869565217391, 20, 0.8333333333333334 ] - - [ "", 1442059200000, 459297, 6569453, 1442023200000, 1442091600000, 29873, 787370, 3, 21, 0.8695652173913043, 21, 0.875 ] - - [ "", 1442091600000, 514427, 7083880, 1442080800000, 1442041200000, 29873, 787370, 3, 22, 0.9130434782608695, 22, 0.9166666666666666 ] - - [ "", 1442041200000, 543450, 7627330, 1442059200000, 1442052000000, 29873, 787370, 3, 23, 0.9565217391304348, 23, 0.9583333333333334 ] - - [ "", 1442052000000, 787370, 8414700, 1442091600000, null, 29873, 787370, 3, 24, 1.0, 24, 1.0 ] - - [ "AE", 1442059200000, -11, -11, null, 1442044800000, -11, 6323, 1, 1, 0.0, 1, 0.125 ] - - [ "AE", 1442044800000, -7, -18, null, 1442052000000, -11, 6323, 1, 2, 0.14285714285714285, 2, 0.25 ] - - [ "AE", 1442052000000, -3, -21, 1442059200000, 1442048400000, -11, 6323, 1, 3, 0.2857142857142857, 3, 0.375 ] - - [ "AE", 1442048400000, 39, 18, 1442044800000, 1442080800000, -11, 6323, 2, 4, 0.42857142857142855, 4, 0.5 ] - - [ "AE", 1442080800000, 42, 60, 1442052000000, 1442070000000, -11, 6323, 2, 5, 0.5714285714285714, 5, 0.625 ] - - [ "AE", 1442070000000, 46, 106, 1442048400000, 1442030400000, -11, 6323, 2, 6, 0.7142857142857143, 6, 0.75 ] - - [ "AE", 1442030400000, 118, 224, 1442080800000, 1442077200000, -11, 6323, 3, 7, 0.8571428571428571, 7, 0.875 ] - - [ "AE", 1442077200000, 6323, 6547, 1442070000000, null, -11, 6323, 3, 8, 1.0, 8, 1.0 ] - - [ "AL", 1442077200000, 26, 26, null, 1442091600000, 26, 54, 1, 1, 0.0, 1, 0.5 ] - - [ "AL", 1442091600000, 54, 80, null, null, 26, 54, 2, 2, 1.0, 2, 1.0 ] - - [ "AO", 1442041200000, -26, -26, null, 1442052000000, -26, 722, 1, 1, 0.0, 1, 0.25 ] - - [ "AO", 1442052000000, -18, -44, null, 1442088000000, -26, 722, 1, 2, 0.3333333333333333, 2, 0.5 ] - - [ "AO", 1442088000000, 62, 18, 1442041200000, 1442098800000, -26, 722, 2, 3, 0.6666666666666666, 3, 0.75 ] - - [ "AO", 1442098800000, 722, 740, 1442052000000, null, -26, 722, 3, 4, 1.0, 4, 1.0 ] - - [ "AR", 1442077200000, -591, -591, null, 1442055600000, -591, 2514, 1, 1, 0.0, 1, 0.058823529411764705 ] - - [ "AR", 1442055600000, -54, -645, null, 1442084400000, -591, 2514, 1, 2, 0.0625, 2, 0.11764705882352941 ] - - [ "AR", 1442084400000, -5, -650, 1442077200000, 1442030400000, -591, 2514, 1, 3, 0.125, 3, 0.17647058823529413 ] - - [ "AR", 1442030400000, -3, -653, 1442055600000, 1442066400000, -591, 2514, 1, 4, 0.1875, 4, 0.23529411764705882 ] - - [ "AR", 1442066400000, 0, -653, 1442084400000, 1442019600000, -591, 2514, 1, 5, 0.25, 5, 0.29411764705882354 ] - - [ "AR", 1442019600000, 1, -652, 1442030400000, 1442080800000, -591, 2514, 1, 6, 0.3125, 6, 0.4117647058823529 ] - - [ "AR", 1442080800000, 1, -651, 1442066400000, 1442062800000, -591, 2514, 2, 6, 0.3125, 6, 0.4117647058823529 ] - - [ "AR", 1442062800000, 29, -622, 1442019600000, 1442098800000, -591, 2514, 2, 8, 0.4375, 7, 0.47058823529411764 ] - - [ "AR", 1442098800000, 64, -558, 1442080800000, 1442037600000, -591, 2514, 2, 9, 0.5, 8, 0.5294117647058824 ] - - [ "AR", 1442037600000, 81, -477, 1442062800000, 1442059200000, -591, 2514, 2, 10, 0.5625, 9, 0.5882352941176471 ] - - [ "AR", 1442059200000, 210, -267, 1442098800000, 1442034000000, -591, 2514, 2, 11, 0.625, 10, 0.6470588235294118 ] - - [ "AR", 1442034000000, 212, -55, 1442037600000, 1442091600000, -591, 2514, 2, 12, 0.6875, 11, 0.7058823529411765 ] - - [ "AR", 1442091600000, 340, 285, 1442059200000, 1442070000000, -591, 2514, 3, 13, 0.75, 12, 0.7647058823529411 ] - - [ "AR", 1442070000000, 377, 662, 1442034000000, 1442095200000, -591, 2514, 3, 14, 0.8125, 13, 0.8235294117647058 ] - - [ "AR", 1442095200000, 630, 1292, 1442091600000, 1442026800000, -591, 2514, 3, 15, 0.875, 14, 0.8823529411764706 ] - - [ "AR", 1442026800000, 644, 1936, 1442070000000, 1442023200000, -591, 2514, 3, 16, 0.9375, 15, 0.9411764705882353 ] - - [ "AR", 1442023200000, 2514, 4450, 1442095200000, null, -591, 2514, 3, 17, 1.0, 16, 1.0 ] - - [ "AT", 1442062800000, -155, -155, null, 1442084400000, -155, 7050, 1, 1, 0.0, 1, 0.14285714285714285 ] - - [ "AT", 1442084400000, -2, -157, null, 1442066400000, -155, 7050, 1, 2, 0.16666666666666666, 2, 0.2857142857142857 ] - - [ "AT", 1442066400000, 0, -157, 1442062800000, 1442091600000, -155, 7050, 1, 3, 0.3333333333333333, 3, 0.42857142857142855 ] - - [ "AT", 1442091600000, 89, -68, 1442084400000, 1442070000000, -155, 7050, 2, 4, 0.5, 4, 0.5714285714285714 ] - - [ "AT", 1442070000000, 272, 204, 1442066400000, 1442052000000, -155, 7050, 2, 5, 0.6666666666666666, 5, 0.7142857142857143 ] - - [ "AT", 1442052000000, 4793, 4997, 1442091600000, 1442088000000, -155, 7050, 3, 6, 0.8333333333333334, 6, 0.8571428571428571 ] - - [ "AT", 1442088000000, 7050, 12047, 1442070000000, null, -155, 7050, 3, 7, 1.0, 7, 1.0 ] - - [ "AU", 1442052000000, -643, -643, null, 1442030400000, -643, 1138, 1, 1, 0.0, 1, 0.05263157894736842 ] - - [ "AU", 1442030400000, -377, -1020, null, 1442066400000, -643, 1138, 1, 2, 0.05555555555555555, 2, 0.10526315789473684 ] - - [ "AU", 1442066400000, -21, -1041, 1442052000000, 1442070000000, -643, 1138, 1, 3, 0.1111111111111111, 3, 0.15789473684210525 ] - - [ "AU", 1442070000000, -12, -1053, 1442030400000, 1442016000000, -643, 1138, 1, 4, 0.16666666666666666, 4, 0.21052631578947367 ] - - [ "AU", 1442016000000, 0, -1053, 1442066400000, 1442077200000, -643, 1138, 1, 5, 0.2222222222222222, 5, 0.2631578947368421 ] - - [ "AU", 1442077200000, 1, -1052, 1442070000000, 1442037600000, -643, 1138, 1, 6, 0.2777777777777778, 6, 0.3157894736842105 ] - - [ "AU", 1442037600000, 3, -1049, 1442016000000, 1442059200000, -643, 1138, 1, 7, 0.3333333333333333, 7, 0.3684210526315789 ] - - [ "AU", 1442059200000, 38, -1011, 1442077200000, 1442023200000, -643, 1138, 2, 8, 0.3888888888888889, 8, 0.42105263157894735 ] - - [ "AU", 1442023200000, 52, -959, 1442037600000, 1442048400000, -643, 1138, 2, 9, 0.4444444444444444, 9, 0.47368421052631576 ] - - [ "AU", 1442048400000, 135, -824, 1442059200000, 1442055600000, -643, 1138, 2, 10, 0.5, 10, 0.5263157894736842 ] - - [ "AU", 1442055600000, 182, -642, 1442023200000, 1442026800000, -643, 1138, 2, 11, 0.5555555555555556, 11, 0.5789473684210527 ] - - [ "AU", 1442026800000, 188, -454, 1442048400000, 1442041200000, -643, 1138, 2, 12, 0.6111111111111112, 12, 0.631578947368421 ] - - [ "AU", 1442041200000, 194, -260, 1442055600000, 1442019600000, -643, 1138, 2, 13, 0.6666666666666666, 13, 0.6842105263157895 ] - - [ "AU", 1442019600000, 253, -7, 1442026800000, 1442034000000, -643, 1138, 3, 14, 0.7222222222222222, 14, 0.7368421052631579 ] - - [ "AU", 1442034000000, 283, 276, 1442041200000, 1442044800000, -643, 1138, 3, 15, 0.7777777777777778, 15, 0.7894736842105263 ] - - [ "AU", 1442044800000, 373, 649, 1442019600000, 1442095200000, -643, 1138, 3, 16, 0.8333333333333334, 16, 0.8421052631578947 ] - - [ "AU", 1442095200000, 395, 1044, 1442034000000, 1442098800000, -643, 1138, 3, 17, 0.8888888888888888, 17, 0.8947368421052632 ] - - [ "AU", 1442098800000, 518, 1562, 1442044800000, 1442091600000, -643, 1138, 3, 18, 0.9444444444444444, 18, 0.9473684210526315 ] - - [ "AU", 1442091600000, 1138, 2700, 1442095200000, null, -643, 1138, 3, 19, 1.0, 19, 1.0 ] - - [ "BA", 1442055600000, -202, -202, null, 1442048400000, -202, 38, 1, 1, 0.0, 1, 0.25 ] - - [ "BA", 1442048400000, -13, -215, null, 1442084400000, -202, 38, 1, 2, 0.3333333333333333, 2, 0.5 ] - - [ "BA", 1442084400000, -1, -216, 1442055600000, 1442052000000, -202, 38, 2, 3, 0.6666666666666666, 3, 0.75 ] - - [ "BA", 1442052000000, 38, -178, 1442048400000, null, -202, 38, 3, 4, 1.0, 4, 1.0 ] - - [ "BD", 1442091600000, -2, -2, null, 1442019600000, -2, 854, 1, 1, 0.0, 1, 0.16666666666666666 ] - - [ "BD", 1442019600000, 0, -2, null, 1442077200000, -2, 854, 1, 2, 0.2, 2, 0.3333333333333333 ] - - [ "BD", 1442077200000, 75, 73, 1442091600000, 1442066400000, -2, 854, 2, 3, 0.4, 3, 0.5 ] - - [ "BD", 1442066400000, 76, 149, 1442019600000, 1442073600000, -2, 854, 2, 4, 0.6, 4, 0.6666666666666666 ] - - [ "BD", 1442073600000, 103, 252, 1442077200000, 1442041200000, -2, 854, 3, 5, 0.8, 5, 0.8333333333333334 ] - - [ "BD", 1442041200000, 854, 1106, 1442066400000, null, -2, 854, 3, 6, 1.0, 6, 1.0 ] - - [ "BE", 1442030400000, -103, -103, null, 1442052000000, -103, 233, 1, 1, 0.0, 1, 0.08333333333333333 ] - - [ "BE", 1442052000000, -1, -104, null, 1442080800000, -103, 233, 1, 2, 0.09090909090909091, 2, 0.16666666666666666 ] - - [ "BE", 1442080800000, 1, -103, 1442030400000, 1442098800000, -103, 233, 1, 3, 0.18181818181818182, 3, 0.25 ] - - [ "BE", 1442098800000, 9, -94, 1442052000000, 1442073600000, -103, 233, 1, 4, 0.2727272727272727, 4, 0.3333333333333333 ] - - [ "BE", 1442073600000, 19, -75, 1442080800000, 1442048400000, -103, 233, 2, 5, 0.36363636363636365, 5, 0.4166666666666667 ] - - [ "BE", 1442048400000, 59, -16, 1442098800000, 1442088000000, -103, 233, 2, 6, 0.45454545454545453, 6, 0.5 ] - - [ "BE", 1442088000000, 67, 51, 1442073600000, 1442062800000, -103, 233, 2, 7, 0.5454545454545454, 7, 0.5833333333333334 ] - - [ "BE", 1442062800000, 91, 142, 1442048400000, 1442091600000, -103, 233, 2, 8, 0.6363636363636364, 8, 0.6666666666666666 ] - - [ "BE", 1442091600000, 101, 243, 1442088000000, 1442066400000, -103, 233, 3, 9, 0.7272727272727273, 9, 0.75 ] - - [ "BE", 1442066400000, 136, 379, 1442062800000, 1442084400000, -103, 233, 3, 10, 0.8181818181818182, 10, 0.8333333333333334 ] - - [ "BE", 1442084400000, 183, 562, 1442091600000, 1442055600000, -103, 233, 3, 11, 0.9090909090909091, 11, 0.9166666666666666 ] - - [ "BE", 1442055600000, 233, 795, 1442066400000, null, -103, 233, 3, 12, 1.0, 12, 1.0 ] - - [ "BG", 1442041200000, 9, 9, null, 1442070000000, 9, 18936, 1, 1, 0.0, 1, 0.2 ] - - [ "BG", 1442070000000, 55, 64, null, 1442059200000, 9, 18936, 1, 2, 0.25, 2, 0.4 ] - - [ "BG", 1442059200000, 191, 255, 1442041200000, 1442084400000, 9, 18936, 2, 3, 0.5, 3, 0.6 ] - - [ "BG", 1442084400000, 401, 656, 1442070000000, 1442052000000, 9, 18936, 2, 4, 0.75, 4, 0.8 ] - - [ "BG", 1442052000000, 18936, 19592, 1442059200000, null, 9, 18936, 3, 5, 1.0, 5, 1.0 ] - - [ "BH", 1442052000000, 44, 44, null, null, 44, 44, 1, 1, 0.0, 1, 1.0 ] - - [ "BO", 1442095200000, -4, -4, null, 1442080800000, -4, 4, 1, 1, 0.0, 1, 0.3333333333333333 ] - - [ "BO", 1442080800000, 4, 0, null, 1442088000000, -4, 4, 2, 2, 0.5, 2, 1.0 ] - - [ "BO", 1442088000000, 4, 4, 1442095200000, null, -4, 4, 3, 2, 0.5, 2, 1.0 ] - - [ "BR", 1442098800000, -645, -645, null, 1442080800000, -645, 2253, 1, 1, 0.0, 1, 0.043478260869565216 ] - - [ "BR", 1442080800000, -267, -912, null, 1442016000000, -645, 2253, 1, 2, 0.045454545454545456, 2, 0.08695652173913043 ] - - [ "BR", 1442016000000, -248, -1160, 1442098800000, 1442041200000, -645, 2253, 1, 3, 0.09090909090909091, 3, 0.13043478260869565 ] - - [ "BR", 1442041200000, 3, -1157, 1442080800000, 1442091600000, -645, 2253, 1, 4, 0.13636363636363635, 4, 0.17391304347826086 ] - - [ "BR", 1442091600000, 11, -1146, 1442016000000, 1442034000000, -645, 2253, 1, 5, 0.18181818181818182, 5, 0.21739130434782608 ] - - [ "BR", 1442034000000, 21, -1125, 1442041200000, 1442030400000, -645, 2253, 1, 6, 0.22727272727272727, 6, 0.2608695652173913 ] - - [ "BR", 1442030400000, 30, -1095, 1442091600000, 1442026800000, -645, 2253, 1, 7, 0.2727272727272727, 7, 0.30434782608695654 ] - - [ "BR", 1442026800000, 51, -1044, 1442034000000, 1442044800000, -645, 2253, 1, 8, 0.3181818181818182, 8, 0.34782608695652173 ] - - [ "BR", 1442044800000, 71, -973, 1442030400000, 1442059200000, -645, 2253, 2, 9, 0.36363636363636365, 9, 0.391304347826087 ] - - [ "BR", 1442059200000, 73, -900, 1442026800000, 1442062800000, -645, 2253, 2, 10, 0.4090909090909091, 10, 0.43478260869565216 ] - - [ "BR", 1442062800000, 93, -807, 1442044800000, 1442088000000, -645, 2253, 2, 11, 0.45454545454545453, 11, 0.4782608695652174 ] - - [ "BR", 1442088000000, 215, -592, 1442059200000, 1442052000000, -645, 2253, 2, 12, 0.5, 12, 0.5217391304347826 ] - - [ "BR", 1442052000000, 232, -360, 1442062800000, 1442055600000, -645, 2253, 2, 13, 0.5454545454545454, 13, 0.5652173913043478 ] - - [ "BR", 1442055600000, 242, -118, 1442088000000, 1442037600000, -645, 2253, 2, 14, 0.5909090909090909, 14, 0.6086956521739131 ] - - [ "BR", 1442037600000, 267, 149, 1442052000000, 1442019600000, -645, 2253, 2, 15, 0.6363636363636364, 15, 0.6521739130434783 ] - - [ "BR", 1442019600000, 372, 521, 1442055600000, 1442084400000, -645, 2253, 2, 16, 0.6818181818181818, 16, 0.6956521739130435 ] - - [ "BR", 1442084400000, 492, 1013, 1442037600000, 1442070000000, -645, 2253, 3, 17, 0.7272727272727273, 17, 0.7391304347826086 ] - - [ "BR", 1442070000000, 536, 1549, 1442019600000, 1442095200000, -645, 2253, 3, 18, 0.7727272727272727, 18, 0.782608695652174 ] - - [ "BR", 1442095200000, 748, 2297, 1442084400000, 1442023200000, -645, 2253, 3, 19, 0.8181818181818182, 19, 0.8260869565217391 ] - - [ "BR", 1442023200000, 879, 3176, 1442070000000, 1442066400000, -645, 2253, 3, 20, 0.8636363636363636, 20, 0.8695652173913043 ] - - [ "BR", 1442066400000, 1034, 4210, 1442095200000, 1442073600000, -645, 2253, 3, 21, 0.9090909090909091, 21, 0.9130434782608695 ] - - [ "BR", 1442073600000, 2087, 6297, 1442023200000, 1442077200000, -645, 2253, 3, 22, 0.9545454545454546, 22, 0.9565217391304348 ] - - [ "BR", 1442077200000, 2253, 8550, 1442066400000, null, -645, 2253, 3, 23, 1.0, 23, 1.0 ] - - [ "BY", 1442055600000, 1, 1, null, 1442084400000, 1, 1464, 1, 1, 0.0, 1, 0.2857142857142857 ] - - [ "BY", 1442084400000, 1, 2, null, 1442080800000, 1, 1464, 1, 1, 0.0, 1, 0.2857142857142857 ] - - [ "BY", 1442080800000, 28, 30, 1442055600000, 1442077200000, 1, 1464, 1, 3, 0.3333333333333333, 2, 0.42857142857142855 ] - - [ "BY", 1442077200000, 30, 60, 1442084400000, 1442088000000, 1, 1464, 2, 4, 0.5, 3, 0.5714285714285714 ] - - [ "BY", 1442088000000, 33, 93, 1442080800000, 1442073600000, 1, 1464, 2, 5, 0.6666666666666666, 4, 0.7142857142857143 ] - - [ "BY", 1442073600000, 596, 689, 1442077200000, 1442059200000, 1, 1464, 3, 6, 0.8333333333333334, 5, 0.8571428571428571 ] - - [ "BY", 1442059200000, 1464, 2153, 1442088000000, null, 1, 1464, 3, 7, 1.0, 6, 1.0 ] - - [ "CA", 1442016000000, -371, -371, null, 1442062800000, -371, 2858, 1, 1, 0.0, 1, 0.045454545454545456 ] - - [ "CA", 1442062800000, -367, -738, null, 1442095200000, -371, 2858, 1, 2, 0.047619047619047616, 2, 0.09090909090909091 ] - - [ "CA", 1442095200000, -361, -1099, 1442016000000, 1442077200000, -371, 2858, 1, 3, 0.09523809523809523, 3, 0.13636363636363635 ] - - [ "CA", 1442077200000, -282, -1381, 1442062800000, 1442037600000, -371, 2858, 1, 4, 0.14285714285714285, 4, 0.18181818181818182 ] - - [ "CA", 1442037600000, -132, -1513, 1442095200000, 1442030400000, -371, 2858, 1, 5, 0.19047619047619047, 5, 0.22727272727272727 ] - - [ "CA", 1442030400000, -47, -1560, 1442077200000, 1442044800000, -371, 2858, 1, 6, 0.23809523809523808, 6, 0.2727272727272727 ] - - [ "CA", 1442044800000, 1, -1559, 1442037600000, 1442041200000, -371, 2858, 1, 7, 0.2857142857142857, 7, 0.3181818181818182 ] - - [ "CA", 1442041200000, 5, -1554, 1442030400000, 1442088000000, -371, 2858, 1, 8, 0.3333333333333333, 8, 0.36363636363636365 ] - - [ "CA", 1442088000000, 35, -1519, 1442044800000, 1442052000000, -371, 2858, 2, 9, 0.38095238095238093, 9, 0.4090909090909091 ] - - [ "CA", 1442052000000, 38, -1481, 1442041200000, 1442084400000, -371, 2858, 2, 10, 0.42857142857142855, 10, 0.45454545454545453 ] - - [ "CA", 1442084400000, 44, -1437, 1442088000000, 1442073600000, -371, 2858, 2, 11, 0.47619047619047616, 11, 0.5 ] - - [ "CA", 1442073600000, 86, -1351, 1442052000000, 1442098800000, -371, 2858, 2, 12, 0.5238095238095238, 12, 0.5454545454545454 ] - - [ "CA", 1442098800000, 164, -1187, 1442084400000, 1442034000000, -371, 2858, 2, 13, 0.5714285714285714, 13, 0.5909090909090909 ] - - [ "CA", 1442034000000, 178, -1009, 1442073600000, 1442070000000, -371, 2858, 2, 14, 0.6190476190476191, 14, 0.6363636363636364 ] - - [ "CA", 1442070000000, 185, -824, 1442098800000, 1442023200000, -371, 2858, 2, 15, 0.6666666666666666, 15, 0.6818181818181818 ] - - [ "CA", 1442023200000, 286, -538, 1442034000000, 1442066400000, -371, 2858, 3, 16, 0.7142857142857143, 16, 0.7272727272727273 ] - - [ "CA", 1442066400000, 307, -231, 1442070000000, 1442080800000, -371, 2858, 3, 17, 0.7619047619047619, 17, 0.7727272727272727 ] - - [ "CA", 1442080800000, 481, 250, 1442023200000, 1442059200000, -371, 2858, 3, 18, 0.8095238095238095, 18, 0.8181818181818182 ] - - [ "CA", 1442059200000, 1036, 1286, 1442066400000, 1442019600000, -371, 2858, 3, 19, 0.8571428571428571, 19, 0.8636363636363636 ] - - [ "CA", 1442019600000, 2184, 3470, 1442080800000, 1442026800000, -371, 2858, 3, 20, 0.9047619047619048, 20, 0.9090909090909091 ] - - [ "CA", 1442026800000, 2216, 5686, 1442059200000, 1442091600000, -371, 2858, 3, 21, 0.9523809523809523, 21, 0.9545454545454546 ] - - [ "CA", 1442091600000, 2858, 8544, 1442019600000, null, -371, 2858, 3, 22, 1.0, 22, 1.0 ] - - [ "CH", 1442044800000, -54, -54, null, 1442055600000, -54, 360, 1, 1, 0.0, 1, 0.08333333333333333 ] - - [ "CH", 1442055600000, 0, -54, null, 1442077200000, -54, 360, 1, 2, 0.09090909090909091, 2, 0.16666666666666666 ] - - [ "CH", 1442077200000, 6, -48, 1442044800000, 1442070000000, -54, 360, 1, 3, 0.18181818181818182, 3, 0.25 ] - - [ "CH", 1442070000000, 11, -37, 1442055600000, 1442084400000, -54, 360, 1, 4, 0.2727272727272727, 4, 0.3333333333333333 ] - - [ "CH", 1442084400000, 13, -24, 1442077200000, 1442062800000, -54, 360, 2, 5, 0.36363636363636365, 5, 0.4166666666666667 ] - - [ "CH", 1442062800000, 22, -2, 1442070000000, 1442048400000, -54, 360, 2, 6, 0.45454545454545453, 6, 0.5 ] - - [ "CH", 1442048400000, 24, 22, 1442084400000, 1442052000000, -54, 360, 2, 7, 0.5454545454545454, 7, 0.5833333333333334 ] - - [ "CH", 1442052000000, 47, 69, 1442062800000, 1442037600000, -54, 360, 2, 8, 0.6363636363636364, 8, 0.6666666666666666 ] - - [ "CH", 1442037600000, 59, 128, 1442048400000, 1442091600000, -54, 360, 3, 9, 0.7272727272727273, 9, 0.75 ] - - [ "CH", 1442091600000, 67, 195, 1442052000000, 1442041200000, -54, 360, 3, 10, 0.8181818181818182, 10, 0.8333333333333334 ] - - [ "CH", 1442041200000, 198, 393, 1442037600000, 1442073600000, -54, 360, 3, 11, 0.9090909090909091, 11, 0.9166666666666666 ] - - [ "CH", 1442073600000, 360, 753, 1442091600000, null, -54, 360, 3, 12, 1.0, 12, 1.0 ] - - [ "CL", 1442019600000, -370, -370, null, 1442095200000, -370, 390, 1, 1, 0.0, 1, 0.05 ] - - [ "CL", 1442095200000, -276, -646, null, 1442066400000, -370, 390, 1, 2, 0.05263157894736842, 2, 0.1 ] - - [ "CL", 1442066400000, -41, -687, 1442019600000, 1442077200000, -370, 390, 1, 3, 0.10526315789473684, 3, 0.15 ] - - [ "CL", 1442077200000, -15, -702, 1442095200000, 1442059200000, -370, 390, 1, 4, 0.15789473684210525, 4, 0.2 ] - - [ "CL", 1442059200000, -12, -714, 1442066400000, 1442034000000, -370, 390, 1, 5, 0.21052631578947367, 5, 0.25 ] - - [ "CL", 1442034000000, -1, -715, 1442077200000, 1442041200000, -370, 390, 1, 6, 0.2631578947368421, 6, 0.35 ] - - [ "CL", 1442041200000, -1, -716, 1442059200000, 1442037600000, -370, 390, 1, 6, 0.2631578947368421, 6, 0.35 ] - - [ "CL", 1442037600000, 2, -714, 1442034000000, 1442098800000, -370, 390, 2, 8, 0.3684210526315789, 7, 0.4 ] - - [ "CL", 1442098800000, 9, -705, 1442041200000, 1442070000000, -370, 390, 2, 9, 0.42105263157894735, 8, 0.45 ] - - [ "CL", 1442070000000, 13, -692, 1442037600000, 1442023200000, -370, 390, 2, 10, 0.47368421052631576, 9, 0.5 ] - - [ "CL", 1442023200000, 15, -677, 1442098800000, 1442062800000, -370, 390, 2, 11, 0.5263157894736842, 10, 0.55 ] - - [ "CL", 1442062800000, 17, -660, 1442070000000, 1442080800000, -370, 390, 2, 12, 0.5789473684210527, 11, 0.65 ] - - [ "CL", 1442080800000, 17, -643, 1442023200000, 1442091600000, -370, 390, 2, 12, 0.5789473684210527, 11, 0.65 ] - - [ "CL", 1442091600000, 20, -623, 1442062800000, 1442030400000, -370, 390, 2, 14, 0.6842105263157895, 12, 0.7 ] - - [ "CL", 1442030400000, 40, -583, 1442080800000, 1442084400000, -370, 390, 3, 15, 0.7368421052631579, 13, 0.75 ] - - [ "CL", 1442084400000, 126, -457, 1442091600000, 1442073600000, -370, 390, 3, 16, 0.7894736842105263, 14, 0.8 ] - - [ "CL", 1442073600000, 153, -304, 1442030400000, 1442016000000, -370, 390, 3, 17, 0.8421052631578947, 15, 0.85 ] - - [ "CL", 1442016000000, 161, -143, 1442084400000, 1442088000000, -370, 390, 3, 18, 0.8947368421052632, 16, 0.9 ] - - [ "CL", 1442088000000, 286, 143, 1442073600000, 1442052000000, -370, 390, 3, 19, 0.9473684210526315, 17, 0.95 ] - - [ "CL", 1442052000000, 390, 533, 1442016000000, null, -370, 390, 3, 20, 1.0, 18, 1.0 ] - - [ "CN", 1442066400000, -15, -15, null, 1442023200000, -15, 293, 1, 1, 0.0, 1, 0.1 ] - - [ "CN", 1442023200000, -13, -28, null, 1442080800000, -15, 293, 1, 2, 0.1111111111111111, 2, 0.2 ] - - [ "CN", 1442080800000, -10, -38, 1442066400000, 1442084400000, -15, 293, 1, 3, 0.2222222222222222, 3, 0.3 ] - - [ "CN", 1442084400000, -1, -39, 1442023200000, 1442052000000, -15, 293, 1, 4, 0.3333333333333333, 4, 0.4 ] - - [ "CN", 1442052000000, 0, -39, 1442080800000, 1442059200000, -15, 293, 2, 5, 0.4444444444444444, 5, 0.5 ] - - [ "CN", 1442059200000, 8, -31, 1442084400000, 1442055600000, -15, 293, 2, 6, 0.5555555555555556, 6, 0.6 ] - - [ "CN", 1442055600000, 69, 38, 1442052000000, 1442037600000, -15, 293, 2, 7, 0.6666666666666666, 7, 0.7 ] - - [ "CN", 1442037600000, 98, 136, 1442059200000, 1442026800000, -15, 293, 3, 8, 0.7777777777777778, 8, 0.8 ] - - [ "CN", 1442026800000, 154, 290, 1442055600000, 1442048400000, -15, 293, 3, 9, 0.8888888888888888, 9, 0.9 ] - - [ "CN", 1442048400000, 293, 583, 1442037600000, null, -15, 293, 3, 10, 1.0, 10, 1.0 ] - - [ "CO", 1442070000000, -45, -45, null, 1442023200000, -45, 39860, 1, 1, 0.0, 1, 0.06666666666666667 ] - - [ "CO", 1442023200000, 9, -36, null, 1442019600000, -45, 39860, 1, 2, 0.07142857142857142, 2, 0.13333333333333333 ] - - [ "CO", 1442019600000, 12, -24, 1442070000000, 1442016000000, -45, 39860, 1, 3, 0.14285714285714285, 3, 0.2 ] - - [ "CO", 1442016000000, 16, -8, 1442023200000, 1442080800000, -45, 39860, 1, 4, 0.21428571428571427, 4, 0.26666666666666666 ] - - [ "CO", 1442080800000, 25, 17, 1442019600000, 1442084400000, -45, 39860, 1, 5, 0.2857142857142857, 5, 0.3333333333333333 ] - - [ "CO", 1442084400000, 51, 68, 1442016000000, 1442098800000, -45, 39860, 2, 6, 0.35714285714285715, 6, 0.4 ] - - [ "CO", 1442098800000, 83, 151, 1442080800000, 1442066400000, -45, 39860, 2, 7, 0.42857142857142855, 7, 0.4666666666666667 ] - - [ "CO", 1442066400000, 288, 439, 1442084400000, 1442095200000, -45, 39860, 2, 8, 0.5, 8, 0.5333333333333333 ] - - [ "CO", 1442095200000, 290, 729, 1442098800000, 1442091600000, -45, 39860, 2, 9, 0.5714285714285714, 9, 0.6 ] - - [ "CO", 1442091600000, 377, 1106, 1442066400000, 1442030400000, -45, 39860, 2, 10, 0.6428571428571429, 10, 0.6666666666666666 ] - - [ "CO", 1442030400000, 441, 1547, 1442095200000, 1442059200000, -45, 39860, 3, 11, 0.7142857142857143, 11, 0.7333333333333333 ] - - [ "CO", 1442059200000, 473, 2020, 1442091600000, 1442077200000, -45, 39860, 3, 12, 0.7857142857142857, 12, 0.8 ] - - [ "CO", 1442077200000, 581, 2601, 1442030400000, 1442088000000, -45, 39860, 3, 13, 0.8571428571428571, 13, 0.8666666666666667 ] - - [ "CO", 1442088000000, 17150, 19751, 1442059200000, 1442073600000, -45, 39860, 3, 14, 0.9285714285714286, 14, 0.9333333333333333 ] - - [ "CO", 1442073600000, 39860, 59611, 1442077200000, null, -45, 39860, 3, 15, 1.0, 15, 1.0 ] - - [ "CR", 1442041200000, 51, 51, null, 1442019600000, 51, 2497, 1, 1, 0.0, 1, 0.125 ] - - [ "CR", 1442019600000, 62, 113, null, 1442023200000, 51, 2497, 1, 2, 0.14285714285714285, 2, 0.375 ] - - [ "CR", 1442023200000, 62, 175, 1442041200000, 1442088000000, 51, 2497, 1, 2, 0.14285714285714285, 2, 0.375 ] - - [ "CR", 1442088000000, 72, 247, 1442019600000, 1442026800000, 51, 2497, 2, 4, 0.42857142857142855, 3, 0.5 ] - - [ "CR", 1442026800000, 140, 387, 1442023200000, 1442048400000, 51, 2497, 2, 5, 0.5714285714285714, 4, 0.625 ] - - [ "CR", 1442048400000, 163, 550, 1442088000000, 1442044800000, 51, 2497, 2, 6, 0.7142857142857143, 5, 0.75 ] - - [ "CR", 1442044800000, 194, 744, 1442026800000, 1442030400000, 51, 2497, 3, 7, 0.8571428571428571, 6, 0.875 ] - - [ "CR", 1442030400000, 2497, 3241, 1442048400000, null, 51, 2497, 3, 8, 1.0, 7, 1.0 ] - - [ "CZ", 1442080800000, -28, -28, null, 1442026800000, -28, 2051, 1, 1, 0.0, 1, 0.09090909090909091 ] - - [ "CZ", 1442026800000, -19, -47, null, 1442062800000, -28, 2051, 1, 2, 0.1, 2, 0.18181818181818182 ] - - [ "CZ", 1442062800000, 0, -47, 1442080800000, 1442098800000, -28, 2051, 1, 3, 0.2, 3, 0.2727272727272727 ] - - [ "CZ", 1442098800000, 2, -45, 1442026800000, 1442037600000, -28, 2051, 1, 4, 0.3, 4, 0.36363636363636365 ] - - [ "CZ", 1442037600000, 18, -27, 1442062800000, 1442059200000, -28, 2051, 2, 5, 0.4, 5, 0.45454545454545453 ] - - [ "CZ", 1442059200000, 21, -6, 1442098800000, 1442034000000, -28, 2051, 2, 6, 0.5, 6, 0.5454545454545454 ] - - [ "CZ", 1442034000000, 78, 72, 1442037600000, 1442077200000, -28, 2051, 2, 7, 0.6, 7, 0.6363636363636364 ] - - [ "CZ", 1442077200000, 115, 187, 1442059200000, 1442070000000, -28, 2051, 2, 8, 0.7, 8, 0.7272727272727273 ] - - [ "CZ", 1442070000000, 168, 355, 1442034000000, 1442055600000, -28, 2051, 3, 9, 0.8, 9, 0.8181818181818182 ] - - [ "CZ", 1442055600000, 1073, 1428, 1442077200000, 1442073600000, -28, 2051, 3, 10, 0.9, 10, 0.9090909090909091 ] - - [ "CZ", 1442073600000, 2051, 3479, 1442070000000, null, -28, 2051, 3, 11, 1.0, 11, 1.0 ] - - [ "DE", 1442084400000, -125, -125, null, 1442019600000, -125, 6075, 1, 1, 0.0, 1, 0.043478260869565216 ] - - [ "DE", 1442019600000, 0, -125, null, 1442023200000, -125, 6075, 1, 2, 0.045454545454545456, 2, 0.08695652173913043 ] - - [ "DE", 1442023200000, 64, -61, 1442084400000, 1442016000000, -125, 6075, 1, 3, 0.09090909090909091, 3, 0.13043478260869565 ] - - [ "DE", 1442016000000, 167, 106, 1442019600000, 1442088000000, -125, 6075, 1, 4, 0.13636363636363635, 4, 0.17391304347826086 ] - - [ "DE", 1442088000000, 190, 296, 1442023200000, 1442041200000, -125, 6075, 1, 5, 0.18181818181818182, 5, 0.21739130434782608 ] - - [ "DE", 1442041200000, 197, 493, 1442016000000, 1442062800000, -125, 6075, 1, 6, 0.22727272727272727, 6, 0.2608695652173913 ] - - [ "DE", 1442062800000, 283, 776, 1442088000000, 1442059200000, -125, 6075, 1, 7, 0.2727272727272727, 7, 0.30434782608695654 ] - - [ "DE", 1442059200000, 289, 1065, 1442041200000, 1442098800000, -125, 6075, 1, 8, 0.3181818181818182, 8, 0.34782608695652173 ] - - [ "DE", 1442098800000, 329, 1394, 1442062800000, 1442034000000, -125, 6075, 2, 9, 0.36363636363636365, 9, 0.391304347826087 ] - - [ "DE", 1442034000000, 358, 1752, 1442059200000, 1442030400000, -125, 6075, 2, 10, 0.4090909090909091, 10, 0.43478260869565216 ] - - [ "DE", 1442030400000, 373, 2125, 1442098800000, 1442037600000, -125, 6075, 2, 11, 0.45454545454545453, 11, 0.4782608695652174 ] - - [ "DE", 1442037600000, 544, 2669, 1442034000000, 1442048400000, -125, 6075, 2, 12, 0.5, 12, 0.5217391304347826 ] - - [ "DE", 1442048400000, 811, 3480, 1442030400000, 1442044800000, -125, 6075, 2, 13, 0.5454545454545454, 13, 0.5652173913043478 ] - - [ "DE", 1442044800000, 979, 4459, 1442037600000, 1442095200000, -125, 6075, 2, 14, 0.5909090909090909, 14, 0.6086956521739131 ] - - [ "DE", 1442095200000, 1007, 5466, 1442048400000, 1442080800000, -125, 6075, 2, 15, 0.6363636363636364, 15, 0.6521739130434783 ] - - [ "DE", 1442080800000, 1133, 6599, 1442044800000, 1442055600000, -125, 6075, 2, 16, 0.6818181818181818, 16, 0.6956521739130435 ] - - [ "DE", 1442055600000, 1523, 8122, 1442095200000, 1442066400000, -125, 6075, 3, 17, 0.7272727272727273, 17, 0.7391304347826086 ] - - [ "DE", 1442066400000, 1577, 9699, 1442080800000, 1442052000000, -125, 6075, 3, 18, 0.7727272727272727, 18, 0.782608695652174 ] - - [ "DE", 1442052000000, 1600, 11299, 1442055600000, 1442070000000, -125, 6075, 3, 19, 0.8181818181818182, 19, 0.8260869565217391 ] - - [ "DE", 1442070000000, 1666, 12965, 1442066400000, 1442077200000, -125, 6075, 3, 20, 0.8636363636363636, 20, 0.8695652173913043 ] - - [ "DE", 1442077200000, 2188, 15153, 1442052000000, 1442091600000, -125, 6075, 3, 21, 0.9090909090909091, 21, 0.9130434782608695 ] - - [ "DE", 1442091600000, 4355, 19508, 1442070000000, 1442073600000, -125, 6075, 3, 22, 0.9545454545454546, 22, 0.9565217391304348 ] - - [ "DE", 1442073600000, 6075, 25583, 1442077200000, null, -125, 6075, 3, 23, 1.0, 23, 1.0 ] - - [ "DK", 1442084400000, -97, -97, null, 1442077200000, -97, 416, 1, 1, 0.0, 1, 0.08333333333333333 ] - - [ "DK", 1442077200000, -9, -106, null, 1442048400000, -97, 416, 1, 2, 0.09090909090909091, 2, 0.16666666666666666 ] - - [ "DK", 1442048400000, -5, -111, 1442084400000, 1442059200000, -97, 416, 1, 3, 0.18181818181818182, 3, 0.25 ] - - [ "DK", 1442059200000, 0, -111, 1442077200000, 1442095200000, -97, 416, 1, 4, 0.2727272727272727, 4, 0.4166666666666667 ] - - [ "DK", 1442095200000, 0, -111, 1442048400000, 1442062800000, -97, 416, 2, 4, 0.2727272727272727, 4, 0.4166666666666667 ] - - [ "DK", 1442062800000, 1, -110, 1442059200000, 1442037600000, -97, 416, 2, 6, 0.45454545454545453, 5, 0.5 ] - - [ "DK", 1442037600000, 10, -100, 1442095200000, 1442044800000, -97, 416, 2, 7, 0.5454545454545454, 6, 0.5833333333333334 ] - - [ "DK", 1442044800000, 36, -64, 1442062800000, 1442055600000, -97, 416, 2, 8, 0.6363636363636364, 7, 0.6666666666666666 ] - - [ "DK", 1442055600000, 42, -22, 1442037600000, 1442080800000, -97, 416, 3, 9, 0.7272727272727273, 8, 0.75 ] - - [ "DK", 1442080800000, 61, 39, 1442044800000, 1442091600000, -97, 416, 3, 10, 0.8181818181818182, 9, 0.8333333333333334 ] - - [ "DK", 1442091600000, 139, 178, 1442055600000, 1442066400000, -97, 416, 3, 11, 0.9090909090909091, 10, 0.9166666666666666 ] - - [ "DK", 1442066400000, 416, 594, 1442080800000, null, -97, 416, 3, 12, 1.0, 11, 1.0 ] - - [ "DO", 1442023200000, 8, 8, null, 1442084400000, 8, 200, 1, 1, 0.0, 1, 0.4 ] - - [ "DO", 1442084400000, 8, 16, null, 1442095200000, 8, 200, 1, 1, 0.0, 1, 0.4 ] - - [ "DO", 1442095200000, 13, 29, 1442023200000, 1442066400000, 8, 200, 2, 3, 0.5, 2, 0.6 ] - - [ "DO", 1442066400000, 35, 64, 1442084400000, 1442073600000, 8, 200, 2, 4, 0.75, 3, 0.8 ] - - [ "DO", 1442073600000, 200, 264, 1442095200000, null, 8, 200, 3, 5, 1.0, 4, 1.0 ] - - [ "DZ", 1442077200000, -1, -1, null, null, -1, -1, 1, 1, 0.0, 1, 1.0 ] - - [ "EC", 1442077200000, -366, -366, null, 1442023200000, -366, 568, 1, 1, 0.0, 1, 0.16666666666666666 ] - - [ "EC", 1442023200000, -9, -375, null, 1442030400000, -366, 568, 1, 2, 0.2, 2, 0.3333333333333333 ] - - [ "EC", 1442030400000, 0, -375, 1442077200000, 1442095200000, -366, 568, 2, 3, 0.4, 3, 0.5 ] - - [ "EC", 1442095200000, 10, -365, 1442023200000, 1442019600000, -366, 568, 2, 4, 0.6, 4, 0.6666666666666666 ] - - [ "EC", 1442019600000, 29, -336, 1442030400000, 1442084400000, -366, 568, 3, 5, 0.8, 5, 0.8333333333333334 ] - - [ "EC", 1442084400000, 568, 232, 1442095200000, null, -366, 568, 3, 6, 1.0, 6, 1.0 ] - - [ "EE", 1442044800000, -19, -19, null, 1442041200000, -19, 37, 1, 1, 0.0, 1, 0.5 ] - - [ "EE", 1442041200000, 37, 18, null, null, -19, 37, 2, 2, 1.0, 2, 1.0 ] - - [ "EG", 1442073600000, 1, 1, null, 1442055600000, 1, 112, 1, 1, 0.0, 1, 0.2 ] - - [ "EG", 1442055600000, 14, 15, null, 1442026800000, 1, 112, 1, 2, 0.25, 2, 0.4 ] - - [ "EG", 1442026800000, 16, 31, 1442073600000, 1442091600000, 1, 112, 2, 3, 0.5, 3, 0.6 ] - - [ "EG", 1442091600000, 27, 58, 1442055600000, 1442062800000, 1, 112, 2, 4, 0.75, 4, 0.8 ] - - [ "EG", 1442062800000, 112, 170, 1442026800000, null, 1, 112, 3, 5, 1.0, 5, 1.0 ] - - [ "ES", 1442044800000, -169, -169, null, 1442088000000, -169, 2506, 1, 1, 0.0, 1, 0.05 ] - - [ "ES", 1442088000000, -130, -299, null, 1442062800000, -169, 2506, 1, 2, 0.05263157894736842, 2, 0.1 ] - - [ "ES", 1442062800000, -71, -370, 1442044800000, 1442034000000, -169, 2506, 1, 3, 0.10526315789473684, 3, 0.15 ] - - [ "ES", 1442034000000, -52, -422, 1442088000000, 1442023200000, -169, 2506, 1, 4, 0.15789473684210525, 4, 0.2 ] - - [ "ES", 1442023200000, -5, -427, 1442062800000, 1442052000000, -169, 2506, 1, 5, 0.21052631578947367, 5, 0.25 ] - - [ "ES", 1442052000000, -4, -431, 1442034000000, 1442037600000, -169, 2506, 1, 6, 0.2631578947368421, 6, 0.3 ] - - [ "ES", 1442037600000, 3, -428, 1442023200000, 1442070000000, -169, 2506, 1, 7, 0.3157894736842105, 7, 0.35 ] - - [ "ES", 1442070000000, 61, -367, 1442052000000, 1442019600000, -169, 2506, 2, 8, 0.3684210526315789, 8, 0.4 ] - - [ "ES", 1442019600000, 103, -264, 1442037600000, 1442041200000, -169, 2506, 2, 9, 0.42105263157894735, 9, 0.45 ] - - [ "ES", 1442041200000, 118, -146, 1442070000000, 1442073600000, -169, 2506, 2, 10, 0.47368421052631576, 10, 0.5 ] - - [ "ES", 1442073600000, 154, 8, 1442019600000, 1442048400000, -169, 2506, 2, 11, 0.5263157894736842, 11, 0.55 ] - - [ "ES", 1442048400000, 158, 166, 1442041200000, 1442084400000, -169, 2506, 2, 12, 0.5789473684210527, 12, 0.6 ] - - [ "ES", 1442084400000, 337, 503, 1442073600000, 1442098800000, -169, 2506, 2, 13, 0.631578947368421, 13, 0.65 ] - - [ "ES", 1442098800000, 458, 961, 1442048400000, 1442066400000, -169, 2506, 2, 14, 0.6842105263157895, 14, 0.7 ] - - [ "ES", 1442066400000, 461, 1422, 1442084400000, 1442055600000, -169, 2506, 3, 15, 0.7368421052631579, 15, 0.75 ] - - [ "ES", 1442055600000, 495, 1917, 1442098800000, 1442091600000, -169, 2506, 3, 16, 0.7894736842105263, 16, 0.8 ] - - [ "ES", 1442091600000, 700, 2617, 1442066400000, 1442059200000, -169, 2506, 3, 17, 0.8421052631578947, 17, 0.85 ] - - [ "ES", 1442059200000, 1086, 3703, 1442055600000, 1442077200000, -169, 2506, 3, 18, 0.8947368421052632, 18, 0.9 ] - - [ "ES", 1442077200000, 1240, 4943, 1442091600000, 1442095200000, -169, 2506, 3, 19, 0.9473684210526315, 19, 0.95 ] - - [ "ES", 1442095200000, 2506, 7449, 1442059200000, null, -169, 2506, 3, 20, 1.0, 20, 1.0 ] - - [ "FI", 1442073600000, -1, -1, null, 1442048400000, -1, 1491, 1, 1, 0.0, 1, 0.08333333333333333 ] - - [ "FI", 1442048400000, 12, 11, null, 1442037600000, -1, 1491, 1, 2, 0.09090909090909091, 2, 0.16666666666666666 ] - - [ "FI", 1442037600000, 14, 25, 1442073600000, 1442062800000, -1, 1491, 1, 3, 0.18181818181818182, 3, 0.25 ] - - [ "FI", 1442062800000, 19, 44, 1442048400000, 1442095200000, -1, 1491, 1, 4, 0.2727272727272727, 4, 0.3333333333333333 ] - - [ "FI", 1442095200000, 69, 113, 1442037600000, 1442080800000, -1, 1491, 2, 5, 0.36363636363636365, 5, 0.4166666666666667 ] - - [ "FI", 1442080800000, 104, 217, 1442062800000, 1442066400000, -1, 1491, 2, 6, 0.45454545454545453, 6, 0.5 ] - - [ "FI", 1442066400000, 183, 400, 1442095200000, 1442052000000, -1, 1491, 2, 7, 0.5454545454545454, 7, 0.5833333333333334 ] - - [ "FI", 1442052000000, 186, 586, 1442080800000, 1442077200000, -1, 1491, 2, 8, 0.6363636363636364, 8, 0.6666666666666666 ] - - [ "FI", 1442077200000, 200, 786, 1442066400000, 1442059200000, -1, 1491, 3, 9, 0.7272727272727273, 9, 0.75 ] - - [ "FI", 1442059200000, 407, 1193, 1442052000000, 1442084400000, -1, 1491, 3, 10, 0.8181818181818182, 10, 0.8333333333333334 ] - - [ "FI", 1442084400000, 895, 2088, 1442077200000, 1442030400000, -1, 1491, 3, 11, 0.9090909090909091, 11, 0.9166666666666666 ] - - [ "FI", 1442030400000, 1491, 3579, 1442059200000, null, -1, 1491, 3, 12, 1.0, 12, 1.0 ] - - [ "FR", 1442077200000, -444, -444, null, 1442016000000, -444, 6643, 1, 1, 0.0, 1, 0.043478260869565216 ] - - [ "FR", 1442016000000, -1, -445, null, 1442026800000, -444, 6643, 1, 2, 0.045454545454545456, 2, 0.08695652173913043 ] - - [ "FR", 1442026800000, 86, -359, 1442077200000, 1442095200000, -444, 6643, 1, 3, 0.09090909090909091, 3, 0.13043478260869565 ] - - [ "FR", 1442095200000, 87, -272, 1442016000000, 1442098800000, -444, 6643, 1, 4, 0.13636363636363635, 4, 0.17391304347826086 ] - - [ "FR", 1442098800000, 136, -136, 1442026800000, 1442044800000, -444, 6643, 1, 5, 0.18181818181818182, 5, 0.21739130434782608 ] - - [ "FR", 1442044800000, 172, 36, 1442095200000, 1442055600000, -444, 6643, 1, 6, 0.22727272727272727, 6, 0.2608695652173913 ] - - [ "FR", 1442055600000, 463, 499, 1442098800000, 1442070000000, -444, 6643, 1, 7, 0.2727272727272727, 7, 0.30434782608695654 ] - - [ "FR", 1442070000000, 474, 973, 1442044800000, 1442034000000, -444, 6643, 1, 8, 0.3181818181818182, 8, 0.34782608695652173 ] - - [ "FR", 1442034000000, 476, 1449, 1442055600000, 1442080800000, -444, 6643, 2, 9, 0.36363636363636365, 9, 0.391304347826087 ] - - [ "FR", 1442080800000, 557, 2006, 1442070000000, 1442019600000, -444, 6643, 2, 10, 0.4090909090909091, 10, 0.43478260869565216 ] - - [ "FR", 1442019600000, 585, 2591, 1442034000000, 1442041200000, -444, 6643, 2, 11, 0.45454545454545453, 11, 0.4782608695652174 ] - - [ "FR", 1442041200000, 604, 3195, 1442080800000, 1442023200000, -444, 6643, 2, 12, 0.5, 12, 0.5217391304347826 ] - - [ "FR", 1442023200000, 628, 3823, 1442019600000, 1442052000000, -444, 6643, 2, 13, 0.5454545454545454, 13, 0.5652173913043478 ] - - [ "FR", 1442052000000, 637, 4460, 1442041200000, 1442091600000, -444, 6643, 2, 14, 0.5909090909090909, 14, 0.6086956521739131 ] - - [ "FR", 1442091600000, 741, 5201, 1442023200000, 1442088000000, -444, 6643, 2, 15, 0.6363636363636364, 15, 0.6521739130434783 ] - - [ "FR", 1442088000000, 1872, 7073, 1442052000000, 1442066400000, -444, 6643, 2, 16, 0.6818181818181818, 16, 0.6956521739130435 ] - - [ "FR", 1442066400000, 2516, 9589, 1442091600000, 1442048400000, -444, 6643, 3, 17, 0.7272727272727273, 17, 0.7391304347826086 ] - - [ "FR", 1442048400000, 3027, 12616, 1442088000000, 1442073600000, -444, 6643, 3, 18, 0.7727272727272727, 18, 0.782608695652174 ] - - [ "FR", 1442073600000, 3522, 16138, 1442066400000, 1442037600000, -444, 6643, 3, 19, 0.8181818181818182, 19, 0.8260869565217391 ] - - [ "FR", 1442037600000, 4174, 20312, 1442048400000, 1442059200000, -444, 6643, 3, 20, 0.8636363636363636, 20, 0.8695652173913043 ] - - [ "FR", 1442059200000, 4650, 24962, 1442073600000, 1442062800000, -444, 6643, 3, 21, 0.9090909090909091, 21, 0.9130434782608695 ] - - [ "FR", 1442062800000, 5676, 30638, 1442037600000, 1442084400000, -444, 6643, 3, 22, 0.9545454545454546, 22, 0.9565217391304348 ] - - [ "FR", 1442084400000, 6643, 37281, 1442059200000, null, -444, 6643, 3, 23, 1.0, 23, 1.0 ] - - [ "GB", 1442016000000, -44, -44, null, 1442034000000, -44, 16111, 1, 1, 0.0, 1, 0.041666666666666664 ] - - [ "GB", 1442034000000, -12, -56, null, 1442044800000, -44, 16111, 1, 2, 0.043478260869565216, 2, 0.08333333333333333 ] - - [ "GB", 1442044800000, 32, -24, 1442016000000, 1442041200000, -44, 16111, 1, 3, 0.08695652173913043, 3, 0.125 ] - - [ "GB", 1442041200000, 42, 18, 1442034000000, 1442098800000, -44, 16111, 1, 4, 0.13043478260869565, 4, 0.16666666666666666 ] - - [ "GB", 1442098800000, 49, 67, 1442044800000, 1442019600000, -44, 16111, 1, 5, 0.17391304347826086, 5, 0.20833333333333334 ] - - [ "GB", 1442019600000, 54, 121, 1442041200000, 1442052000000, -44, 16111, 1, 6, 0.21739130434782608, 6, 0.25 ] - - [ "GB", 1442052000000, 168, 289, 1442098800000, 1442095200000, -44, 16111, 1, 7, 0.2608695652173913, 7, 0.2916666666666667 ] - - [ "GB", 1442095200000, 238, 527, 1442019600000, 1442026800000, -44, 16111, 1, 8, 0.30434782608695654, 8, 0.3333333333333333 ] - - [ "GB", 1442026800000, 339, 866, 1442052000000, 1442070000000, -44, 16111, 2, 9, 0.34782608695652173, 9, 0.375 ] - - [ "GB", 1442070000000, 374, 1240, 1442095200000, 1442084400000, -44, 16111, 2, 10, 0.391304347826087, 10, 0.4166666666666667 ] - - [ "GB", 1442084400000, 384, 1624, 1442026800000, 1442055600000, -44, 16111, 2, 11, 0.43478260869565216, 11, 0.4583333333333333 ] - - [ "GB", 1442055600000, 453, 2077, 1442070000000, 1442037600000, -44, 16111, 2, 12, 0.4782608695652174, 12, 0.5 ] - - [ "GB", 1442037600000, 544, 2621, 1442084400000, 1442073600000, -44, 16111, 2, 13, 0.5217391304347826, 13, 0.5416666666666666 ] - - [ "GB", 1442073600000, 648, 3269, 1442055600000, 1442066400000, -44, 16111, 2, 14, 0.5652173913043478, 14, 0.5833333333333334 ] - - [ "GB", 1442066400000, 671, 3940, 1442037600000, 1442048400000, -44, 16111, 2, 15, 0.6086956521739131, 15, 0.625 ] - - [ "GB", 1442048400000, 740, 4680, 1442073600000, 1442091600000, -44, 16111, 2, 16, 0.6521739130434783, 16, 0.6666666666666666 ] - - [ "GB", 1442091600000, 811, 5491, 1442066400000, 1442077200000, -44, 16111, 3, 17, 0.6956521739130435, 17, 0.7083333333333334 ] - - [ "GB", 1442077200000, 1135, 6626, 1442048400000, 1442080800000, -44, 16111, 3, 18, 0.7391304347826086, 18, 0.75 ] - - [ "GB", 1442080800000, 1444, 8070, 1442091600000, 1442088000000, -44, 16111, 3, 19, 0.782608695652174, 19, 0.7916666666666666 ] - - [ "GB", 1442088000000, 1593, 9663, 1442077200000, 1442023200000, -44, 16111, 3, 20, 0.8260869565217391, 20, 0.8333333333333334 ] - - [ "GB", 1442023200000, 1816, 11479, 1442080800000, 1442030400000, -44, 16111, 3, 21, 0.8695652173913043, 21, 0.875 ] - - [ "GB", 1442030400000, 2524, 14003, 1442088000000, 1442062800000, -44, 16111, 3, 22, 0.9130434782608695, 22, 0.9166666666666666 ] - - [ "GB", 1442062800000, 5743, 19746, 1442023200000, 1442059200000, -44, 16111, 3, 23, 0.9565217391304348, 23, 0.9583333333333334 ] - - [ "GB", 1442059200000, 16111, 35857, 1442030400000, null, -44, 16111, 3, 24, 1.0, 24, 1.0 ] - - [ "GE", 1442052000000, -108, -108, null, 1442080800000, -108, 16, 1, 1, 0.0, 1, 0.25 ] - - [ "GE", 1442080800000, -27, -135, null, 1442044800000, -108, 16, 1, 2, 0.3333333333333333, 2, 0.5 ] - - [ "GE", 1442044800000, -21, -156, 1442052000000, 1442062800000, -108, 16, 2, 3, 0.6666666666666666, 3, 0.75 ] - - [ "GE", 1442062800000, 16, -140, 1442080800000, null, -108, 16, 3, 4, 1.0, 4, 1.0 ] - - [ "GH", 1442088000000, 0, 0, null, null, 0, 0, 1, 1, 0.0, 1, 1.0 ] - - [ "GR", 1442073600000, -314, -314, null, 1442048400000, -314, 179, 1, 1, 0.0, 1, 0.1 ] - - [ "GR", 1442048400000, -26, -340, null, 1442034000000, -314, 179, 1, 2, 0.1111111111111111, 2, 0.2 ] - - [ "GR", 1442034000000, 0, -340, 1442073600000, 1442070000000, -314, 179, 1, 3, 0.2222222222222222, 3, 0.3 ] - - [ "GR", 1442070000000, 2, -338, 1442048400000, 1442041200000, -314, 179, 1, 4, 0.3333333333333333, 4, 0.4 ] - - [ "GR", 1442041200000, 7, -331, 1442034000000, 1442062800000, -314, 179, 2, 5, 0.4444444444444444, 5, 0.5 ] - - [ "GR", 1442062800000, 8, -323, 1442070000000, 1442019600000, -314, 179, 2, 6, 0.5555555555555556, 6, 0.6 ] - - [ "GR", 1442019600000, 82, -241, 1442041200000, 1442080800000, -314, 179, 2, 7, 0.6666666666666666, 7, 0.7 ] - - [ "GR", 1442080800000, 88, -153, 1442062800000, 1442091600000, -314, 179, 3, 8, 0.7777777777777778, 8, 0.8 ] - - [ "GR", 1442091600000, 123, -30, 1442019600000, 1442084400000, -314, 179, 3, 9, 0.8888888888888888, 9, 0.9 ] - - [ "GR", 1442084400000, 179, 149, 1442080800000, null, -314, 179, 3, 10, 1.0, 10, 1.0 ] - - [ "GT", 1442023200000, -167, -167, null, 1442098800000, -167, 173, 1, 1, 0.0, 1, 0.3333333333333333 ] - - [ "GT", 1442098800000, 1, -166, null, 1442026800000, -167, 173, 2, 2, 0.5, 2, 0.6666666666666666 ] - - [ "GT", 1442026800000, 173, 7, 1442023200000, null, -167, 173, 3, 3, 1.0, 3, 1.0 ] - - [ "HK", 1442026800000, -211, -211, null, 1442019600000, -211, 5545, 1, 1, 0.0, 1, 0.05263157894736842 ] - - [ "HK", 1442019600000, -113, -324, null, 1442041200000, -211, 5545, 1, 2, 0.05555555555555555, 2, 0.10526315789473684 ] - - [ "HK", 1442041200000, -15, -339, 1442026800000, 1442091600000, -211, 5545, 1, 3, 0.1111111111111111, 3, 0.15789473684210525 ] - - [ "HK", 1442091600000, -3, -342, 1442019600000, 1442095200000, -211, 5545, 1, 4, 0.16666666666666666, 4, 0.21052631578947367 ] - - [ "HK", 1442095200000, -1, -343, 1442041200000, 1442080800000, -211, 5545, 1, 5, 0.2222222222222222, 5, 0.2631578947368421 ] - - [ "HK", 1442080800000, 0, -343, 1442091600000, 1442048400000, -211, 5545, 1, 6, 0.2777777777777778, 6, 0.3157894736842105 ] - - [ "HK", 1442048400000, 1, -342, 1442095200000, 1442062800000, -211, 5545, 1, 7, 0.3333333333333333, 7, 0.42105263157894735 ] - - [ "HK", 1442062800000, 1, -341, 1442080800000, 1442059200000, -211, 5545, 2, 7, 0.3333333333333333, 7, 0.42105263157894735 ] - - [ "HK", 1442059200000, 2, -339, 1442048400000, 1442052000000, -211, 5545, 2, 9, 0.4444444444444444, 8, 0.47368421052631576 ] - - [ "HK", 1442052000000, 15, -324, 1442062800000, 1442044800000, -211, 5545, 2, 10, 0.5, 9, 0.5263157894736842 ] - - [ "HK", 1442044800000, 21, -303, 1442059200000, 1442066400000, -211, 5545, 2, 11, 0.5555555555555556, 10, 0.5789473684210527 ] - - [ "HK", 1442066400000, 39, -264, 1442052000000, 1442030400000, -211, 5545, 2, 12, 0.6111111111111112, 11, 0.631578947368421 ] - - [ "HK", 1442030400000, 157, -107, 1442044800000, 1442070000000, -211, 5545, 2, 13, 0.6666666666666666, 12, 0.6842105263157895 ] - - [ "HK", 1442070000000, 314, 207, 1442066400000, 1442037600000, -211, 5545, 3, 14, 0.7222222222222222, 13, 0.7368421052631579 ] - - [ "HK", 1442037600000, 636, 843, 1442030400000, 1442055600000, -211, 5545, 3, 15, 0.7777777777777778, 14, 0.7894736842105263 ] - - [ "HK", 1442055600000, 804, 1647, 1442070000000, 1442034000000, -211, 5545, 3, 16, 0.8333333333333334, 15, 0.8421052631578947 ] - - [ "HK", 1442034000000, 1137, 2784, 1442037600000, 1442023200000, -211, 5545, 3, 17, 0.8888888888888888, 16, 0.8947368421052632 ] - - [ "HK", 1442023200000, 2414, 5198, 1442055600000, 1442073600000, -211, 5545, 3, 18, 0.9444444444444444, 17, 0.9473684210526315 ] - - [ "HK", 1442073600000, 5545, 10743, 1442034000000, null, -211, 5545, 3, 19, 1.0, 18, 1.0 ] - - [ "HN", 1442026800000, -1, -1, null, null, -1, -1, 1, 1, 0.0, 1, 1.0 ] - - [ "HR", 1442084400000, -10, -10, null, 1442073600000, -10, 220, 1, 1, 0.0, 1, 0.16666666666666666 ] - - [ "HR", 1442073600000, 0, -10, null, 1442070000000, -10, 220, 1, 2, 0.2, 2, 0.3333333333333333 ] - - [ "HR", 1442070000000, 32, 22, 1442084400000, 1442077200000, -10, 220, 2, 3, 0.4, 3, 0.5 ] - - [ "HR", 1442077200000, 58, 80, 1442073600000, 1442088000000, -10, 220, 2, 4, 0.6, 4, 0.6666666666666666 ] - - [ "HR", 1442088000000, 82, 162, 1442070000000, 1442080800000, -10, 220, 3, 5, 0.8, 5, 0.8333333333333334 ] - - [ "HR", 1442080800000, 220, 382, 1442077200000, null, -10, 220, 3, 6, 1.0, 6, 1.0 ] - - [ "HU", 1442088000000, -71, -71, null, 1442091600000, -71, 547, 1, 1, 0.0, 1, 0.07692307692307693 ] - - [ "HU", 1442091600000, -5, -76, null, 1442055600000, -71, 547, 1, 2, 0.08333333333333333, 2, 0.15384615384615385 ] - - [ "HU", 1442055600000, -2, -78, 1442088000000, 1442019600000, -71, 547, 1, 3, 0.16666666666666666, 3, 0.23076923076923078 ] - - [ "HU", 1442019600000, 46, -32, 1442091600000, 1442062800000, -71, 547, 1, 4, 0.25, 4, 0.3076923076923077 ] - - [ "HU", 1442062800000, 50, 18, 1442055600000, 1442041200000, -71, 547, 1, 5, 0.3333333333333333, 5, 0.38461538461538464 ] - - [ "HU", 1442041200000, 91, 109, 1442019600000, 1442098800000, -71, 547, 2, 6, 0.4166666666666667, 6, 0.46153846153846156 ] - - [ "HU", 1442098800000, 110, 219, 1442062800000, 1442084400000, -71, 547, 2, 7, 0.5, 7, 0.5384615384615384 ] - - [ "HU", 1442084400000, 141, 360, 1442041200000, 1442037600000, -71, 547, 2, 8, 0.5833333333333334, 8, 0.6153846153846154 ] - - [ "HU", 1442037600000, 197, 557, 1442098800000, 1442080800000, -71, 547, 2, 9, 0.6666666666666666, 9, 0.6923076923076923 ] - - [ "HU", 1442080800000, 242, 799, 1442084400000, 1442095200000, -71, 547, 3, 10, 0.75, 10, 0.7692307692307693 ] - - [ "HU", 1442095200000, 271, 1070, 1442037600000, 1442048400000, -71, 547, 3, 11, 0.8333333333333334, 11, 0.8461538461538461 ] - - [ "HU", 1442048400000, 499, 1569, 1442080800000, 1442044800000, -71, 547, 3, 12, 0.9166666666666666, 12, 0.9230769230769231 ] - - [ "HU", 1442044800000, 547, 2116, 1442095200000, null, -71, 547, 3, 13, 1.0, 13, 1.0 ] - - [ "ID", 1442026800000, -416, -416, null, 1442044800000, -416, 279, 1, 1, 0.0, 1, 0.07692307692307693 ] - - [ "ID", 1442044800000, -388, -804, null, 1442041200000, -416, 279, 1, 2, 0.08333333333333333, 2, 0.15384615384615385 ] - - [ "ID", 1442041200000, 2, -802, 1442026800000, 1442098800000, -416, 279, 1, 3, 0.16666666666666666, 3, 0.23076923076923078 ] - - [ "ID", 1442098800000, 13, -789, 1442044800000, 1442037600000, -416, 279, 1, 4, 0.25, 4, 0.3076923076923077 ] - - [ "ID", 1442037600000, 14, -775, 1442041200000, 1442055600000, -416, 279, 1, 5, 0.3333333333333333, 5, 0.38461538461538464 ] - - [ "ID", 1442055600000, 16, -759, 1442098800000, 1442059200000, -416, 279, 2, 6, 0.4166666666666667, 6, 0.46153846153846156 ] - - [ "ID", 1442059200000, 17, -742, 1442037600000, 1442034000000, -416, 279, 2, 7, 0.5, 7, 0.5384615384615384 ] - - [ "ID", 1442034000000, 19, -723, 1442055600000, 1442095200000, -416, 279, 2, 8, 0.5833333333333334, 8, 0.6153846153846154 ] - - [ "ID", 1442095200000, 20, -703, 1442059200000, 1442091600000, -416, 279, 2, 9, 0.6666666666666666, 9, 0.6923076923076923 ] - - [ "ID", 1442091600000, 21, -682, 1442034000000, 1442070000000, -416, 279, 3, 10, 0.75, 10, 0.7692307692307693 ] - - [ "ID", 1442070000000, 42, -640, 1442095200000, 1442023200000, -416, 279, 3, 11, 0.8333333333333334, 11, 0.8461538461538461 ] - - [ "ID", 1442023200000, 106, -534, 1442091600000, 1442030400000, -416, 279, 3, 12, 0.9166666666666666, 12, 0.9230769230769231 ] - - [ "ID", 1442030400000, 279, -255, 1442070000000, null, -416, 279, 3, 13, 1.0, 13, 1.0 ] - - [ "IE", 1442070000000, -100, -100, null, 1442091600000, -100, 1062, 1, 1, 0.0, 1, 0.125 ] - - [ "IE", 1442091600000, -71, -171, null, 1442026800000, -100, 1062, 1, 2, 0.14285714285714285, 2, 0.25 ] - - [ "IE", 1442026800000, 1, -170, 1442070000000, 1442030400000, -100, 1062, 1, 3, 0.2857142857142857, 3, 0.5 ] - - [ "IE", 1442030400000, 1, -169, 1442091600000, 1442048400000, -100, 1062, 2, 3, 0.2857142857142857, 3, 0.5 ] - - [ "IE", 1442048400000, 27, -142, 1442026800000, 1442077200000, -100, 1062, 2, 5, 0.5714285714285714, 4, 0.625 ] - - [ "IE", 1442077200000, 403, 261, 1442030400000, 1442084400000, -100, 1062, 2, 6, 0.7142857142857143, 5, 0.75 ] - - [ "IE", 1442084400000, 819, 1080, 1442048400000, 1442066400000, -100, 1062, 3, 7, 0.8571428571428571, 6, 0.875 ] - - [ "IE", 1442066400000, 1062, 2142, 1442077200000, null, -100, 1062, 3, 8, 1.0, 7, 1.0 ] - - [ "IL", 1442095200000, 0, 0, null, 1442066400000, 0, 2745, 1, 1, 0.0, 1, 0.0625 ] - - [ "IL", 1442066400000, 3, 3, null, 1442098800000, 0, 2745, 1, 2, 0.06666666666666667, 2, 0.1875 ] - - [ "IL", 1442098800000, 3, 6, 1442095200000, 1442055600000, 0, 2745, 1, 2, 0.06666666666666667, 2, 0.1875 ] - - [ "IL", 1442055600000, 4, 10, 1442066400000, 1442048400000, 0, 2745, 1, 4, 0.2, 3, 0.25 ] - - [ "IL", 1442048400000, 25, 35, 1442098800000, 1442073600000, 0, 2745, 1, 5, 0.26666666666666666, 4, 0.3125 ] - - [ "IL", 1442073600000, 31, 66, 1442055600000, 1442041200000, 0, 2745, 1, 6, 0.3333333333333333, 5, 0.375 ] - - [ "IL", 1442041200000, 35, 101, 1442048400000, 1442070000000, 0, 2745, 2, 7, 0.4, 6, 0.4375 ] - - [ "IL", 1442070000000, 49, 150, 1442073600000, 1442080800000, 0, 2745, 2, 8, 0.4666666666666667, 7, 0.5 ] - - [ "IL", 1442080800000, 88, 238, 1442041200000, 1442062800000, 0, 2745, 2, 9, 0.5333333333333333, 8, 0.5625 ] - - [ "IL", 1442062800000, 180, 418, 1442070000000, 1442077200000, 0, 2745, 2, 10, 0.6, 9, 0.625 ] - - [ "IL", 1442077200000, 187, 605, 1442080800000, 1442044800000, 0, 2745, 2, 11, 0.6666666666666666, 10, 0.6875 ] - - [ "IL", 1442044800000, 218, 823, 1442062800000, 1442091600000, 0, 2745, 3, 12, 0.7333333333333333, 11, 0.75 ] - - [ "IL", 1442091600000, 707, 1530, 1442077200000, 1442084400000, 0, 2745, 3, 13, 0.8, 12, 0.8125 ] - - [ "IL", 1442084400000, 1137, 2667, 1442044800000, 1442059200000, 0, 2745, 3, 14, 0.8666666666666667, 13, 0.875 ] - - [ "IL", 1442059200000, 1205, 3872, 1442091600000, 1442052000000, 0, 2745, 3, 15, 0.9333333333333333, 14, 0.9375 ] - - [ "IL", 1442052000000, 2745, 6617, 1442084400000, null, 0, 2745, 3, 16, 1.0, 15, 1.0 ] - - [ "IN", 1442023200000, -142, -142, null, 1442080800000, -142, 12091, 1, 1, 0.0, 1, 0.045454545454545456 ] - - [ "IN", 1442080800000, 0, -142, null, 1442016000000, -142, 12091, 1, 2, 0.047619047619047616, 2, 0.09090909090909091 ] - - [ "IN", 1442016000000, 1, -141, 1442023200000, 1442095200000, -142, 12091, 1, 3, 0.09523809523809523, 3, 0.13636363636363635 ] - - [ "IN", 1442095200000, 4, -137, 1442080800000, 1442019600000, -142, 12091, 1, 4, 0.14285714285714285, 4, 0.18181818181818182 ] - - [ "IN", 1442019600000, 38, -99, 1442016000000, 1442041200000, -142, 12091, 1, 5, 0.19047619047619047, 5, 0.22727272727272727 ] - - [ "IN", 1442041200000, 80, -19, 1442095200000, 1442066400000, -142, 12091, 1, 6, 0.23809523809523808, 6, 0.2727272727272727 ] - - [ "IN", 1442066400000, 116, 97, 1442019600000, 1442088000000, -142, 12091, 1, 7, 0.2857142857142857, 7, 0.3181818181818182 ] - - [ "IN", 1442088000000, 121, 218, 1442041200000, 1442037600000, -142, 12091, 1, 8, 0.3333333333333333, 8, 0.36363636363636365 ] - - [ "IN", 1442037600000, 135, 353, 1442066400000, 1442055600000, -142, 12091, 2, 9, 0.38095238095238093, 9, 0.4090909090909091 ] - - [ "IN", 1442055600000, 166, 519, 1442088000000, 1442084400000, -142, 12091, 2, 10, 0.42857142857142855, 10, 0.45454545454545453 ] - - [ "IN", 1442084400000, 187, 706, 1442037600000, 1442048400000, -142, 12091, 2, 11, 0.47619047619047616, 11, 0.5 ] - - [ "IN", 1442048400000, 262, 968, 1442055600000, 1442052000000, -142, 12091, 2, 12, 0.5238095238095238, 12, 0.5454545454545454 ] - - [ "IN", 1442052000000, 534, 1502, 1442084400000, 1442059200000, -142, 12091, 2, 13, 0.5714285714285714, 13, 0.5909090909090909 ] - - [ "IN", 1442059200000, 708, 2210, 1442048400000, 1442026800000, -142, 12091, 2, 14, 0.6190476190476191, 14, 0.6363636363636364 ] - - [ "IN", 1442026800000, 974, 3184, 1442052000000, 1442073600000, -142, 12091, 2, 15, 0.6666666666666666, 15, 0.6818181818181818 ] - - [ "IN", 1442073600000, 1170, 4354, 1442059200000, 1442034000000, -142, 12091, 3, 16, 0.7142857142857143, 16, 0.7272727272727273 ] - - [ "IN", 1442034000000, 1350, 5704, 1442026800000, 1442030400000, -142, 12091, 3, 17, 0.7619047619047619, 17, 0.7727272727272727 ] - - [ "IN", 1442030400000, 1448, 7152, 1442073600000, 1442062800000, -142, 12091, 3, 18, 0.8095238095238095, 18, 0.8181818181818182 ] - - [ "IN", 1442062800000, 1547, 8699, 1442034000000, 1442044800000, -142, 12091, 3, 19, 0.8571428571428571, 19, 0.8636363636363636 ] - - [ "IN", 1442044800000, 2677, 11376, 1442030400000, 1442077200000, -142, 12091, 3, 20, 0.9047619047619048, 20, 0.9090909090909091 ] - - [ "IN", 1442077200000, 5699, 17075, 1442062800000, 1442070000000, -142, 12091, 3, 21, 0.9523809523809523, 21, 0.9545454545454546 ] - - [ "IN", 1442070000000, 12091, 29166, 1442044800000, null, -142, 12091, 3, 22, 1.0, 22, 1.0 ] - - [ "IQ", 1442095200000, -2, -2, null, 1442041200000, -2, 6, 1, 1, 0.0, 1, 0.25 ] - - [ "IQ", 1442041200000, -1, -3, null, 1442052000000, -2, 6, 1, 2, 0.3333333333333333, 2, 0.5 ] - - [ "IQ", 1442052000000, 0, -3, 1442095200000, 1442044800000, -2, 6, 2, 3, 0.6666666666666666, 3, 0.75 ] - - [ "IQ", 1442044800000, 6, 3, 1442041200000, null, -2, 6, 3, 4, 1.0, 4, 1.0 ] - - [ "IR", 1442073600000, -193, -193, null, 1442055600000, -193, 1455, 1, 1, 0.0, 1, 0.07692307692307693 ] - - [ "IR", 1442055600000, -124, -317, null, 1442041200000, -193, 1455, 1, 2, 0.08333333333333333, 2, 0.15384615384615385 ] - - [ "IR", 1442041200000, -79, -396, 1442073600000, 1442077200000, -193, 1455, 1, 3, 0.16666666666666666, 3, 0.23076923076923078 ] - - [ "IR", 1442077200000, -34, -430, 1442055600000, 1442034000000, -193, 1455, 1, 4, 0.25, 4, 0.3076923076923077 ] - - [ "IR", 1442034000000, -8, -438, 1442041200000, 1442026800000, -193, 1455, 1, 5, 0.3333333333333333, 5, 0.38461538461538464 ] - - [ "IR", 1442026800000, 0, -438, 1442077200000, 1442091600000, -193, 1455, 2, 6, 0.4166666666666667, 6, 0.5384615384615384 ] - - [ "IR", 1442091600000, 0, -438, 1442034000000, 1442080800000, -193, 1455, 2, 6, 0.4166666666666667, 6, 0.5384615384615384 ] - - [ "IR", 1442080800000, 131, -307, 1442026800000, 1442052000000, -193, 1455, 2, 8, 0.5833333333333334, 7, 0.6153846153846154 ] - - [ "IR", 1442052000000, 155, -152, 1442091600000, 1442044800000, -193, 1455, 2, 9, 0.6666666666666666, 8, 0.6923076923076923 ] - - [ "IR", 1442044800000, 306, 154, 1442080800000, 1442030400000, -193, 1455, 3, 10, 0.75, 9, 0.7692307692307693 ] - - [ "IR", 1442030400000, 375, 529, 1442052000000, 1442088000000, -193, 1455, 3, 11, 0.8333333333333334, 10, 0.8461538461538461 ] - - [ "IR", 1442088000000, 714, 1243, 1442044800000, 1442059200000, -193, 1455, 3, 12, 0.9166666666666666, 11, 0.9230769230769231 ] - - [ "IR", 1442059200000, 1455, 2698, 1442030400000, null, -193, 1455, 3, 13, 1.0, 12, 1.0 ] - - [ "IT", 1442030400000, -17, -17, null, 1442037600000, -17, 6240, 1, 1, 0.0, 1, 0.041666666666666664 ] - - [ "IT", 1442037600000, -9, -26, null, 1442016000000, -17, 6240, 1, 2, 0.043478260869565216, 2, 0.08333333333333333 ] - - [ "IT", 1442016000000, 0, -26, 1442030400000, 1442041200000, -17, 6240, 1, 3, 0.08695652173913043, 3, 0.125 ] - - [ "IT", 1442041200000, 20, -6, 1442037600000, 1442070000000, -17, 6240, 1, 4, 0.13043478260869565, 4, 0.16666666666666666 ] - - [ "IT", 1442070000000, 81, 75, 1442016000000, 1442023200000, -17, 6240, 1, 5, 0.17391304347826086, 5, 0.20833333333333334 ] - - [ "IT", 1442023200000, 111, 186, 1442041200000, 1442019600000, -17, 6240, 1, 6, 0.21739130434782608, 6, 0.25 ] - - [ "IT", 1442019600000, 183, 369, 1442070000000, 1442026800000, -17, 6240, 1, 7, 0.2608695652173913, 7, 0.2916666666666667 ] - - [ "IT", 1442026800000, 222, 591, 1442023200000, 1442091600000, -17, 6240, 1, 8, 0.30434782608695654, 8, 0.3333333333333333 ] - - [ "IT", 1442091600000, 351, 942, 1442019600000, 1442059200000, -17, 6240, 2, 9, 0.34782608695652173, 9, 0.375 ] - - [ "IT", 1442059200000, 542, 1484, 1442026800000, 1442098800000, -17, 6240, 2, 10, 0.391304347826087, 10, 0.4166666666666667 ] - - [ "IT", 1442098800000, 565, 2049, 1442091600000, 1442048400000, -17, 6240, 2, 11, 0.43478260869565216, 11, 0.4583333333333333 ] - - [ "IT", 1442048400000, 676, 2725, 1442059200000, 1442034000000, -17, 6240, 2, 12, 0.4782608695652174, 12, 0.5 ] - - [ "IT", 1442034000000, 1006, 3731, 1442098800000, 1442044800000, -17, 6240, 2, 13, 0.5217391304347826, 13, 0.5416666666666666 ] - - [ "IT", 1442044800000, 1483, 5214, 1442048400000, 1442052000000, -17, 6240, 2, 14, 0.5652173913043478, 14, 0.5833333333333334 ] - - [ "IT", 1442052000000, 1880, 7094, 1442034000000, 1442062800000, -17, 6240, 2, 15, 0.6086956521739131, 15, 0.625 ] - - [ "IT", 1442062800000, 1938, 9032, 1442044800000, 1442077200000, -17, 6240, 2, 16, 0.6521739130434783, 16, 0.6666666666666666 ] - - [ "IT", 1442077200000, 2188, 11220, 1442052000000, 1442073600000, -17, 6240, 3, 17, 0.6956521739130435, 17, 0.7083333333333334 ] - - [ "IT", 1442073600000, 2586, 13806, 1442062800000, 1442084400000, -17, 6240, 3, 18, 0.7391304347826086, 18, 0.75 ] - - [ "IT", 1442084400000, 2660, 16466, 1442077200000, 1442095200000, -17, 6240, 3, 19, 0.782608695652174, 19, 0.7916666666666666 ] - - [ "IT", 1442095200000, 2940, 19406, 1442073600000, 1442088000000, -17, 6240, 3, 20, 0.8260869565217391, 20, 0.8333333333333334 ] - - [ "IT", 1442088000000, 3746, 23152, 1442084400000, 1442066400000, -17, 6240, 3, 21, 0.8695652173913043, 21, 0.875 ] - - [ "IT", 1442066400000, 4155, 27307, 1442095200000, 1442080800000, -17, 6240, 3, 22, 0.9130434782608695, 22, 0.9166666666666666 ] - - [ "IT", 1442080800000, 5544, 32851, 1442088000000, 1442055600000, -17, 6240, 3, 23, 0.9565217391304348, 23, 0.9583333333333334 ] - - [ "IT", 1442055600000, 6240, 39091, 1442066400000, null, -17, 6240, 3, 24, 1.0, 24, 1.0 ] - - [ "JM", 1442070000000, 30, 30, null, null, 30, 30, 1, 1, 0.0, 1, 1.0 ] - - [ "JO", 1442055600000, -2, -2, null, 1442059200000, -2, 4, 1, 1, 0.0, 1, 0.3333333333333333 ] - - [ "JO", 1442059200000, 0, -2, null, 1442080800000, -2, 4, 2, 2, 0.5, 2, 0.6666666666666666 ] - - [ "JO", 1442080800000, 4, 2, 1442055600000, null, -2, 4, 3, 3, 1.0, 3, 1.0 ] - - [ "JP", 1442016000000, -113, -113, null, 1442059200000, -113, 2789, 1, 1, 0.0, 1, 0.041666666666666664 ] - - [ "JP", 1442059200000, -85, -198, null, 1442098800000, -113, 2789, 1, 2, 0.043478260869565216, 2, 0.08333333333333333 ] - - [ "JP", 1442098800000, -6, -204, 1442016000000, 1442095200000, -113, 2789, 1, 3, 0.08695652173913043, 3, 0.125 ] - - [ "JP", 1442095200000, 0, -204, 1442059200000, 1442084400000, -113, 2789, 1, 4, 0.13043478260869565, 4, 0.16666666666666666 ] - - [ "JP", 1442084400000, 13, -191, 1442098800000, 1442077200000, -113, 2789, 1, 5, 0.17391304347826086, 5, 0.20833333333333334 ] - - [ "JP", 1442077200000, 51, -140, 1442095200000, 1442088000000, -113, 2789, 1, 6, 0.21739130434782608, 6, 0.25 ] - - [ "JP", 1442088000000, 57, -83, 1442084400000, 1442070000000, -113, 2789, 1, 7, 0.2608695652173913, 7, 0.2916666666666667 ] - - [ "JP", 1442070000000, 79, -4, 1442077200000, 1442066400000, -113, 2789, 1, 8, 0.30434782608695654, 8, 0.3333333333333333 ] - - [ "JP", 1442066400000, 167, 163, 1442088000000, 1442091600000, -113, 2789, 2, 9, 0.34782608695652173, 9, 0.375 ] - - [ "JP", 1442091600000, 228, 391, 1442070000000, 1442080800000, -113, 2789, 2, 10, 0.391304347826087, 10, 0.4166666666666667 ] - - [ "JP", 1442080800000, 420, 811, 1442066400000, 1442062800000, -113, 2789, 2, 11, 0.43478260869565216, 11, 0.4583333333333333 ] - - [ "JP", 1442062800000, 803, 1614, 1442091600000, 1442030400000, -113, 2789, 2, 12, 0.4782608695652174, 12, 0.5 ] - - [ "JP", 1442030400000, 805, 2419, 1442080800000, 1442034000000, -113, 2789, 2, 13, 0.5217391304347826, 13, 0.5416666666666666 ] - - [ "JP", 1442034000000, 910, 3329, 1442062800000, 1442055600000, -113, 2789, 2, 14, 0.5652173913043478, 14, 0.5833333333333334 ] - - [ "JP", 1442055600000, 998, 4327, 1442030400000, 1442026800000, -113, 2789, 2, 15, 0.6086956521739131, 15, 0.625 ] - - [ "JP", 1442026800000, 1035, 5362, 1442034000000, 1442073600000, -113, 2789, 2, 16, 0.6521739130434783, 16, 0.6666666666666666 ] - - [ "JP", 1442073600000, 1162, 6524, 1442055600000, 1442041200000, -113, 2789, 3, 17, 0.6956521739130435, 17, 0.7083333333333334 ] - - [ "JP", 1442041200000, 1373, 7897, 1442026800000, 1442044800000, -113, 2789, 3, 18, 0.7391304347826086, 18, 0.75 ] - - [ "JP", 1442044800000, 1569, 9466, 1442073600000, 1442023200000, -113, 2789, 3, 19, 0.782608695652174, 19, 0.7916666666666666 ] - - [ "JP", 1442023200000, 1959, 11425, 1442041200000, 1442048400000, -113, 2789, 3, 20, 0.8260869565217391, 20, 0.8333333333333334 ] - - [ "JP", 1442048400000, 1981, 13406, 1442044800000, 1442019600000, -113, 2789, 3, 21, 0.8695652173913043, 21, 0.875 ] - - [ "JP", 1442019600000, 2002, 15408, 1442023200000, 1442037600000, -113, 2789, 3, 22, 0.9130434782608695, 22, 0.9166666666666666 ] - - [ "JP", 1442037600000, 2181, 17589, 1442048400000, 1442052000000, -113, 2789, 3, 23, 0.9565217391304348, 23, 0.9583333333333334 ] - - [ "JP", 1442052000000, 2789, 20378, 1442019600000, null, -113, 2789, 3, 24, 1.0, 24, 1.0 ] - - [ "KE", 1442044800000, -1, -1, null, null, -1, -1, 1, 1, 0.0, 1, 1.0 ] - - [ "KG", 1442073600000, 6, 6, null, null, 6, 6, 1, 1, 0.0, 1, 1.0 ] - - [ "KR", 1442048400000, -374, -374, null, 1442026800000, -374, 3640, 1, 1, 0.0, 1, 0.045454545454545456 ] - - [ "KR", 1442026800000, -179, -553, null, 1442077200000, -374, 3640, 1, 2, 0.047619047619047616, 2, 0.09090909090909091 ] - - [ "KR", 1442077200000, -40, -593, 1442048400000, 1442098800000, -374, 3640, 1, 3, 0.09523809523809523, 3, 0.13636363636363635 ] - - [ "KR", 1442098800000, -36, -629, 1442026800000, 1442080800000, -374, 3640, 1, 4, 0.14285714285714285, 4, 0.18181818181818182 ] - - [ "KR", 1442080800000, -33, -662, 1442077200000, 1442052000000, -374, 3640, 1, 5, 0.19047619047619047, 5, 0.22727272727272727 ] - - [ "KR", 1442052000000, -3, -665, 1442098800000, 1442041200000, -374, 3640, 1, 6, 0.23809523809523808, 6, 0.2727272727272727 ] - - [ "KR", 1442041200000, 20, -645, 1442080800000, 1442037600000, -374, 3640, 1, 7, 0.2857142857142857, 7, 0.3181818181818182 ] - - [ "KR", 1442037600000, 26, -619, 1442052000000, 1442059200000, -374, 3640, 1, 8, 0.3333333333333333, 8, 0.36363636363636365 ] - - [ "KR", 1442059200000, 208, -411, 1442041200000, 1442070000000, -374, 3640, 2, 9, 0.38095238095238093, 9, 0.4090909090909091 ] - - [ "KR", 1442070000000, 222, -189, 1442037600000, 1442084400000, -374, 3640, 2, 10, 0.42857142857142855, 10, 0.45454545454545453 ] - - [ "KR", 1442084400000, 314, 125, 1442059200000, 1442023200000, -374, 3640, 2, 11, 0.47619047619047616, 11, 0.5 ] - - [ "KR", 1442023200000, 319, 444, 1442070000000, 1442034000000, -374, 3640, 2, 12, 0.5238095238095238, 12, 0.5454545454545454 ] - - [ "KR", 1442034000000, 434, 878, 1442084400000, 1442019600000, -374, 3640, 2, 13, 0.5714285714285714, 13, 0.5909090909090909 ] - - [ "KR", 1442019600000, 445, 1323, 1442023200000, 1442088000000, -374, 3640, 2, 14, 0.6190476190476191, 14, 0.6363636363636364 ] - - [ "KR", 1442088000000, 524, 1847, 1442034000000, 1442095200000, -374, 3640, 2, 15, 0.6666666666666666, 15, 0.6818181818181818 ] - - [ "KR", 1442095200000, 827, 2674, 1442019600000, 1442044800000, -374, 3640, 3, 16, 0.7142857142857143, 16, 0.7272727272727273 ] - - [ "KR", 1442044800000, 829, 3503, 1442088000000, 1442016000000, -374, 3640, 3, 17, 0.7619047619047619, 17, 0.7727272727272727 ] - - [ "KR", 1442016000000, 1024, 4527, 1442095200000, 1442030400000, -374, 3640, 3, 18, 0.8095238095238095, 18, 0.8181818181818182 ] - - [ "KR", 1442030400000, 1035, 5562, 1442044800000, 1442062800000, -374, 3640, 3, 19, 0.8571428571428571, 19, 0.8636363636363636 ] - - [ "KR", 1442062800000, 1096, 6658, 1442016000000, 1442066400000, -374, 3640, 3, 20, 0.9047619047619048, 20, 0.9090909090909091 ] - - [ "KR", 1442066400000, 3299, 9957, 1442030400000, 1442055600000, -374, 3640, 3, 21, 0.9523809523809523, 21, 0.9545454545454546 ] - - [ "KR", 1442055600000, 3640, 13597, 1442062800000, null, -374, 3640, 3, 22, 1.0, 22, 1.0 ] - - [ "KW", 1442080800000, -33, -33, null, 1442055600000, -33, 1815, 1, 1, 0.0, 1, 0.25 ] - - [ "KW", 1442055600000, -2, -35, null, 1442077200000, -33, 1815, 1, 2, 0.3333333333333333, 2, 0.75 ] - - [ "KW", 1442077200000, -2, -37, 1442080800000, 1442070000000, -33, 1815, 2, 2, 0.3333333333333333, 2, 0.75 ] - - [ "KW", 1442070000000, 1815, 1778, 1442055600000, null, -33, 1815, 3, 4, 1.0, 3, 1.0 ] - - [ "KZ", 1442077200000, -317, -317, null, 1442084400000, -317, 439, 1, 1, 0.0, 1, 0.09090909090909091 ] - - [ "KZ", 1442084400000, -22, -339, null, 1442062800000, -317, 439, 1, 2, 0.1, 2, 0.18181818181818182 ] - - [ "KZ", 1442062800000, 0, -339, 1442077200000, 1442066400000, -317, 439, 1, 3, 0.2, 3, 0.36363636363636365 ] - - [ "KZ", 1442066400000, 0, -339, 1442084400000, 1442059200000, -317, 439, 1, 3, 0.2, 3, 0.36363636363636365 ] - - [ "KZ", 1442059200000, 33, -306, 1442062800000, 1442055600000, -317, 439, 2, 5, 0.4, 4, 0.45454545454545453 ] - - [ "KZ", 1442055600000, 63, -243, 1442066400000, 1442095200000, -317, 439, 2, 6, 0.5, 5, 0.5454545454545454 ] - - [ "KZ", 1442095200000, 91, -152, 1442059200000, 1442034000000, -317, 439, 2, 7, 0.6, 6, 0.6363636363636364 ] - - [ "KZ", 1442034000000, 161, 9, 1442055600000, 1442044800000, -317, 439, 2, 8, 0.7, 7, 0.7272727272727273 ] - - [ "KZ", 1442044800000, 401, 410, 1442095200000, 1442052000000, -317, 439, 3, 9, 0.8, 8, 0.8181818181818182 ] - - [ "KZ", 1442052000000, 412, 822, 1442034000000, 1442048400000, -317, 439, 3, 10, 0.9, 9, 0.9090909090909091 ] - - [ "KZ", 1442048400000, 439, 1261, 1442044800000, null, -317, 439, 3, 11, 1.0, 10, 1.0 ] - - [ "LB", 1442055600000, -67, -67, null, null, -67, -67, 1, 1, 0.0, 1, 1.0 ] - - [ "LK", 1442084400000, -3, -3, null, 1442048400000, -3, 79, 1, 1, 0.0, 1, 0.25 ] - - [ "LK", 1442048400000, 8, 5, null, 1442052000000, -3, 79, 1, 2, 0.3333333333333333, 2, 0.5 ] - - [ "LK", 1442052000000, 47, 52, 1442084400000, 1442026800000, -3, 79, 2, 3, 0.6666666666666666, 3, 0.75 ] - - [ "LK", 1442026800000, 79, 131, 1442048400000, null, -3, 79, 3, 4, 1.0, 4, 1.0 ] - - [ "LT", 1442098800000, -24, -24, null, 1442080800000, -24, 12, 1, 1, 0.0, 1, 0.5 ] - - [ "LT", 1442080800000, 12, -12, null, null, -24, 12, 2, 2, 1.0, 2, 1.0 ] - - [ "LU", 1442066400000, 0, 0, null, 1442095200000, 0, 525, 1, 1, 0.0, 1, 0.25 ] - - [ "LU", 1442095200000, 2, 2, null, 1442059200000, 0, 525, 1, 2, 0.3333333333333333, 2, 0.5 ] - - [ "LU", 1442059200000, 79, 81, 1442066400000, 1442077200000, 0, 525, 2, 3, 0.6666666666666666, 3, 0.75 ] - - [ "LU", 1442077200000, 525, 606, 1442095200000, null, 0, 525, 3, 4, 1.0, 4, 1.0 ] - - [ "LV", 1442095200000, 0, 0, null, null, 0, 0, 1, 1, 0.0, 1, 1.0 ] - - [ "MA", 1442059200000, -56, -56, null, 1442019600000, -56, 250, 1, 1, 0.0, 1, 0.14285714285714285 ] - - [ "MA", 1442019600000, -1, -57, null, 1442062800000, -56, 250, 1, 2, 0.16666666666666666, 2, 0.2857142857142857 ] - - [ "MA", 1442062800000, 0, -57, 1442059200000, 1442080800000, -56, 250, 1, 3, 0.3333333333333333, 3, 0.42857142857142855 ] - - [ "MA", 1442080800000, 5, -52, 1442019600000, 1442098800000, -56, 250, 2, 4, 0.5, 4, 0.5714285714285714 ] - - [ "MA", 1442098800000, 8, -44, 1442062800000, 1442055600000, -56, 250, 2, 5, 0.6666666666666666, 5, 0.7142857142857143 ] - - [ "MA", 1442055600000, 23, -21, 1442080800000, 1442077200000, -56, 250, 3, 6, 0.8333333333333334, 6, 0.8571428571428571 ] - - [ "MA", 1442077200000, 250, 229, 1442098800000, null, -56, 250, 3, 7, 1.0, 7, 1.0 ] - - [ "MD", 1442077200000, 6916, 6916, null, null, 6916, 6916, 1, 1, 0.0, 1, 1.0 ] - - [ "ME", 1442073600000, 0, 0, null, null, 0, 0, 1, 1, 0.0, 1, 1.0 ] - - [ "MH", 1442052000000, 40, 40, null, null, 40, 40, 1, 1, 0.0, 1, 1.0 ] - - [ "MK", 1442077200000, -72, -72, null, null, -72, -72, 1, 1, 0.0, 1, 1.0 ] - - [ "MM", 1442070000000, 3, 3, null, 1442073600000, 3, 25, 1, 1, 0.0, 1, 0.5 ] - - [ "MM", 1442073600000, 25, 28, null, null, 3, 25, 2, 2, 1.0, 2, 1.0 ] - - [ "MO", 1442070000000, 18, 18, null, 1442034000000, 18, 30, 1, 1, 0.0, 1, 0.5 ] - - [ "MO", 1442034000000, 30, 48, null, null, 18, 30, 2, 2, 1.0, 2, 1.0 ] - - [ "MR", 1442080800000, 10, 10, null, null, 10, 10, 1, 1, 0.0, 1, 1.0 ] - - [ "MT", 1442048400000, -1, -1, null, null, -1, -1, 1, 1, 0.0, 1, 1.0 ] - - [ "MV", 1442073600000, -3, -3, null, null, -3, -3, 1, 1, 0.0, 1, 1.0 ] - - [ "MX", 1442095200000, -456, -456, null, 1442080800000, -456, 3874, 1, 1, 0.0, 1, 0.058823529411764705 ] - - [ "MX", 1442080800000, -376, -832, null, 1442041200000, -456, 3874, 1, 2, 0.0625, 2, 0.11764705882352941 ] - - [ "MX", 1442041200000, -294, -1126, 1442095200000, 1442016000000, -456, 3874, 1, 3, 0.125, 3, 0.17647058823529413 ] - - [ "MX", 1442016000000, -67, -1193, 1442080800000, 1442073600000, -456, 3874, 1, 4, 0.1875, 4, 0.23529411764705882 ] - - [ "MX", 1442073600000, -21, -1214, 1442041200000, 1442066400000, -456, 3874, 1, 5, 0.25, 5, 0.29411764705882354 ] - - [ "MX", 1442066400000, -1, -1215, 1442016000000, 1442070000000, -456, 3874, 1, 6, 0.3125, 6, 0.4117647058823529 ] - - [ "MX", 1442070000000, -1, -1216, 1442073600000, 1442037600000, -456, 3874, 2, 6, 0.3125, 6, 0.4117647058823529 ] - - [ "MX", 1442037600000, 4, -1212, 1442066400000, 1442098800000, -456, 3874, 2, 8, 0.4375, 7, 0.47058823529411764 ] - - [ "MX", 1442098800000, 28, -1184, 1442070000000, 1442030400000, -456, 3874, 2, 9, 0.5, 8, 0.5294117647058824 ] - - [ "MX", 1442030400000, 373, -811, 1442037600000, 1442088000000, -456, 3874, 2, 10, 0.5625, 9, 0.5882352941176471 ] - - [ "MX", 1442088000000, 494, -317, 1442098800000, 1442023200000, -456, 3874, 2, 11, 0.625, 10, 0.6470588235294118 ] - - [ "MX", 1442023200000, 549, 232, 1442030400000, 1442091600000, -456, 3874, 2, 12, 0.6875, 11, 0.7058823529411765 ] - - [ "MX", 1442091600000, 799, 1031, 1442088000000, 1442034000000, -456, 3874, 3, 13, 0.75, 12, 0.7647058823529411 ] - - [ "MX", 1442034000000, 944, 1975, 1442023200000, 1442084400000, -456, 3874, 3, 14, 0.8125, 13, 0.8235294117647058 ] - - [ "MX", 1442084400000, 981, 2956, 1442091600000, 1442026800000, -456, 3874, 3, 15, 0.875, 14, 0.8823529411764706 ] - - [ "MX", 1442026800000, 3642, 6598, 1442034000000, 1442077200000, -456, 3874, 3, 16, 0.9375, 15, 0.9411764705882353 ] - - [ "MX", 1442077200000, 3874, 10472, 1442084400000, null, -456, 3874, 3, 17, 1.0, 16, 1.0 ] - - [ "MY", 1442044800000, -127, -127, null, 1442077200000, -127, 1028, 1, 1, 0.0, 1, 0.08333333333333333 ] - - [ "MY", 1442077200000, -10, -137, null, 1442019600000, -127, 1028, 1, 2, 0.09090909090909091, 2, 0.16666666666666666 ] - - [ "MY", 1442019600000, -7, -144, 1442044800000, 1442030400000, -127, 1028, 1, 3, 0.18181818181818182, 3, 0.25 ] - - [ "MY", 1442030400000, -3, -147, 1442077200000, 1442059200000, -127, 1028, 1, 4, 0.2727272727272727, 4, 0.3333333333333333 ] - - [ "MY", 1442059200000, 0, -147, 1442019600000, 1442055600000, -127, 1028, 2, 5, 0.36363636363636365, 5, 0.4166666666666667 ] - - [ "MY", 1442055600000, 1, -146, 1442030400000, 1442066400000, -127, 1028, 2, 6, 0.45454545454545453, 6, 0.6666666666666666 ] - - [ "MY", 1442066400000, 1, -145, 1442059200000, 1442073600000, -127, 1028, 2, 6, 0.45454545454545453, 6, 0.6666666666666666 ] - - [ "MY", 1442073600000, 1, -144, 1442055600000, 1442048400000, -127, 1028, 2, 6, 0.45454545454545453, 6, 0.6666666666666666 ] - - [ "MY", 1442048400000, 649, 505, 1442066400000, 1442098800000, -127, 1028, 3, 9, 0.7272727272727273, 7, 0.75 ] - - [ "MY", 1442098800000, 739, 1244, 1442073600000, 1442041200000, -127, 1028, 3, 10, 0.8181818181818182, 8, 0.8333333333333334 ] - - [ "MY", 1442041200000, 935, 2179, 1442048400000, 1442034000000, -127, 1028, 3, 11, 0.9090909090909091, 9, 0.9166666666666666 ] - - [ "MY", 1442034000000, 1028, 3207, 1442098800000, null, -127, 1028, 3, 12, 1.0, 10, 1.0 ] - - [ "NG", 1442070000000, 6, 6, null, 1442052000000, 6, 208, 1, 1, 0.0, 1, 0.5 ] - - [ "NG", 1442052000000, 208, 214, null, null, 6, 208, 2, 2, 1.0, 2, 1.0 ] - - [ "NL", 1442070000000, -84, -84, null, 1442062800000, -84, 8947, 1, 1, 0.0, 1, 0.058823529411764705 ] - - [ "NL", 1442062800000, -30, -114, null, 1442034000000, -84, 8947, 1, 2, 0.0625, 2, 0.11764705882352941 ] - - [ "NL", 1442034000000, 0, -114, 1442070000000, 1442098800000, -84, 8947, 1, 3, 0.125, 3, 0.17647058823529413 ] - - [ "NL", 1442098800000, 4, -110, 1442062800000, 1442088000000, -84, 8947, 1, 4, 0.1875, 4, 0.23529411764705882 ] - - [ "NL", 1442088000000, 12, -98, 1442034000000, 1442044800000, -84, 8947, 1, 5, 0.25, 5, 0.29411764705882354 ] - - [ "NL", 1442044800000, 16, -82, 1442098800000, 1442091600000, -84, 8947, 1, 6, 0.3125, 6, 0.35294117647058826 ] - - [ "NL", 1442091600000, 19, -63, 1442088000000, 1442052000000, -84, 8947, 2, 7, 0.375, 7, 0.4117647058823529 ] - - [ "NL", 1442052000000, 53, -10, 1442044800000, 1442066400000, -84, 8947, 2, 8, 0.4375, 8, 0.47058823529411764 ] - - [ "NL", 1442066400000, 61, 51, 1442091600000, 1442095200000, -84, 8947, 2, 9, 0.5, 9, 0.5294117647058824 ] - - [ "NL", 1442095200000, 70, 121, 1442052000000, 1442055600000, -84, 8947, 2, 10, 0.5625, 10, 0.5882352941176471 ] - - [ "NL", 1442055600000, 105, 226, 1442066400000, 1442073600000, -84, 8947, 2, 11, 0.625, 11, 0.6470588235294118 ] - - [ "NL", 1442073600000, 166, 392, 1442095200000, 1442059200000, -84, 8947, 2, 12, 0.6875, 12, 0.7058823529411765 ] - - [ "NL", 1442059200000, 206, 598, 1442055600000, 1442084400000, -84, 8947, 3, 13, 0.75, 13, 0.7647058823529411 ] - - [ "NL", 1442084400000, 436, 1034, 1442073600000, 1442077200000, -84, 8947, 3, 14, 0.8125, 14, 0.8235294117647058 ] - - [ "NL", 1442077200000, 878, 1912, 1442059200000, 1442048400000, -84, 8947, 3, 15, 0.875, 15, 0.8823529411764706 ] - - [ "NL", 1442048400000, 1303, 3215, 1442084400000, 1442080800000, -84, 8947, 3, 16, 0.9375, 16, 0.9411764705882353 ] - - [ "NL", 1442080800000, 8947, 12162, 1442077200000, null, -84, 8947, 3, 17, 1.0, 17, 1.0 ] - - [ "NO", 1442048400000, -447, -447, null, 1442095200000, -447, 447, 1, 1, 0.0, 1, 0.09090909090909091 ] - - [ "NO", 1442095200000, -1, -448, null, 1442098800000, -447, 447, 1, 2, 0.1, 2, 0.18181818181818182 ] - - [ "NO", 1442098800000, 2, -446, 1442048400000, 1442088000000, -447, 447, 1, 3, 0.2, 3, 0.2727272727272727 ] - - [ "NO", 1442088000000, 15, -431, 1442095200000, 1442091600000, -447, 447, 1, 4, 0.3, 4, 0.45454545454545453 ] - - [ "NO", 1442091600000, 15, -416, 1442098800000, 1442055600000, -447, 447, 2, 4, 0.3, 4, 0.45454545454545453 ] - - [ "NO", 1442055600000, 29, -387, 1442088000000, 1442080800000, -447, 447, 2, 6, 0.5, 5, 0.5454545454545454 ] - - [ "NO", 1442080800000, 31, -356, 1442091600000, 1442019600000, -447, 447, 2, 7, 0.6, 6, 0.6363636363636364 ] - - [ "NO", 1442019600000, 48, -308, 1442055600000, 1442066400000, -447, 447, 2, 8, 0.7, 7, 0.7272727272727273 ] - - [ "NO", 1442066400000, 71, -237, 1442080800000, 1442073600000, -447, 447, 3, 9, 0.8, 8, 0.8181818181818182 ] - - [ "NO", 1442073600000, 222, -15, 1442019600000, 1442052000000, -447, 447, 3, 10, 0.9, 9, 0.9090909090909091 ] - - [ "NO", 1442052000000, 447, 432, 1442066400000, null, -447, 447, 3, 11, 1.0, 10, 1.0 ] - - [ "NP", 1442048400000, 61, 61, null, null, 61, 61, 1, 1, 0.0, 1, 1.0 ] - - [ "NZ", 1442084400000, -52, -52, null, 1442095200000, -52, 635, 1, 1, 0.0, 1, 0.1111111111111111 ] - - [ "NZ", 1442095200000, -4, -56, null, 1442098800000, -52, 635, 1, 2, 0.125, 2, 0.2222222222222222 ] - - [ "NZ", 1442098800000, -2, -58, 1442084400000, 1442019600000, -52, 635, 1, 3, 0.25, 3, 0.3333333333333333 ] - - [ "NZ", 1442019600000, 28, -30, 1442095200000, 1442037600000, -52, 635, 2, 4, 0.375, 4, 0.4444444444444444 ] - - [ "NZ", 1442037600000, 66, 36, 1442098800000, 1442048400000, -52, 635, 2, 5, 0.5, 5, 0.5555555555555556 ] - - [ "NZ", 1442048400000, 189, 225, 1442019600000, 1442088000000, -52, 635, 2, 6, 0.625, 6, 0.6666666666666666 ] - - [ "NZ", 1442088000000, 405, 630, 1442037600000, 1442059200000, -52, 635, 3, 7, 0.75, 7, 0.7777777777777778 ] - - [ "NZ", 1442059200000, 428, 1058, 1442048400000, 1442026800000, -52, 635, 3, 8, 0.875, 8, 0.8888888888888888 ] - - [ "NZ", 1442026800000, 635, 1693, 1442088000000, null, -52, 635, 3, 9, 1.0, 9, 1.0 ] - - [ "OM", 1442052000000, 0, 0, null, null, 0, 0, 1, 1, 0.0, 1, 1.0 ] - - [ "PA", 1442026800000, 0, 0, null, null, 0, 0, 1, 1, 0.0, 1, 1.0 ] - - [ "PE", 1442077200000, -163, -163, null, 1442084400000, -163, 1861, 1, 1, 0.0, 1, 0.1111111111111111 ] - - [ "PE", 1442084400000, -68, -231, null, 1442095200000, -163, 1861, 1, 2, 0.125, 2, 0.2222222222222222 ] - - [ "PE", 1442095200000, -19, -250, 1442077200000, 1442026800000, -163, 1861, 1, 3, 0.25, 3, 0.3333333333333333 ] - - [ "PE", 1442026800000, -12, -262, 1442084400000, 1442062800000, -163, 1861, 2, 4, 0.375, 4, 0.5555555555555556 ] - - [ "PE", 1442062800000, -12, -274, 1442095200000, 1442080800000, -163, 1861, 2, 4, 0.375, 4, 0.5555555555555556 ] - - [ "PE", 1442080800000, -2, -276, 1442026800000, 1442023200000, -163, 1861, 2, 6, 0.625, 5, 0.6666666666666666 ] - - [ "PE", 1442023200000, 26, -250, 1442062800000, 1442019600000, -163, 1861, 3, 7, 0.75, 6, 0.7777777777777778 ] - - [ "PE", 1442019600000, 523, 273, 1442080800000, 1442098800000, -163, 1861, 3, 8, 0.875, 7, 0.8888888888888888 ] - - [ "PE", 1442098800000, 1861, 2134, 1442023200000, null, -163, 1861, 3, 9, 1.0, 8, 1.0 ] - - [ "PH", 1442073600000, -227, -227, null, 1442041200000, -227, 1969, 1, 1, 0.0, 1, 0.047619047619047616 ] - - [ "PH", 1442041200000, 0, -227, null, 1442077200000, -227, 1969, 1, 2, 0.05, 2, 0.09523809523809523 ] - - [ "PH", 1442077200000, 2, -225, 1442073600000, 1442019600000, -227, 1969, 1, 3, 0.1, 3, 0.14285714285714285 ] - - [ "PH", 1442019600000, 6, -219, 1442041200000, 1442098800000, -227, 1969, 1, 4, 0.15, 4, 0.19047619047619047 ] - - [ "PH", 1442098800000, 8, -211, 1442077200000, 1442037600000, -227, 1969, 1, 5, 0.2, 5, 0.23809523809523808 ] - - [ "PH", 1442037600000, 17, -194, 1442019600000, 1442052000000, -227, 1969, 1, 6, 0.25, 6, 0.2857142857142857 ] - - [ "PH", 1442052000000, 22, -172, 1442098800000, 1442030400000, -227, 1969, 1, 7, 0.3, 7, 0.3333333333333333 ] - - [ "PH", 1442030400000, 26, -146, 1442037600000, 1442080800000, -227, 1969, 2, 8, 0.35, 8, 0.38095238095238093 ] - - [ "PH", 1442080800000, 32, -114, 1442052000000, 1442070000000, -227, 1969, 2, 9, 0.4, 9, 0.42857142857142855 ] - - [ "PH", 1442070000000, 34, -80, 1442030400000, 1442084400000, -227, 1969, 2, 10, 0.45, 10, 0.47619047619047616 ] - - [ "PH", 1442084400000, 39, -41, 1442080800000, 1442044800000, -227, 1969, 2, 11, 0.5, 11, 0.5238095238095238 ] - - [ "PH", 1442044800000, 55, 14, 1442070000000, 1442034000000, -227, 1969, 2, 12, 0.55, 12, 0.5714285714285714 ] - - [ "PH", 1442034000000, 59, 73, 1442084400000, 1442048400000, -227, 1969, 2, 13, 0.6, 13, 0.6190476190476191 ] - - [ "PH", 1442048400000, 62, 135, 1442044800000, 1442062800000, -227, 1969, 2, 14, 0.65, 14, 0.6666666666666666 ] - - [ "PH", 1442062800000, 171, 306, 1442034000000, 1442059200000, -227, 1969, 3, 15, 0.7, 15, 0.7142857142857143 ] - - [ "PH", 1442059200000, 273, 579, 1442048400000, 1442023200000, -227, 1969, 3, 16, 0.75, 16, 0.7619047619047619 ] - - [ "PH", 1442023200000, 459, 1038, 1442062800000, 1442091600000, -227, 1969, 3, 17, 0.8, 17, 0.8095238095238095 ] - - [ "PH", 1442091600000, 816, 1854, 1442059200000, 1442026800000, -227, 1969, 3, 18, 0.85, 18, 0.8571428571428571 ] - - [ "PH", 1442026800000, 910, 2764, 1442023200000, 1442066400000, -227, 1969, 3, 19, 0.9, 19, 0.9047619047619048 ] - - [ "PH", 1442066400000, 1880, 4644, 1442091600000, 1442055600000, -227, 1969, 3, 20, 0.95, 20, 0.9523809523809523 ] - - [ "PH", 1442055600000, 1969, 6613, 1442026800000, null, -227, 1969, 3, 21, 1.0, 21, 1.0 ] - - [ "PK", 1442048400000, 15, 15, null, 1442062800000, 15, 335, 1, 1, 0.0, 1, 0.14285714285714285 ] - - [ "PK", 1442062800000, 23, 38, null, 1442041200000, 15, 335, 1, 2, 0.16666666666666666, 2, 0.2857142857142857 ] - - [ "PK", 1442041200000, 24, 62, 1442048400000, 1442070000000, 15, 335, 1, 3, 0.3333333333333333, 3, 0.42857142857142855 ] - - [ "PK", 1442070000000, 43, 105, 1442062800000, 1442037600000, 15, 335, 2, 4, 0.5, 4, 0.5714285714285714 ] - - [ "PK", 1442037600000, 100, 205, 1442041200000, 1442026800000, 15, 335, 2, 5, 0.6666666666666666, 5, 0.7142857142857143 ] - - [ "PK", 1442026800000, 101, 306, 1442070000000, 1442019600000, 15, 335, 3, 6, 0.8333333333333334, 6, 0.8571428571428571 ] - - [ "PK", 1442019600000, 335, 641, 1442037600000, null, 15, 335, 3, 7, 1.0, 7, 1.0 ] - - [ "PL", 1442098800000, -9, -9, null, 1442080800000, -9, 4171, 1, 1, 0.0, 1, 0.05555555555555555 ] - - [ "PL", 1442080800000, 7, -2, null, 1442084400000, -9, 4171, 1, 2, 0.058823529411764705, 2, 0.1111111111111111 ] - - [ "PL", 1442084400000, 13, 11, 1442098800000, 1442073600000, -9, 4171, 1, 3, 0.11764705882352941, 3, 0.16666666666666666 ] - - [ "PL", 1442073600000, 30, 41, 1442080800000, 1442066400000, -9, 4171, 1, 4, 0.17647058823529413, 4, 0.2222222222222222 ] - - [ "PL", 1442066400000, 34, 75, 1442084400000, 1442037600000, -9, 4171, 1, 5, 0.23529411764705882, 5, 0.2777777777777778 ] - - [ "PL", 1442037600000, 95, 170, 1442073600000, 1442070000000, -9, 4171, 1, 6, 0.29411764705882354, 6, 0.3333333333333333 ] - - [ "PL", 1442070000000, 146, 316, 1442066400000, 1442059200000, -9, 4171, 2, 7, 0.35294117647058826, 7, 0.3888888888888889 ] - - [ "PL", 1442059200000, 199, 515, 1442037600000, 1442041200000, -9, 4171, 2, 8, 0.4117647058823529, 8, 0.4444444444444444 ] - - [ "PL", 1442041200000, 281, 796, 1442070000000, 1442044800000, -9, 4171, 2, 9, 0.47058823529411764, 9, 0.5 ] - - [ "PL", 1442044800000, 319, 1115, 1442059200000, 1442077200000, -9, 4171, 2, 10, 0.5294117647058824, 10, 0.5555555555555556 ] - - [ "PL", 1442077200000, 324, 1439, 1442041200000, 1442052000000, -9, 4171, 2, 11, 0.5882352941176471, 11, 0.6111111111111112 ] - - [ "PL", 1442052000000, 330, 1769, 1442044800000, 1442088000000, -9, 4171, 2, 12, 0.6470588235294118, 12, 0.6666666666666666 ] - - [ "PL", 1442088000000, 346, 2115, 1442077200000, 1442048400000, -9, 4171, 3, 13, 0.7058823529411765, 13, 0.7222222222222222 ] - - [ "PL", 1442048400000, 366, 2481, 1442052000000, 1442055600000, -9, 4171, 3, 14, 0.7647058823529411, 14, 0.7777777777777778 ] - - [ "PL", 1442055600000, 410, 2891, 1442088000000, 1442091600000, -9, 4171, 3, 15, 0.8235294117647058, 15, 0.8333333333333334 ] - - [ "PL", 1442091600000, 902, 3793, 1442048400000, 1442095200000, -9, 4171, 3, 16, 0.8823529411764706, 16, 0.8888888888888888 ] - - [ "PL", 1442095200000, 1851, 5644, 1442055600000, 1442062800000, -9, 4171, 3, 17, 0.9411764705882353, 17, 0.9444444444444444 ] - - [ "PL", 1442062800000, 4171, 9815, 1442091600000, null, -9, 4171, 3, 18, 1.0, 18, 1.0 ] - - [ "PR", 1442059200000, -35, -35, null, 1442030400000, -35, 29, 1, 1, 0.0, 1, 0.2 ] - - [ "PR", 1442030400000, 2, -33, null, 1442077200000, -35, 29, 1, 2, 0.25, 2, 0.4 ] - - [ "PR", 1442077200000, 5, -28, 1442059200000, 1442026800000, -35, 29, 2, 3, 0.5, 3, 0.6 ] - - [ "PR", 1442026800000, 22, -6, 1442030400000, 1442095200000, -35, 29, 2, 4, 0.75, 4, 0.8 ] - - [ "PR", 1442095200000, 29, 23, 1442077200000, null, -35, 29, 3, 5, 1.0, 5, 1.0 ] - - [ "PT", 1442080800000, -79, -79, null, 1442077200000, -79, 3470, 1, 1, 0.0, 1, 0.1 ] - - [ "PT", 1442077200000, -75, -154, null, 1442098800000, -79, 3470, 1, 2, 0.1111111111111111, 2, 0.2 ] - - [ "PT", 1442098800000, 2, -152, 1442080800000, 1442044800000, -79, 3470, 1, 3, 0.2222222222222222, 3, 0.3 ] - - [ "PT", 1442044800000, 11, -141, 1442077200000, 1442066400000, -79, 3470, 1, 4, 0.3333333333333333, 4, 0.4 ] - - [ "PT", 1442066400000, 12, -129, 1442098800000, 1442095200000, -79, 3470, 2, 5, 0.4444444444444444, 5, 0.5 ] - - [ "PT", 1442095200000, 19, -110, 1442044800000, 1442052000000, -79, 3470, 2, 6, 0.5555555555555556, 6, 0.6 ] - - [ "PT", 1442052000000, 102, -8, 1442066400000, 1442019600000, -79, 3470, 2, 7, 0.6666666666666666, 7, 0.7 ] - - [ "PT", 1442019600000, 172, 164, 1442095200000, 1442088000000, -79, 3470, 3, 8, 0.7777777777777778, 8, 0.8 ] - - [ "PT", 1442088000000, 403, 567, 1442052000000, 1442070000000, -79, 3470, 3, 9, 0.8888888888888888, 9, 0.9 ] - - [ "PT", 1442070000000, 3470, 4037, 1442019600000, null, -79, 3470, 3, 10, 1.0, 10, 1.0 ] - - [ "PY", 1442019600000, 1, 1, null, 1442080800000, 1, 628, 1, 1, 0.0, 1, 0.3333333333333333 ] - - [ "PY", 1442080800000, 5, 6, null, 1442084400000, 1, 628, 2, 2, 0.5, 2, 0.6666666666666666 ] - - [ "PY", 1442084400000, 628, 634, 1442019600000, null, 1, 628, 3, 3, 1.0, 3, 1.0 ] - - [ "QA", 1442041200000, 13, 13, null, null, 13, 13, 1, 1, 0.0, 1, 1.0 ] - - [ "RO", 1442070000000, -29, -29, null, 1442091600000, -29, 845, 1, 1, 0.0, 1, 0.1 ] - - [ "RO", 1442091600000, 0, -29, null, 1442073600000, -29, 845, 1, 2, 0.1111111111111111, 2, 0.2 ] - - [ "RO", 1442073600000, 15, -14, 1442070000000, 1442055600000, -29, 845, 1, 3, 0.2222222222222222, 3, 0.3 ] - - [ "RO", 1442055600000, 26, 12, 1442091600000, 1442034000000, -29, 845, 1, 4, 0.3333333333333333, 4, 0.4 ] - - [ "RO", 1442034000000, 68, 80, 1442073600000, 1442044800000, -29, 845, 2, 5, 0.4444444444444444, 5, 0.5 ] - - [ "RO", 1442044800000, 284, 364, 1442055600000, 1442052000000, -29, 845, 2, 6, 0.5555555555555556, 6, 0.6 ] - - [ "RO", 1442052000000, 319, 683, 1442034000000, 1442062800000, -29, 845, 2, 7, 0.6666666666666666, 7, 0.7 ] - - [ "RO", 1442062800000, 541, 1224, 1442044800000, 1442095200000, -29, 845, 3, 8, 0.7777777777777778, 8, 0.8 ] - - [ "RO", 1442095200000, 824, 2048, 1442052000000, 1442041200000, -29, 845, 3, 9, 0.8888888888888888, 9, 0.9 ] - - [ "RO", 1442041200000, 845, 2893, 1442062800000, null, -29, 845, 3, 10, 1.0, 10, 1.0 ] - - [ "RS", 1442091600000, -15, -15, null, 1442066400000, -15, 813, 1, 1, 0.0, 1, 0.14285714285714285 ] - - [ "RS", 1442066400000, 0, -15, null, 1442080800000, -15, 813, 1, 2, 0.16666666666666666, 2, 0.42857142857142855 ] - - [ "RS", 1442080800000, 0, -15, 1442091600000, 1442019600000, -15, 813, 1, 2, 0.16666666666666666, 2, 0.42857142857142855 ] - - [ "RS", 1442019600000, 6, -9, 1442066400000, 1442062800000, -15, 813, 2, 4, 0.5, 3, 0.5714285714285714 ] - - [ "RS", 1442062800000, 13, 4, 1442080800000, 1442084400000, -15, 813, 2, 5, 0.6666666666666666, 4, 0.7142857142857143 ] - - [ "RS", 1442084400000, 89, 93, 1442019600000, 1442073600000, -15, 813, 3, 6, 0.8333333333333334, 5, 0.8571428571428571 ] - - [ "RS", 1442073600000, 813, 906, 1442062800000, null, -15, 813, 3, 7, 1.0, 6, 1.0 ] - - [ "RU", 1442037600000, -324, -324, null, 1442026800000, -324, 12098, 1, 1, 0.0, 1, 0.043478260869565216 ] - - [ "RU", 1442026800000, 0, -324, null, 1442030400000, -324, 12098, 1, 2, 0.045454545454545456, 2, 0.08695652173913043 ] - - [ "RU", 1442030400000, 76, -248, 1442037600000, 1442062800000, -324, 12098, 1, 3, 0.09090909090909091, 3, 0.13043478260869565 ] - - [ "RU", 1442062800000, 168, -80, 1442026800000, 1442023200000, -324, 12098, 1, 4, 0.13636363636363635, 4, 0.17391304347826086 ] - - [ "RU", 1442023200000, 299, 219, 1442030400000, 1442095200000, -324, 12098, 1, 5, 0.18181818181818182, 5, 0.21739130434782608 ] - - [ "RU", 1442095200000, 435, 654, 1442062800000, 1442055600000, -324, 12098, 1, 6, 0.22727272727272727, 6, 0.2608695652173913 ] - - [ "RU", 1442055600000, 499, 1153, 1442023200000, 1442041200000, -324, 12098, 1, 7, 0.2727272727272727, 7, 0.30434782608695654 ] - - [ "RU", 1442041200000, 580, 1733, 1442095200000, 1442080800000, -324, 12098, 1, 8, 0.3181818181818182, 8, 0.34782608695652173 ] - - [ "RU", 1442080800000, 655, 2388, 1442055600000, 1442034000000, -324, 12098, 2, 9, 0.36363636363636365, 9, 0.391304347826087 ] - - [ "RU", 1442034000000, 658, 3046, 1442041200000, 1442048400000, -324, 12098, 2, 10, 0.4090909090909091, 10, 0.43478260869565216 ] - - [ "RU", 1442048400000, 1027, 4073, 1442080800000, 1442077200000, -324, 12098, 2, 11, 0.45454545454545453, 11, 0.4782608695652174 ] - - [ "RU", 1442077200000, 1162, 5235, 1442034000000, 1442052000000, -324, 12098, 2, 12, 0.5, 12, 0.5217391304347826 ] - - [ "RU", 1442052000000, 1214, 6449, 1442048400000, 1442073600000, -324, 12098, 2, 13, 0.5454545454545454, 13, 0.5652173913043478 ] - - [ "RU", 1442073600000, 1618, 8067, 1442077200000, 1442066400000, -324, 12098, 2, 14, 0.5909090909090909, 14, 0.6086956521739131 ] - - [ "RU", 1442066400000, 2047, 10114, 1442052000000, 1442019600000, -324, 12098, 2, 15, 0.6363636363636364, 15, 0.6521739130434783 ] - - [ "RU", 1442019600000, 2214, 12328, 1442073600000, 1442044800000, -324, 12098, 2, 16, 0.6818181818181818, 16, 0.6956521739130435 ] - - [ "RU", 1442044800000, 2564, 14892, 1442066400000, 1442088000000, -324, 12098, 3, 17, 0.7272727272727273, 17, 0.7391304347826086 ] - - [ "RU", 1442088000000, 2596, 17488, 1442019600000, 1442091600000, -324, 12098, 3, 18, 0.7727272727272727, 18, 0.782608695652174 ] - - [ "RU", 1442091600000, 3449, 20937, 1442044800000, 1442059200000, -324, 12098, 3, 19, 0.8181818181818182, 19, 0.8260869565217391 ] - - [ "RU", 1442059200000, 3902, 24839, 1442088000000, 1442070000000, -324, 12098, 3, 20, 0.8636363636363636, 20, 0.8695652173913043 ] - - [ "RU", 1442070000000, 4706, 29545, 1442091600000, 1442084400000, -324, 12098, 3, 21, 0.9090909090909091, 21, 0.9130434782608695 ] - - [ "RU", 1442084400000, 6461, 36006, 1442059200000, 1442098800000, -324, 12098, 3, 22, 0.9545454545454546, 22, 0.9565217391304348 ] - - [ "RU", 1442098800000, 12098, 48104, 1442070000000, null, -324, 12098, 3, 23, 1.0, 23, 1.0 ] - - [ "SA", 1442037600000, -97, -97, null, 1442077200000, -97, 1276, 1, 1, 0.0, 1, 0.125 ] - - [ "SA", 1442077200000, -50, -147, null, 1442059200000, -97, 1276, 1, 2, 0.14285714285714285, 2, 0.25 ] - - [ "SA", 1442059200000, 0, -147, 1442037600000, 1442073600000, -97, 1276, 1, 3, 0.2857142857142857, 3, 0.375 ] - - [ "SA", 1442073600000, 2, -145, 1442077200000, 1442055600000, -97, 1276, 2, 4, 0.42857142857142855, 4, 0.5 ] - - [ "SA", 1442055600000, 11, -134, 1442059200000, 1442048400000, -97, 1276, 2, 5, 0.5714285714285714, 5, 0.625 ] - - [ "SA", 1442048400000, 14, -120, 1442073600000, 1442084400000, -97, 1276, 2, 6, 0.7142857142857143, 6, 0.75 ] - - [ "SA", 1442084400000, 458, 338, 1442055600000, 1442066400000, -97, 1276, 3, 7, 0.8571428571428571, 7, 0.875 ] - - [ "SA", 1442066400000, 1276, 1614, 1442048400000, null, -97, 1276, 3, 8, 1.0, 8, 1.0 ] - - [ "SE", 1442048400000, -145, -145, null, 1442055600000, -145, 1476, 1, 1, 0.0, 1, 0.06666666666666667 ] - - [ "SE", 1442055600000, -5, -150, null, 1442091600000, -145, 1476, 1, 2, 0.07142857142857142, 2, 0.13333333333333333 ] - - [ "SE", 1442091600000, -1, -151, 1442048400000, 1442098800000, -145, 1476, 1, 3, 0.14285714285714285, 3, 0.2 ] - - [ "SE", 1442098800000, 0, -151, 1442055600000, 1442052000000, -145, 1476, 1, 4, 0.21428571428571427, 4, 0.26666666666666666 ] - - [ "SE", 1442052000000, 1, -150, 1442091600000, 1442023200000, -145, 1476, 1, 5, 0.2857142857142857, 5, 0.3333333333333333 ] - - [ "SE", 1442023200000, 3, -147, 1442098800000, 1442066400000, -145, 1476, 2, 6, 0.35714285714285715, 6, 0.4 ] - - [ "SE", 1442066400000, 14, -133, 1442052000000, 1442030400000, -145, 1476, 2, 7, 0.42857142857142855, 7, 0.4666666666666667 ] - - [ "SE", 1442030400000, 30, -103, 1442023200000, 1442084400000, -145, 1476, 2, 8, 0.5, 8, 0.5333333333333333 ] - - [ "SE", 1442084400000, 37, -66, 1442066400000, 1442095200000, -145, 1476, 2, 9, 0.5714285714285714, 9, 0.6 ] - - [ "SE", 1442095200000, 61, -5, 1442030400000, 1442070000000, -145, 1476, 2, 10, 0.6428571428571429, 10, 0.6666666666666666 ] - - [ "SE", 1442070000000, 78, 73, 1442084400000, 1442080800000, -145, 1476, 3, 11, 0.7142857142857143, 11, 0.7333333333333333 ] - - [ "SE", 1442080800000, 89, 162, 1442095200000, 1442041200000, -145, 1476, 3, 12, 0.7857142857142857, 12, 0.8 ] - - [ "SE", 1442041200000, 91, 253, 1442070000000, 1442019600000, -145, 1476, 3, 13, 0.8571428571428571, 13, 0.8666666666666667 ] - - [ "SE", 1442019600000, 109, 362, 1442080800000, 1442059200000, -145, 1476, 3, 14, 0.9285714285714286, 14, 0.9333333333333333 ] - - [ "SE", 1442059200000, 1476, 1838, 1442041200000, null, -145, 1476, 3, 15, 1.0, 15, 1.0 ] - - [ "SG", 1442066400000, 0, 0, null, 1442030400000, 0, 2758, 1, 1, 0.0, 1, 0.125 ] - - [ "SG", 1442030400000, 1, 1, null, 1442037600000, 0, 2758, 1, 2, 0.14285714285714285, 2, 0.25 ] - - [ "SG", 1442037600000, 3, 4, 1442066400000, 1442048400000, 0, 2758, 1, 3, 0.2857142857142857, 3, 0.375 ] - - [ "SG", 1442048400000, 52, 56, 1442030400000, 1442041200000, 0, 2758, 2, 4, 0.42857142857142855, 4, 0.5 ] - - [ "SG", 1442041200000, 59, 115, 1442037600000, 1442044800000, 0, 2758, 2, 5, 0.5714285714285714, 5, 0.625 ] - - [ "SG", 1442044800000, 77, 192, 1442048400000, 1442062800000, 0, 2758, 2, 6, 0.7142857142857143, 6, 0.75 ] - - [ "SG", 1442062800000, 388, 580, 1442041200000, 1442026800000, 0, 2758, 3, 7, 0.8571428571428571, 7, 0.875 ] - - [ "SG", 1442026800000, 2758, 3338, 1442044800000, null, 0, 2758, 3, 8, 1.0, 8, 1.0 ] - - [ "SI", 1442080800000, -45, -45, null, 1442091600000, -45, 9, 1, 1, 0.0, 1, 0.5 ] - - [ "SI", 1442091600000, 9, -36, null, null, -45, 9, 2, 2, 1.0, 2, 1.0 ] - - [ "SK", 1442084400000, -92, -92, null, 1442037600000, -92, 446, 1, 1, 0.0, 1, 0.16666666666666666 ] - - [ "SK", 1442037600000, -1, -93, null, 1442062800000, -92, 446, 1, 2, 0.2, 2, 0.3333333333333333 ] - - [ "SK", 1442062800000, 6, -87, 1442084400000, 1442098800000, -92, 446, 2, 3, 0.4, 3, 0.5 ] - - [ "SK", 1442098800000, 7, -80, 1442037600000, 1442052000000, -92, 446, 2, 4, 0.6, 4, 0.6666666666666666 ] - - [ "SK", 1442052000000, 13, -67, 1442062800000, 1442073600000, -92, 446, 3, 5, 0.8, 5, 0.8333333333333334 ] - - [ "SK", 1442073600000, 446, 379, 1442098800000, null, -92, 446, 3, 6, 1.0, 6, 1.0 ] - - [ "SV", 1442019600000, -1, -1, null, 1442088000000, -1, 106, 1, 1, 0.0, 1, 0.3333333333333333 ] - - [ "SV", 1442088000000, 9, 8, null, 1442084400000, -1, 106, 2, 2, 0.5, 2, 0.6666666666666666 ] - - [ "SV", 1442084400000, 106, 114, 1442019600000, null, -1, 106, 3, 3, 1.0, 3, 1.0 ] - - [ "TH", 1442062800000, -46, -46, null, 1442066400000, -46, 110, 1, 1, 0.0, 1, 0.1111111111111111 ] - - [ "TH", 1442066400000, -34, -80, null, 1442052000000, -46, 110, 1, 2, 0.125, 2, 0.2222222222222222 ] - - [ "TH", 1442052000000, -22, -102, 1442062800000, 1442034000000, -46, 110, 1, 3, 0.25, 3, 0.3333333333333333 ] - - [ "TH", 1442034000000, 0, -102, 1442066400000, 1442055600000, -46, 110, 2, 4, 0.375, 4, 0.6666666666666666 ] - - [ "TH", 1442055600000, 0, -102, 1442052000000, 1442070000000, -46, 110, 2, 4, 0.375, 4, 0.6666666666666666 ] - - [ "TH", 1442070000000, 0, -102, 1442034000000, 1442041200000, -46, 110, 2, 4, 0.375, 4, 0.6666666666666666 ] - - [ "TH", 1442041200000, 3, -99, 1442055600000, 1442084400000, -46, 110, 3, 7, 0.75, 5, 0.7777777777777778 ] - - [ "TH", 1442084400000, 13, -86, 1442070000000, 1442044800000, -46, 110, 3, 8, 0.875, 6, 0.8888888888888888 ] - - [ "TH", 1442044800000, 110, 24, 1442041200000, null, -46, 110, 3, 9, 1.0, 7, 1.0 ] - - [ "TJ", 1442048400000, 1471, 1471, null, null, 1471, 1471, 1, 1, 0.0, 1, 1.0 ] - - [ "TN", 1442098800000, -9, -9, null, null, -9, -9, 1, 1, 0.0, 1, 1.0 ] - - [ "TR", 1442095200000, -29, -29, null, 1442080800000, -29, 3048, 1, 1, 0.0, 1, 0.06666666666666667 ] - - [ "TR", 1442080800000, -1, -30, null, 1442041200000, -29, 3048, 1, 2, 0.07142857142857142, 2, 0.13333333333333333 ] - - [ "TR", 1442041200000, 1, -29, 1442095200000, 1442044800000, -29, 3048, 1, 3, 0.14285714285714285, 3, 0.2 ] - - [ "TR", 1442044800000, 41, 12, 1442080800000, 1442052000000, -29, 3048, 1, 4, 0.21428571428571427, 4, 0.3333333333333333 ] - - [ "TR", 1442052000000, 41, 53, 1442041200000, 1442066400000, -29, 3048, 1, 4, 0.21428571428571427, 4, 0.3333333333333333 ] - - [ "TR", 1442066400000, 85, 138, 1442044800000, 1442048400000, -29, 3048, 2, 6, 0.35714285714285715, 5, 0.4 ] - - [ "TR", 1442048400000, 88, 226, 1442052000000, 1442077200000, -29, 3048, 2, 7, 0.42857142857142855, 6, 0.4666666666666667 ] - - [ "TR", 1442077200000, 89, 315, 1442066400000, 1442084400000, -29, 3048, 2, 8, 0.5, 7, 0.5333333333333333 ] - - [ "TR", 1442084400000, 170, 485, 1442048400000, 1442070000000, -29, 3048, 2, 9, 0.5714285714285714, 8, 0.6 ] - - [ "TR", 1442070000000, 236, 721, 1442077200000, 1442055600000, -29, 3048, 2, 10, 0.6428571428571429, 9, 0.6666666666666666 ] - - [ "TR", 1442055600000, 299, 1020, 1442084400000, 1442023200000, -29, 3048, 3, 11, 0.7142857142857143, 10, 0.7333333333333333 ] - - [ "TR", 1442023200000, 306, 1326, 1442070000000, 1442062800000, -29, 3048, 3, 12, 0.7857142857142857, 11, 0.8 ] - - [ "TR", 1442062800000, 315, 1641, 1442055600000, 1442088000000, -29, 3048, 3, 13, 0.8571428571428571, 12, 0.8666666666666667 ] - - [ "TR", 1442088000000, 2389, 4030, 1442023200000, 1442091600000, -29, 3048, 3, 14, 0.9285714285714286, 13, 0.9333333333333333 ] - - [ "TR", 1442091600000, 3048, 7078, 1442062800000, null, -29, 3048, 3, 15, 1.0, 14, 1.0 ] - - [ "TT", 1442088000000, 9, 9, null, null, 9, 9, 1, 1, 0.0, 1, 1.0 ] - - [ "TW", 1442062800000, -272, -272, null, 1442059200000, -272, 772, 1, 1, 0.0, 1, 0.045454545454545456 ] - - [ "TW", 1442059200000, -157, -429, null, 1442095200000, -272, 772, 1, 2, 0.047619047619047616, 2, 0.09090909090909091 ] - - [ "TW", 1442095200000, -77, -506, 1442062800000, 1442098800000, -272, 772, 1, 3, 0.09523809523809523, 3, 0.13636363636363635 ] - - [ "TW", 1442098800000, -60, -566, 1442059200000, 1442019600000, -272, 772, 1, 4, 0.14285714285714285, 4, 0.18181818181818182 ] - - [ "TW", 1442019600000, 0, -566, 1442095200000, 1442030400000, -272, 772, 1, 5, 0.19047619047619047, 5, 0.3181818181818182 ] - - [ "TW", 1442030400000, 0, -566, 1442098800000, 1442084400000, -272, 772, 1, 5, 0.19047619047619047, 5, 0.3181818181818182 ] - - [ "TW", 1442084400000, 0, -566, 1442019600000, 1442044800000, -272, 772, 1, 5, 0.19047619047619047, 5, 0.3181818181818182 ] - - [ "TW", 1442044800000, 24, -542, 1442030400000, 1442052000000, -272, 772, 1, 8, 0.3333333333333333, 6, 0.45454545454545453 ] - - [ "TW", 1442052000000, 24, -518, 1442084400000, 1442080800000, -272, 772, 2, 8, 0.3333333333333333, 6, 0.45454545454545453 ] - - [ "TW", 1442080800000, 24, -494, 1442044800000, 1442055600000, -272, 772, 2, 8, 0.3333333333333333, 6, 0.45454545454545453 ] - - [ "TW", 1442055600000, 48, -446, 1442052000000, 1442048400000, -272, 772, 2, 11, 0.47619047619047616, 7, 0.5 ] - - [ "TW", 1442048400000, 75, -371, 1442080800000, 1442016000000, -272, 772, 2, 12, 0.5238095238095238, 8, 0.5454545454545454 ] - - [ "TW", 1442016000000, 92, -279, 1442055600000, 1442023200000, -272, 772, 2, 13, 0.5714285714285714, 9, 0.5909090909090909 ] - - [ "TW", 1442023200000, 97, -182, 1442048400000, 1442034000000, -272, 772, 2, 14, 0.6190476190476191, 10, 0.6363636363636364 ] - - [ "TW", 1442034000000, 143, -39, 1442016000000, 1442037600000, -272, 772, 2, 15, 0.6666666666666666, 11, 0.6818181818181818 ] - - [ "TW", 1442037600000, 266, 227, 1442023200000, 1442041200000, -272, 772, 3, 16, 0.7142857142857143, 12, 0.7272727272727273 ] - - [ "TW", 1442041200000, 366, 593, 1442034000000, 1442070000000, -272, 772, 3, 17, 0.7619047619047619, 13, 0.7727272727272727 ] - - [ "TW", 1442070000000, 485, 1078, 1442037600000, 1442077200000, -272, 772, 3, 18, 0.8095238095238095, 14, 0.8181818181818182 ] - - [ "TW", 1442077200000, 502, 1580, 1442041200000, 1442066400000, -272, 772, 3, 19, 0.8571428571428571, 15, 0.8636363636363636 ] - - [ "TW", 1442066400000, 624, 2204, 1442070000000, 1442026800000, -272, 772, 3, 20, 0.9047619047619048, 16, 0.9090909090909091 ] - - [ "TW", 1442026800000, 680, 2884, 1442077200000, 1442073600000, -272, 772, 3, 21, 0.9523809523809523, 17, 0.9545454545454546 ] - - [ "TW", 1442073600000, 772, 3656, 1442066400000, null, -272, 772, 3, 22, 1.0, 18, 1.0 ] - - [ "UA", 1442091600000, -388, -388, null, 1442077200000, -388, 14202, 1, 1, 0.0, 1, 0.05263157894736842 ] - - [ "UA", 1442077200000, -181, -569, null, 1442095200000, -388, 14202, 1, 2, 0.05555555555555555, 2, 0.10526315789473684 ] - - [ "UA", 1442095200000, -30, -599, 1442091600000, 1442088000000, -388, 14202, 1, 3, 0.1111111111111111, 3, 0.15789473684210525 ] - - [ "UA", 1442088000000, -21, -620, 1442077200000, 1442059200000, -388, 14202, 1, 4, 0.16666666666666666, 4, 0.21052631578947367 ] - - [ "UA", 1442059200000, -2, -622, 1442095200000, 1442037600000, -388, 14202, 1, 5, 0.2222222222222222, 5, 0.2631578947368421 ] - - [ "UA", 1442037600000, -1, -623, 1442088000000, 1442080800000, -388, 14202, 1, 6, 0.2777777777777778, 6, 0.3684210526315789 ] - - [ "UA", 1442080800000, -1, -624, 1442059200000, 1442048400000, -388, 14202, 1, 6, 0.2777777777777778, 6, 0.3684210526315789 ] - - [ "UA", 1442048400000, 2, -622, 1442037600000, 1442084400000, -388, 14202, 2, 8, 0.3888888888888889, 7, 0.42105263157894735 ] - - [ "UA", 1442084400000, 5, -617, 1442080800000, 1442098800000, -388, 14202, 2, 9, 0.4444444444444444, 8, 0.47368421052631576 ] - - [ "UA", 1442098800000, 38, -579, 1442048400000, 1442041200000, -388, 14202, 2, 10, 0.5, 9, 0.5263157894736842 ] - - [ "UA", 1442041200000, 74, -505, 1442084400000, 1442044800000, -388, 14202, 2, 11, 0.5555555555555556, 10, 0.5789473684210527 ] - - [ "UA", 1442044800000, 280, -225, 1442098800000, 1442066400000, -388, 14202, 2, 12, 0.6111111111111112, 11, 0.631578947368421 ] - - [ "UA", 1442066400000, 296, 71, 1442041200000, 1442052000000, -388, 14202, 2, 13, 0.6666666666666666, 12, 0.6842105263157895 ] - - [ "UA", 1442052000000, 410, 481, 1442044800000, 1442062800000, -388, 14202, 3, 14, 0.7222222222222222, 13, 0.7368421052631579 ] - - [ "UA", 1442062800000, 773, 1254, 1442066400000, 1442070000000, -388, 14202, 3, 15, 0.7777777777777778, 14, 0.7894736842105263 ] - - [ "UA", 1442070000000, 1733, 2987, 1442052000000, 1442034000000, -388, 14202, 3, 16, 0.8333333333333334, 15, 0.8421052631578947 ] - - [ "UA", 1442034000000, 3468, 6455, 1442062800000, 1442073600000, -388, 14202, 3, 17, 0.8888888888888888, 16, 0.8947368421052632 ] - - [ "UA", 1442073600000, 4241, 10696, 1442070000000, 1442055600000, -388, 14202, 3, 18, 0.9444444444444444, 17, 0.9473684210526315 ] - - [ "UA", 1442055600000, 14202, 24898, 1442034000000, null, -388, 14202, 3, 19, 1.0, 18, 1.0 ] - - [ "UG", 1442070000000, 1, 1, null, null, 1, 1, 1, 1, 0.0, 1, 1.0 ] - - [ "US", 1442048400000, -466, -466, null, 1442052000000, -466, 4001, 1, 1, 0.0, 1, 0.041666666666666664 ] - - [ "US", 1442052000000, -2, -468, null, 1442016000000, -466, 4001, 1, 2, 0.043478260869565216, 2, 0.08333333333333333 ] - - [ "US", 1442016000000, 0, -468, 1442048400000, 1442059200000, -466, 4001, 1, 3, 0.08695652173913043, 3, 0.125 ] - - [ "US", 1442059200000, 11, -457, 1442052000000, 1442062800000, -466, 4001, 1, 4, 0.13043478260869565, 4, 0.16666666666666666 ] - - [ "US", 1442062800000, 47, -410, 1442016000000, 1442044800000, -466, 4001, 1, 5, 0.17391304347826086, 5, 0.20833333333333334 ] - - [ "US", 1442044800000, 139, -271, 1442059200000, 1442055600000, -466, 4001, 1, 6, 0.21739130434782608, 6, 0.25 ] - - [ "US", 1442055600000, 156, -115, 1442062800000, 1442095200000, -466, 4001, 1, 7, 0.2608695652173913, 7, 0.2916666666666667 ] - - [ "US", 1442095200000, 416, 301, 1442044800000, 1442066400000, -466, 4001, 1, 8, 0.30434782608695654, 8, 0.3333333333333333 ] - - [ "US", 1442066400000, 772, 1073, 1442055600000, 1442019600000, -466, 4001, 2, 9, 0.34782608695652173, 9, 0.375 ] - - [ "US", 1442019600000, 1043, 2116, 1442095200000, 1442073600000, -466, 4001, 2, 10, 0.391304347826087, 10, 0.4166666666666667 ] - - [ "US", 1442073600000, 1100, 3216, 1442066400000, 1442026800000, -466, 4001, 2, 11, 0.43478260869565216, 11, 0.4583333333333333 ] - - [ "US", 1442026800000, 1512, 4728, 1442019600000, 1442088000000, -466, 4001, 2, 12, 0.4782608695652174, 12, 0.5 ] - - [ "US", 1442088000000, 1691, 6419, 1442073600000, 1442041200000, -466, 4001, 2, 13, 0.5217391304347826, 13, 0.5416666666666666 ] - - [ "US", 1442041200000, 1999, 8418, 1442026800000, 1442030400000, -466, 4001, 2, 14, 0.5652173913043478, 14, 0.5833333333333334 ] - - [ "US", 1442030400000, 2023, 10441, 1442088000000, 1442077200000, -466, 4001, 2, 15, 0.6086956521739131, 15, 0.625 ] - - [ "US", 1442077200000, 2168, 12609, 1442041200000, 1442091600000, -466, 4001, 2, 16, 0.6521739130434783, 16, 0.6666666666666666 ] - - [ "US", 1442091600000, 2502, 15111, 1442030400000, 1442084400000, -466, 4001, 3, 17, 0.6956521739130435, 17, 0.7083333333333334 ] - - [ "US", 1442084400000, 2523, 17634, 1442077200000, 1442023200000, -466, 4001, 3, 18, 0.7391304347826086, 18, 0.75 ] - - [ "US", 1442023200000, 2844, 20478, 1442091600000, 1442070000000, -466, 4001, 3, 19, 0.782608695652174, 19, 0.7916666666666666 ] - - [ "US", 1442070000000, 3505, 23983, 1442084400000, 1442098800000, -466, 4001, 3, 20, 0.8260869565217391, 20, 0.8333333333333334 ] - - [ "US", 1442098800000, 3575, 27558, 1442023200000, 1442034000000, -466, 4001, 3, 21, 0.8695652173913043, 21, 0.875 ] - - [ "US", 1442034000000, 3648, 31206, 1442070000000, 1442037600000, -466, 4001, 3, 22, 0.9130434782608695, 22, 0.9166666666666666 ] - - [ "US", 1442037600000, 3675, 34881, 1442098800000, 1442080800000, -466, 4001, 3, 23, 0.9565217391304348, 23, 0.9583333333333334 ] - - [ "US", 1442080800000, 4001, 38882, 1442034000000, null, -466, 4001, 3, 24, 1.0, 24, 1.0 ] - - [ "UY", 1442073600000, -42, -42, null, 1442037600000, -42, 517, 1, 1, 0.0, 1, 0.14285714285714285 ] - - [ "UY", 1442037600000, 1, -41, null, 1442077200000, -42, 517, 1, 2, 0.16666666666666666, 2, 0.2857142857142857 ] - - [ "UY", 1442077200000, 23, -18, 1442073600000, 1442026800000, -42, 517, 1, 3, 0.3333333333333333, 3, 0.42857142857142855 ] - - [ "UY", 1442026800000, 76, 58, 1442037600000, 1442019600000, -42, 517, 2, 4, 0.5, 4, 0.5714285714285714 ] - - [ "UY", 1442019600000, 77, 135, 1442077200000, 1442070000000, -42, 517, 2, 5, 0.6666666666666666, 5, 0.7142857142857143 ] - - [ "UY", 1442070000000, 284, 419, 1442026800000, 1442023200000, -42, 517, 3, 6, 0.8333333333333334, 6, 0.8571428571428571 ] - - [ "UY", 1442023200000, 517, 936, 1442019600000, null, -42, 517, 3, 7, 1.0, 7, 1.0 ] - - [ "UZ", 1442044800000, 1369, 1369, null, null, 1369, 1369, 1, 1, 0.0, 1, 1.0 ] - - [ "VE", 1442026800000, -17, -17, null, 1442034000000, -17, 420, 1, 1, 0.0, 1, 0.1 ] - - [ "VE", 1442034000000, -2, -19, null, 1442098800000, -17, 420, 1, 2, 0.1111111111111111, 2, 0.2 ] - - [ "VE", 1442098800000, 9, -10, 1442026800000, 1442066400000, -17, 420, 1, 3, 0.2222222222222222, 3, 0.3 ] - - [ "VE", 1442066400000, 18, 8, 1442034000000, 1442095200000, -17, 420, 1, 4, 0.3333333333333333, 4, 0.4 ] - - [ "VE", 1442095200000, 35, 43, 1442098800000, 1442030400000, -17, 420, 2, 5, 0.4444444444444444, 5, 0.5 ] - - [ "VE", 1442030400000, 51, 94, 1442066400000, 1442084400000, -17, 420, 2, 6, 0.5555555555555556, 6, 0.6 ] - - [ "VE", 1442084400000, 60, 154, 1442095200000, 1442023200000, -17, 420, 2, 7, 0.6666666666666666, 7, 0.7 ] - - [ "VE", 1442023200000, 115, 269, 1442030400000, 1442077200000, -17, 420, 3, 8, 0.7777777777777778, 8, 0.8 ] - - [ "VE", 1442077200000, 412, 681, 1442084400000, 1442070000000, -17, 420, 3, 9, 0.8888888888888888, 9, 0.9 ] - - [ "VE", 1442070000000, 420, 1101, 1442023200000, null, -17, 420, 3, 10, 1.0, 10, 1.0 ] - - [ "VG", 1442062800000, -238, -238, null, null, -238, -238, 1, 1, 0.0, 1, 1.0 ] - - [ "VN", 1442034000000, -29, -29, null, 1442048400000, -29, 811, 1, 1, 0.0, 1, 0.07692307692307693 ] - - [ "VN", 1442048400000, -15, -44, null, 1442037600000, -29, 811, 1, 2, 0.08333333333333333, 2, 0.15384615384615385 ] - - [ "VN", 1442037600000, -11, -55, 1442034000000, 1442084400000, -29, 811, 1, 3, 0.16666666666666666, 3, 0.23076923076923078 ] - - [ "VN", 1442084400000, -10, -65, 1442048400000, 1442023200000, -29, 811, 1, 4, 0.25, 4, 0.3076923076923077 ] - - [ "VN", 1442023200000, -9, -74, 1442037600000, 1442041200000, -29, 811, 1, 5, 0.3333333333333333, 5, 0.38461538461538464 ] - - [ "VN", 1442041200000, 0, -74, 1442084400000, 1442059200000, -29, 811, 2, 6, 0.4166666666666667, 6, 0.46153846153846156 ] - - [ "VN", 1442059200000, 8, -66, 1442023200000, 1442055600000, -29, 811, 2, 7, 0.5, 7, 0.5384615384615384 ] - - [ "VN", 1442055600000, 37, -29, 1442041200000, 1442026800000, -29, 811, 2, 8, 0.5833333333333334, 8, 0.6153846153846154 ] - - [ "VN", 1442026800000, 63, 34, 1442059200000, 1442052000000, -29, 811, 2, 9, 0.6666666666666666, 9, 0.6923076923076923 ] - - [ "VN", 1442052000000, 90, 124, 1442055600000, 1442062800000, -29, 811, 3, 10, 0.75, 10, 0.7692307692307693 ] - - [ "VN", 1442062800000, 146, 270, 1442026800000, 1442070000000, -29, 811, 3, 11, 0.8333333333333334, 11, 0.8461538461538461 ] - - [ "VN", 1442070000000, 479, 749, 1442052000000, 1442066400000, -29, 811, 3, 12, 0.9166666666666666, 12, 0.9230769230769231 ] - - [ "VN", 1442066400000, 811, 1560, 1442062800000, null, -29, 811, 3, 13, 1.0, 13, 1.0 ] - - [ "ZA", 1442034000000, -3, -3, null, 1442070000000, -3, 79, 1, 1, 0.0, 1, 0.2 ] - - [ "ZA", 1442070000000, 0, -3, null, 1442091600000, -3, 79, 1, 2, 0.25, 2, 0.4 ] - - [ "ZA", 1442091600000, 1, -2, 1442034000000, 1442059200000, -3, 79, 2, 3, 0.5, 3, 0.6 ] - - [ "ZA", 1442059200000, 50, 48, 1442070000000, 1442048400000, -3, 79, 2, 4, 0.75, 4, 0.8 ] - - [ "ZA", 1442048400000, 79, 127, 1442091600000, null, -3, 79, 3, 5, 1.0, 5, 1.0 ] - - [ "ZM", 1442041200000, 133, 133, null, null, 133, 133, 1, 1, 0.0, 1, 1.0 ] - - [ "ZW", 1442044800000, 0, 0, null, 1442048400000, 0, 254, 1, 1, 0.0, 1, 0.5 ] - - [ "ZW", 1442048400000, 254, 254, null, null, 0, 254, 2, 2, 1.0, 2, 1.0 ] \ No newline at end of file + - [null,1442016000000,29873,29873,null,1442030400000,29873,787370,1,1,0.0,1,0.041666666666666664] + - [null,1442030400000,166672,196545,null,1442019600000,29873,787370,1,2,0.043478260869565216,2,0.08333333333333333] + - [null,1442019600000,173892,370437,1442016000000,1442037600000,29873,787370,1,3,0.08695652173913043,3,0.125] + - [null,1442037600000,200605,571042,1442030400000,1442026800000,29873,787370,1,4,0.13043478260869565,4,0.16666666666666666] + - [null,1442026800000,252626,823668,1442019600000,1442098800000,29873,787370,1,5,0.17391304347826086,5,0.20833333333333334] + - [null,1442098800000,276159,1099827,1442037600000,1442055600000,29873,787370,1,6,0.21739130434782608,6,0.25] + - [null,1442055600000,283958,1383785,1442026800000,1442088000000,29873,787370,1,7,0.2608695652173913,7,0.2916666666666667] + - [null,1442088000000,303872,1687657,1442098800000,1442048400000,29873,787370,1,8,0.30434782608695654,8,0.3333333333333333] + - [null,1442048400000,308316,1995973,1442055600000,1442044800000,29873,787370,2,9,0.34782608695652173,9,0.375] + - [null,1442044800000,316002,2311975,1442088000000,1442034000000,29873,787370,2,10,0.391304347826087,10,0.4166666666666667] + - [null,1442034000000,330957,2642932,1442048400000,1442066400000,29873,787370,2,11,0.43478260869565216,11,0.4583333333333333] + - [null,1442066400000,351584,2994516,1442044800000,1442070000000,29873,787370,2,12,0.4782608695652174,12,0.5] + - [null,1442070000000,358515,3353031,1442034000000,1442084400000,29873,787370,2,13,0.5217391304347826,13,0.5416666666666666] + - [null,1442084400000,372569,3725600,1442066400000,1442095200000,29873,787370,2,14,0.5652173913043478,14,0.5833333333333334] + - [null,1442095200000,374501,4100101,1442070000000,1442073600000,29873,787370,2,15,0.6086956521739131,15,0.625] + - [null,1442073600000,375394,4475495,1442084400000,1442062800000,29873,787370,2,16,0.6521739130434783,16,0.6666666666666666] + - [null,1442062800000,389465,4864960,1442095200000,1442077200000,29873,787370,3,17,0.6956521739130435,17,0.7083333333333334] + - [null,1442077200000,392483,5257443,1442073600000,1442023200000,29873,787370,3,18,0.7391304347826086,18,0.75] + - [null,1442023200000,399636,5657079,1442062800000,1442080800000,29873,787370,3,19,0.782608695652174,19,0.7916666666666666] + - [null,1442080800000,453077,6110156,1442077200000,1442059200000,29873,787370,3,20,0.8260869565217391,20,0.8333333333333334] + - [null,1442059200000,459297,6569453,1442023200000,1442091600000,29873,787370,3,21,0.8695652173913043,21,0.875] + - [null,1442091600000,514427,7083880,1442080800000,1442041200000,29873,787370,3,22,0.9130434782608695,22,0.9166666666666666] + - [null,1442041200000,543450,7627330,1442059200000,1442052000000,29873,787370,3,23,0.9565217391304348,23,0.9583333333333334] + - [null,1442052000000,787370,8414700,1442091600000,null,29873,787370,3,24,1.0,24,1.0] + - ["AE",1442059200000,-11,-11,null,1442044800000,-11,6323,1,1,0.0,1,0.125] + - ["AE",1442044800000,-7,-18,null,1442052000000,-11,6323,1,2,0.14285714285714285,2,0.25] + - ["AE",1442052000000,-3,-21,1442059200000,1442048400000,-11,6323,1,3,0.2857142857142857,3,0.375] + - ["AE",1442048400000,39,18,1442044800000,1442080800000,-11,6323,2,4,0.42857142857142855,4,0.5] + - ["AE",1442080800000,42,60,1442052000000,1442070000000,-11,6323,2,5,0.5714285714285714,5,0.625] + - ["AE",1442070000000,46,106,1442048400000,1442030400000,-11,6323,2,6,0.7142857142857143,6,0.75] + - ["AE",1442030400000,118,224,1442080800000,1442077200000,-11,6323,3,7,0.8571428571428571,7,0.875] + - ["AE",1442077200000,6323,6547,1442070000000,null,-11,6323,3,8,1.0,8,1.0] + - ["AL",1442077200000,26,26,null,1442091600000,26,54,1,1,0.0,1,0.5] + - ["AL",1442091600000,54,80,null,null,26,54,2,2,1.0,2,1.0] + - ["AO",1442041200000,-26,-26,null,1442052000000,-26,722,1,1,0.0,1,0.25] + - ["AO",1442052000000,-18,-44,null,1442088000000,-26,722,1,2,0.3333333333333333,2,0.5] + - ["AO",1442088000000,62,18,1442041200000,1442098800000,-26,722,2,3,0.6666666666666666,3,0.75] + - ["AO",1442098800000,722,740,1442052000000,null,-26,722,3,4,1.0,4,1.0] + - ["AR",1442077200000,-591,-591,null,1442055600000,-591,2514,1,1,0.0,1,0.058823529411764705] + - ["AR",1442055600000,-54,-645,null,1442084400000,-591,2514,1,2,0.0625,2,0.11764705882352941] + - ["AR",1442084400000,-5,-650,1442077200000,1442030400000,-591,2514,1,3,0.125,3,0.17647058823529413] + - ["AR",1442030400000,-3,-653,1442055600000,1442066400000,-591,2514,1,4,0.1875,4,0.23529411764705882] + - ["AR",1442066400000,0,-653,1442084400000,1442019600000,-591,2514,1,5,0.25,5,0.29411764705882354] + - ["AR",1442019600000,1,-652,1442030400000,1442080800000,-591,2514,1,6,0.3125,6,0.4117647058823529] + - ["AR",1442080800000,1,-651,1442066400000,1442062800000,-591,2514,2,6,0.3125,6,0.4117647058823529] + - ["AR",1442062800000,29,-622,1442019600000,1442098800000,-591,2514,2,8,0.4375,7,0.47058823529411764] + - ["AR",1442098800000,64,-558,1442080800000,1442037600000,-591,2514,2,9,0.5,8,0.5294117647058824] + - ["AR",1442037600000,81,-477,1442062800000,1442059200000,-591,2514,2,10,0.5625,9,0.5882352941176471] + - ["AR",1442059200000,210,-267,1442098800000,1442034000000,-591,2514,2,11,0.625,10,0.6470588235294118] + - ["AR",1442034000000,212,-55,1442037600000,1442091600000,-591,2514,2,12,0.6875,11,0.7058823529411765] + - ["AR",1442091600000,340,285,1442059200000,1442070000000,-591,2514,3,13,0.75,12,0.7647058823529411] + - ["AR",1442070000000,377,662,1442034000000,1442095200000,-591,2514,3,14,0.8125,13,0.8235294117647058] + - ["AR",1442095200000,630,1292,1442091600000,1442026800000,-591,2514,3,15,0.875,14,0.8823529411764706] + - ["AR",1442026800000,644,1936,1442070000000,1442023200000,-591,2514,3,16,0.9375,15,0.9411764705882353] + - ["AR",1442023200000,2514,4450,1442095200000,null,-591,2514,3,17,1.0,16,1.0] + - ["AT",1442062800000,-155,-155,null,1442084400000,-155,7050,1,1,0.0,1,0.14285714285714285] + - ["AT",1442084400000,-2,-157,null,1442066400000,-155,7050,1,2,0.16666666666666666,2,0.2857142857142857] + - ["AT",1442066400000,0,-157,1442062800000,1442091600000,-155,7050,1,3,0.3333333333333333,3,0.42857142857142855] + - ["AT",1442091600000,89,-68,1442084400000,1442070000000,-155,7050,2,4,0.5,4,0.5714285714285714] + - ["AT",1442070000000,272,204,1442066400000,1442052000000,-155,7050,2,5,0.6666666666666666,5,0.7142857142857143] + - ["AT",1442052000000,4793,4997,1442091600000,1442088000000,-155,7050,3,6,0.8333333333333334,6,0.8571428571428571] + - ["AT",1442088000000,7050,12047,1442070000000,null,-155,7050,3,7,1.0,7,1.0] + - ["AU",1442052000000,-643,-643,null,1442030400000,-643,1138,1,1,0.0,1,0.05263157894736842] + - ["AU",1442030400000,-377,-1020,null,1442066400000,-643,1138,1,2,0.05555555555555555,2,0.10526315789473684] + - ["AU",1442066400000,-21,-1041,1442052000000,1442070000000,-643,1138,1,3,0.1111111111111111,3,0.15789473684210525] + - ["AU",1442070000000,-12,-1053,1442030400000,1442016000000,-643,1138,1,4,0.16666666666666666,4,0.21052631578947367] + - ["AU",1442016000000,0,-1053,1442066400000,1442077200000,-643,1138,1,5,0.2222222222222222,5,0.2631578947368421] + - ["AU",1442077200000,1,-1052,1442070000000,1442037600000,-643,1138,1,6,0.2777777777777778,6,0.3157894736842105] + - ["AU",1442037600000,3,-1049,1442016000000,1442059200000,-643,1138,1,7,0.3333333333333333,7,0.3684210526315789] + - ["AU",1442059200000,38,-1011,1442077200000,1442023200000,-643,1138,2,8,0.3888888888888889,8,0.42105263157894735] + - ["AU",1442023200000,52,-959,1442037600000,1442048400000,-643,1138,2,9,0.4444444444444444,9,0.47368421052631576] + - ["AU",1442048400000,135,-824,1442059200000,1442055600000,-643,1138,2,10,0.5,10,0.5263157894736842] + - ["AU",1442055600000,182,-642,1442023200000,1442026800000,-643,1138,2,11,0.5555555555555556,11,0.5789473684210527] + - ["AU",1442026800000,188,-454,1442048400000,1442041200000,-643,1138,2,12,0.6111111111111112,12,0.631578947368421] + - ["AU",1442041200000,194,-260,1442055600000,1442019600000,-643,1138,2,13,0.6666666666666666,13,0.6842105263157895] + - ["AU",1442019600000,253,-7,1442026800000,1442034000000,-643,1138,3,14,0.7222222222222222,14,0.7368421052631579] + - ["AU",1442034000000,283,276,1442041200000,1442044800000,-643,1138,3,15,0.7777777777777778,15,0.7894736842105263] + - ["AU",1442044800000,373,649,1442019600000,1442095200000,-643,1138,3,16,0.8333333333333334,16,0.8421052631578947] + - ["AU",1442095200000,395,1044,1442034000000,1442098800000,-643,1138,3,17,0.8888888888888888,17,0.8947368421052632] + - ["AU",1442098800000,518,1562,1442044800000,1442091600000,-643,1138,3,18,0.9444444444444444,18,0.9473684210526315] + - ["AU",1442091600000,1138,2700,1442095200000,null,-643,1138,3,19,1.0,19,1.0] + - ["BA",1442055600000,-202,-202,null,1442048400000,-202,38,1,1,0.0,1,0.25] + - ["BA",1442048400000,-13,-215,null,1442084400000,-202,38,1,2,0.3333333333333333,2,0.5] + - ["BA",1442084400000,-1,-216,1442055600000,1442052000000,-202,38,2,3,0.6666666666666666,3,0.75] + - ["BA",1442052000000,38,-178,1442048400000,null,-202,38,3,4,1.0,4,1.0] + - ["BD",1442091600000,-2,-2,null,1442019600000,-2,854,1,1,0.0,1,0.16666666666666666] + - ["BD",1442019600000,0,-2,null,1442077200000,-2,854,1,2,0.2,2,0.3333333333333333] + - ["BD",1442077200000,75,73,1442091600000,1442066400000,-2,854,2,3,0.4,3,0.5] + - ["BD",1442066400000,76,149,1442019600000,1442073600000,-2,854,2,4,0.6,4,0.6666666666666666] + - ["BD",1442073600000,103,252,1442077200000,1442041200000,-2,854,3,5,0.8,5,0.8333333333333334] + - ["BD",1442041200000,854,1106,1442066400000,null,-2,854,3,6,1.0,6,1.0] + - ["BE",1442030400000,-103,-103,null,1442052000000,-103,233,1,1,0.0,1,0.08333333333333333] + - ["BE",1442052000000,-1,-104,null,1442080800000,-103,233,1,2,0.09090909090909091,2,0.16666666666666666] + - ["BE",1442080800000,1,-103,1442030400000,1442098800000,-103,233,1,3,0.18181818181818182,3,0.25] + - ["BE",1442098800000,9,-94,1442052000000,1442073600000,-103,233,1,4,0.2727272727272727,4,0.3333333333333333] + - ["BE",1442073600000,19,-75,1442080800000,1442048400000,-103,233,2,5,0.36363636363636365,5,0.4166666666666667] + - ["BE",1442048400000,59,-16,1442098800000,1442088000000,-103,233,2,6,0.45454545454545453,6,0.5] + - ["BE",1442088000000,67,51,1442073600000,1442062800000,-103,233,2,7,0.5454545454545454,7,0.5833333333333334] + - ["BE",1442062800000,91,142,1442048400000,1442091600000,-103,233,2,8,0.6363636363636364,8,0.6666666666666666] + - ["BE",1442091600000,101,243,1442088000000,1442066400000,-103,233,3,9,0.7272727272727273,9,0.75] + - ["BE",1442066400000,136,379,1442062800000,1442084400000,-103,233,3,10,0.8181818181818182,10,0.8333333333333334] + - ["BE",1442084400000,183,562,1442091600000,1442055600000,-103,233,3,11,0.9090909090909091,11,0.9166666666666666] + - ["BE",1442055600000,233,795,1442066400000,null,-103,233,3,12,1.0,12,1.0] + - ["BG",1442041200000,9,9,null,1442070000000,9,18936,1,1,0.0,1,0.2] + - ["BG",1442070000000,55,64,null,1442059200000,9,18936,1,2,0.25,2,0.4] + - ["BG",1442059200000,191,255,1442041200000,1442084400000,9,18936,2,3,0.5,3,0.6] + - ["BG",1442084400000,401,656,1442070000000,1442052000000,9,18936,2,4,0.75,4,0.8] + - ["BG",1442052000000,18936,19592,1442059200000,null,9,18936,3,5,1.0,5,1.0] + - ["BH",1442052000000,44,44,null,null,44,44,1,1,0.0,1,1.0] + - ["BO",1442095200000,-4,-4,null,1442080800000,-4,4,1,1,0.0,1,0.3333333333333333] + - ["BO",1442080800000,4,0,null,1442088000000,-4,4,2,2,0.5,2,1.0] + - ["BO",1442088000000,4,4,1442095200000,null,-4,4,3,2,0.5,2,1.0] + - ["BR",1442098800000,-645,-645,null,1442080800000,-645,2253,1,1,0.0,1,0.043478260869565216] + - ["BR",1442080800000,-267,-912,null,1442016000000,-645,2253,1,2,0.045454545454545456,2,0.08695652173913043] + - ["BR",1442016000000,-248,-1160,1442098800000,1442041200000,-645,2253,1,3,0.09090909090909091,3,0.13043478260869565] + - ["BR",1442041200000,3,-1157,1442080800000,1442091600000,-645,2253,1,4,0.13636363636363635,4,0.17391304347826086] + - ["BR",1442091600000,11,-1146,1442016000000,1442034000000,-645,2253,1,5,0.18181818181818182,5,0.21739130434782608] + - ["BR",1442034000000,21,-1125,1442041200000,1442030400000,-645,2253,1,6,0.22727272727272727,6,0.2608695652173913] + - ["BR",1442030400000,30,-1095,1442091600000,1442026800000,-645,2253,1,7,0.2727272727272727,7,0.30434782608695654] + - ["BR",1442026800000,51,-1044,1442034000000,1442044800000,-645,2253,1,8,0.3181818181818182,8,0.34782608695652173] + - ["BR",1442044800000,71,-973,1442030400000,1442059200000,-645,2253,2,9,0.36363636363636365,9,0.391304347826087] + - ["BR",1442059200000,73,-900,1442026800000,1442062800000,-645,2253,2,10,0.4090909090909091,10,0.43478260869565216] + - ["BR",1442062800000,93,-807,1442044800000,1442088000000,-645,2253,2,11,0.45454545454545453,11,0.4782608695652174] + - ["BR",1442088000000,215,-592,1442059200000,1442052000000,-645,2253,2,12,0.5,12,0.5217391304347826] + - ["BR",1442052000000,232,-360,1442062800000,1442055600000,-645,2253,2,13,0.5454545454545454,13,0.5652173913043478] + - ["BR",1442055600000,242,-118,1442088000000,1442037600000,-645,2253,2,14,0.5909090909090909,14,0.6086956521739131] + - ["BR",1442037600000,267,149,1442052000000,1442019600000,-645,2253,2,15,0.6363636363636364,15,0.6521739130434783] + - ["BR",1442019600000,372,521,1442055600000,1442084400000,-645,2253,2,16,0.6818181818181818,16,0.6956521739130435] + - ["BR",1442084400000,492,1013,1442037600000,1442070000000,-645,2253,3,17,0.7272727272727273,17,0.7391304347826086] + - ["BR",1442070000000,536,1549,1442019600000,1442095200000,-645,2253,3,18,0.7727272727272727,18,0.782608695652174] + - ["BR",1442095200000,748,2297,1442084400000,1442023200000,-645,2253,3,19,0.8181818181818182,19,0.8260869565217391] + - ["BR",1442023200000,879,3176,1442070000000,1442066400000,-645,2253,3,20,0.8636363636363636,20,0.8695652173913043] + - ["BR",1442066400000,1034,4210,1442095200000,1442073600000,-645,2253,3,21,0.9090909090909091,21,0.9130434782608695] + - ["BR",1442073600000,2087,6297,1442023200000,1442077200000,-645,2253,3,22,0.9545454545454546,22,0.9565217391304348] + - ["BR",1442077200000,2253,8550,1442066400000,null,-645,2253,3,23,1.0,23,1.0] + - ["BY",1442055600000,1,1,null,1442084400000,1,1464,1,1,0.0,1,0.2857142857142857] + - ["BY",1442084400000,1,2,null,1442080800000,1,1464,1,1,0.0,1,0.2857142857142857] + - ["BY",1442080800000,28,30,1442055600000,1442077200000,1,1464,1,3,0.3333333333333333,2,0.42857142857142855] + - ["BY",1442077200000,30,60,1442084400000,1442088000000,1,1464,2,4,0.5,3,0.5714285714285714] + - ["BY",1442088000000,33,93,1442080800000,1442073600000,1,1464,2,5,0.6666666666666666,4,0.7142857142857143] + - ["BY",1442073600000,596,689,1442077200000,1442059200000,1,1464,3,6,0.8333333333333334,5,0.8571428571428571] + - ["BY",1442059200000,1464,2153,1442088000000,null,1,1464,3,7,1.0,6,1.0] + - ["CA",1442016000000,-371,-371,null,1442062800000,-371,2858,1,1,0.0,1,0.045454545454545456] + - ["CA",1442062800000,-367,-738,null,1442095200000,-371,2858,1,2,0.047619047619047616,2,0.09090909090909091] + - ["CA",1442095200000,-361,-1099,1442016000000,1442077200000,-371,2858,1,3,0.09523809523809523,3,0.13636363636363635] + - ["CA",1442077200000,-282,-1381,1442062800000,1442037600000,-371,2858,1,4,0.14285714285714285,4,0.18181818181818182] + - ["CA",1442037600000,-132,-1513,1442095200000,1442030400000,-371,2858,1,5,0.19047619047619047,5,0.22727272727272727] + - ["CA",1442030400000,-47,-1560,1442077200000,1442044800000,-371,2858,1,6,0.23809523809523808,6,0.2727272727272727] + - ["CA",1442044800000,1,-1559,1442037600000,1442041200000,-371,2858,1,7,0.2857142857142857,7,0.3181818181818182] + - ["CA",1442041200000,5,-1554,1442030400000,1442088000000,-371,2858,1,8,0.3333333333333333,8,0.36363636363636365] + - ["CA",1442088000000,35,-1519,1442044800000,1442052000000,-371,2858,2,9,0.38095238095238093,9,0.4090909090909091] + - ["CA",1442052000000,38,-1481,1442041200000,1442084400000,-371,2858,2,10,0.42857142857142855,10,0.45454545454545453] + - ["CA",1442084400000,44,-1437,1442088000000,1442073600000,-371,2858,2,11,0.47619047619047616,11,0.5] + - ["CA",1442073600000,86,-1351,1442052000000,1442098800000,-371,2858,2,12,0.5238095238095238,12,0.5454545454545454] + - ["CA",1442098800000,164,-1187,1442084400000,1442034000000,-371,2858,2,13,0.5714285714285714,13,0.5909090909090909] + - ["CA",1442034000000,178,-1009,1442073600000,1442070000000,-371,2858,2,14,0.6190476190476191,14,0.6363636363636364] + - ["CA",1442070000000,185,-824,1442098800000,1442023200000,-371,2858,2,15,0.6666666666666666,15,0.6818181818181818] + - ["CA",1442023200000,286,-538,1442034000000,1442066400000,-371,2858,3,16,0.7142857142857143,16,0.7272727272727273] + - ["CA",1442066400000,307,-231,1442070000000,1442080800000,-371,2858,3,17,0.7619047619047619,17,0.7727272727272727] + - ["CA",1442080800000,481,250,1442023200000,1442059200000,-371,2858,3,18,0.8095238095238095,18,0.8181818181818182] + - ["CA",1442059200000,1036,1286,1442066400000,1442019600000,-371,2858,3,19,0.8571428571428571,19,0.8636363636363636] + - ["CA",1442019600000,2184,3470,1442080800000,1442026800000,-371,2858,3,20,0.9047619047619048,20,0.9090909090909091] + - ["CA",1442026800000,2216,5686,1442059200000,1442091600000,-371,2858,3,21,0.9523809523809523,21,0.9545454545454546] + - ["CA",1442091600000,2858,8544,1442019600000,null,-371,2858,3,22,1.0,22,1.0] + - ["CH",1442044800000,-54,-54,null,1442055600000,-54,360,1,1,0.0,1,0.08333333333333333] + - ["CH",1442055600000,0,-54,null,1442077200000,-54,360,1,2,0.09090909090909091,2,0.16666666666666666] + - ["CH",1442077200000,6,-48,1442044800000,1442070000000,-54,360,1,3,0.18181818181818182,3,0.25] + - ["CH",1442070000000,11,-37,1442055600000,1442084400000,-54,360,1,4,0.2727272727272727,4,0.3333333333333333] + - ["CH",1442084400000,13,-24,1442077200000,1442062800000,-54,360,2,5,0.36363636363636365,5,0.4166666666666667] + - ["CH",1442062800000,22,-2,1442070000000,1442048400000,-54,360,2,6,0.45454545454545453,6,0.5] + - ["CH",1442048400000,24,22,1442084400000,1442052000000,-54,360,2,7,0.5454545454545454,7,0.5833333333333334] + - ["CH",1442052000000,47,69,1442062800000,1442037600000,-54,360,2,8,0.6363636363636364,8,0.6666666666666666] + - ["CH",1442037600000,59,128,1442048400000,1442091600000,-54,360,3,9,0.7272727272727273,9,0.75] + - ["CH",1442091600000,67,195,1442052000000,1442041200000,-54,360,3,10,0.8181818181818182,10,0.8333333333333334] + - ["CH",1442041200000,198,393,1442037600000,1442073600000,-54,360,3,11,0.9090909090909091,11,0.9166666666666666] + - ["CH",1442073600000,360,753,1442091600000,null,-54,360,3,12,1.0,12,1.0] + - ["CL",1442019600000,-370,-370,null,1442095200000,-370,390,1,1,0.0,1,0.05] + - ["CL",1442095200000,-276,-646,null,1442066400000,-370,390,1,2,0.05263157894736842,2,0.1] + - ["CL",1442066400000,-41,-687,1442019600000,1442077200000,-370,390,1,3,0.10526315789473684,3,0.15] + - ["CL",1442077200000,-15,-702,1442095200000,1442059200000,-370,390,1,4,0.15789473684210525,4,0.2] + - ["CL",1442059200000,-12,-714,1442066400000,1442034000000,-370,390,1,5,0.21052631578947367,5,0.25] + - ["CL",1442034000000,-1,-715,1442077200000,1442041200000,-370,390,1,6,0.2631578947368421,6,0.35] + - ["CL",1442041200000,-1,-716,1442059200000,1442037600000,-370,390,1,6,0.2631578947368421,6,0.35] + - ["CL",1442037600000,2,-714,1442034000000,1442098800000,-370,390,2,8,0.3684210526315789,7,0.4] + - ["CL",1442098800000,9,-705,1442041200000,1442070000000,-370,390,2,9,0.42105263157894735,8,0.45] + - ["CL",1442070000000,13,-692,1442037600000,1442023200000,-370,390,2,10,0.47368421052631576,9,0.5] + - ["CL",1442023200000,15,-677,1442098800000,1442062800000,-370,390,2,11,0.5263157894736842,10,0.55] + - ["CL",1442062800000,17,-660,1442070000000,1442080800000,-370,390,2,12,0.5789473684210527,11,0.65] + - ["CL",1442080800000,17,-643,1442023200000,1442091600000,-370,390,2,12,0.5789473684210527,11,0.65] + - ["CL",1442091600000,20,-623,1442062800000,1442030400000,-370,390,2,14,0.6842105263157895,12,0.7] + - ["CL",1442030400000,40,-583,1442080800000,1442084400000,-370,390,3,15,0.7368421052631579,13,0.75] + - ["CL",1442084400000,126,-457,1442091600000,1442073600000,-370,390,3,16,0.7894736842105263,14,0.8] + - ["CL",1442073600000,153,-304,1442030400000,1442016000000,-370,390,3,17,0.8421052631578947,15,0.85] + - ["CL",1442016000000,161,-143,1442084400000,1442088000000,-370,390,3,18,0.8947368421052632,16,0.9] + - ["CL",1442088000000,286,143,1442073600000,1442052000000,-370,390,3,19,0.9473684210526315,17,0.95] + - ["CL",1442052000000,390,533,1442016000000,null,-370,390,3,20,1.0,18,1.0] + - ["CN",1442066400000,-15,-15,null,1442023200000,-15,293,1,1,0.0,1,0.1] + - ["CN",1442023200000,-13,-28,null,1442080800000,-15,293,1,2,0.1111111111111111,2,0.2] + - ["CN",1442080800000,-10,-38,1442066400000,1442084400000,-15,293,1,3,0.2222222222222222,3,0.3] + - ["CN",1442084400000,-1,-39,1442023200000,1442052000000,-15,293,1,4,0.3333333333333333,4,0.4] + - ["CN",1442052000000,0,-39,1442080800000,1442059200000,-15,293,2,5,0.4444444444444444,5,0.5] + - ["CN",1442059200000,8,-31,1442084400000,1442055600000,-15,293,2,6,0.5555555555555556,6,0.6] + - ["CN",1442055600000,69,38,1442052000000,1442037600000,-15,293,2,7,0.6666666666666666,7,0.7] + - ["CN",1442037600000,98,136,1442059200000,1442026800000,-15,293,3,8,0.7777777777777778,8,0.8] + - ["CN",1442026800000,154,290,1442055600000,1442048400000,-15,293,3,9,0.8888888888888888,9,0.9] + - ["CN",1442048400000,293,583,1442037600000,null,-15,293,3,10,1.0,10,1.0] + - ["CO",1442070000000,-45,-45,null,1442023200000,-45,39860,1,1,0.0,1,0.06666666666666667] + - ["CO",1442023200000,9,-36,null,1442019600000,-45,39860,1,2,0.07142857142857142,2,0.13333333333333333] + - ["CO",1442019600000,12,-24,1442070000000,1442016000000,-45,39860,1,3,0.14285714285714285,3,0.2] + - ["CO",1442016000000,16,-8,1442023200000,1442080800000,-45,39860,1,4,0.21428571428571427,4,0.26666666666666666] + - ["CO",1442080800000,25,17,1442019600000,1442084400000,-45,39860,1,5,0.2857142857142857,5,0.3333333333333333] + - ["CO",1442084400000,51,68,1442016000000,1442098800000,-45,39860,2,6,0.35714285714285715,6,0.4] + - ["CO",1442098800000,83,151,1442080800000,1442066400000,-45,39860,2,7,0.42857142857142855,7,0.4666666666666667] + - ["CO",1442066400000,288,439,1442084400000,1442095200000,-45,39860,2,8,0.5,8,0.5333333333333333] + - ["CO",1442095200000,290,729,1442098800000,1442091600000,-45,39860,2,9,0.5714285714285714,9,0.6] + - ["CO",1442091600000,377,1106,1442066400000,1442030400000,-45,39860,2,10,0.6428571428571429,10,0.6666666666666666] + - ["CO",1442030400000,441,1547,1442095200000,1442059200000,-45,39860,3,11,0.7142857142857143,11,0.7333333333333333] + - ["CO",1442059200000,473,2020,1442091600000,1442077200000,-45,39860,3,12,0.7857142857142857,12,0.8] + - ["CO",1442077200000,581,2601,1442030400000,1442088000000,-45,39860,3,13,0.8571428571428571,13,0.8666666666666667] + - ["CO",1442088000000,17150,19751,1442059200000,1442073600000,-45,39860,3,14,0.9285714285714286,14,0.9333333333333333] + - ["CO",1442073600000,39860,59611,1442077200000,null,-45,39860,3,15,1.0,15,1.0] + - ["CR",1442041200000,51,51,null,1442019600000,51,2497,1,1,0.0,1,0.125] + - ["CR",1442019600000,62,113,null,1442023200000,51,2497,1,2,0.14285714285714285,2,0.375] + - ["CR",1442023200000,62,175,1442041200000,1442088000000,51,2497,1,2,0.14285714285714285,2,0.375] + - ["CR",1442088000000,72,247,1442019600000,1442026800000,51,2497,2,4,0.42857142857142855,3,0.5] + - ["CR",1442026800000,140,387,1442023200000,1442048400000,51,2497,2,5,0.5714285714285714,4,0.625] + - ["CR",1442048400000,163,550,1442088000000,1442044800000,51,2497,2,6,0.7142857142857143,5,0.75] + - ["CR",1442044800000,194,744,1442026800000,1442030400000,51,2497,3,7,0.8571428571428571,6,0.875] + - ["CR",1442030400000,2497,3241,1442048400000,null,51,2497,3,8,1.0,7,1.0] + - ["CZ",1442080800000,-28,-28,null,1442026800000,-28,2051,1,1,0.0,1,0.09090909090909091] + - ["CZ",1442026800000,-19,-47,null,1442062800000,-28,2051,1,2,0.1,2,0.18181818181818182] + - ["CZ",1442062800000,0,-47,1442080800000,1442098800000,-28,2051,1,3,0.2,3,0.2727272727272727] + - ["CZ",1442098800000,2,-45,1442026800000,1442037600000,-28,2051,1,4,0.3,4,0.36363636363636365] + - ["CZ",1442037600000,18,-27,1442062800000,1442059200000,-28,2051,2,5,0.4,5,0.45454545454545453] + - ["CZ",1442059200000,21,-6,1442098800000,1442034000000,-28,2051,2,6,0.5,6,0.5454545454545454] + - ["CZ",1442034000000,78,72,1442037600000,1442077200000,-28,2051,2,7,0.6,7,0.6363636363636364] + - ["CZ",1442077200000,115,187,1442059200000,1442070000000,-28,2051,2,8,0.7,8,0.7272727272727273] + - ["CZ",1442070000000,168,355,1442034000000,1442055600000,-28,2051,3,9,0.8,9,0.8181818181818182] + - ["CZ",1442055600000,1073,1428,1442077200000,1442073600000,-28,2051,3,10,0.9,10,0.9090909090909091] + - ["CZ",1442073600000,2051,3479,1442070000000,null,-28,2051,3,11,1.0,11,1.0] + - ["DE",1442084400000,-125,-125,null,1442019600000,-125,6075,1,1,0.0,1,0.043478260869565216] + - ["DE",1442019600000,0,-125,null,1442023200000,-125,6075,1,2,0.045454545454545456,2,0.08695652173913043] + - ["DE",1442023200000,64,-61,1442084400000,1442016000000,-125,6075,1,3,0.09090909090909091,3,0.13043478260869565] + - ["DE",1442016000000,167,106,1442019600000,1442088000000,-125,6075,1,4,0.13636363636363635,4,0.17391304347826086] + - ["DE",1442088000000,190,296,1442023200000,1442041200000,-125,6075,1,5,0.18181818181818182,5,0.21739130434782608] + - ["DE",1442041200000,197,493,1442016000000,1442062800000,-125,6075,1,6,0.22727272727272727,6,0.2608695652173913] + - ["DE",1442062800000,283,776,1442088000000,1442059200000,-125,6075,1,7,0.2727272727272727,7,0.30434782608695654] + - ["DE",1442059200000,289,1065,1442041200000,1442098800000,-125,6075,1,8,0.3181818181818182,8,0.34782608695652173] + - ["DE",1442098800000,329,1394,1442062800000,1442034000000,-125,6075,2,9,0.36363636363636365,9,0.391304347826087] + - ["DE",1442034000000,358,1752,1442059200000,1442030400000,-125,6075,2,10,0.4090909090909091,10,0.43478260869565216] + - ["DE",1442030400000,373,2125,1442098800000,1442037600000,-125,6075,2,11,0.45454545454545453,11,0.4782608695652174] + - ["DE",1442037600000,544,2669,1442034000000,1442048400000,-125,6075,2,12,0.5,12,0.5217391304347826] + - ["DE",1442048400000,811,3480,1442030400000,1442044800000,-125,6075,2,13,0.5454545454545454,13,0.5652173913043478] + - ["DE",1442044800000,979,4459,1442037600000,1442095200000,-125,6075,2,14,0.5909090909090909,14,0.6086956521739131] + - ["DE",1442095200000,1007,5466,1442048400000,1442080800000,-125,6075,2,15,0.6363636363636364,15,0.6521739130434783] + - ["DE",1442080800000,1133,6599,1442044800000,1442055600000,-125,6075,2,16,0.6818181818181818,16,0.6956521739130435] + - ["DE",1442055600000,1523,8122,1442095200000,1442066400000,-125,6075,3,17,0.7272727272727273,17,0.7391304347826086] + - ["DE",1442066400000,1577,9699,1442080800000,1442052000000,-125,6075,3,18,0.7727272727272727,18,0.782608695652174] + - ["DE",1442052000000,1600,11299,1442055600000,1442070000000,-125,6075,3,19,0.8181818181818182,19,0.8260869565217391] + - ["DE",1442070000000,1666,12965,1442066400000,1442077200000,-125,6075,3,20,0.8636363636363636,20,0.8695652173913043] + - ["DE",1442077200000,2188,15153,1442052000000,1442091600000,-125,6075,3,21,0.9090909090909091,21,0.9130434782608695] + - ["DE",1442091600000,4355,19508,1442070000000,1442073600000,-125,6075,3,22,0.9545454545454546,22,0.9565217391304348] + - ["DE",1442073600000,6075,25583,1442077200000,null,-125,6075,3,23,1.0,23,1.0] + - ["DK",1442084400000,-97,-97,null,1442077200000,-97,416,1,1,0.0,1,0.08333333333333333] + - ["DK",1442077200000,-9,-106,null,1442048400000,-97,416,1,2,0.09090909090909091,2,0.16666666666666666] + - ["DK",1442048400000,-5,-111,1442084400000,1442059200000,-97,416,1,3,0.18181818181818182,3,0.25] + - ["DK",1442059200000,0,-111,1442077200000,1442095200000,-97,416,1,4,0.2727272727272727,4,0.4166666666666667] + - ["DK",1442095200000,0,-111,1442048400000,1442062800000,-97,416,2,4,0.2727272727272727,4,0.4166666666666667] + - ["DK",1442062800000,1,-110,1442059200000,1442037600000,-97,416,2,6,0.45454545454545453,5,0.5] + - ["DK",1442037600000,10,-100,1442095200000,1442044800000,-97,416,2,7,0.5454545454545454,6,0.5833333333333334] + - ["DK",1442044800000,36,-64,1442062800000,1442055600000,-97,416,2,8,0.6363636363636364,7,0.6666666666666666] + - ["DK",1442055600000,42,-22,1442037600000,1442080800000,-97,416,3,9,0.7272727272727273,8,0.75] + - ["DK",1442080800000,61,39,1442044800000,1442091600000,-97,416,3,10,0.8181818181818182,9,0.8333333333333334] + - ["DK",1442091600000,139,178,1442055600000,1442066400000,-97,416,3,11,0.9090909090909091,10,0.9166666666666666] + - ["DK",1442066400000,416,594,1442080800000,null,-97,416,3,12,1.0,11,1.0] + - ["DO",1442023200000,8,8,null,1442084400000,8,200,1,1,0.0,1,0.4] + - ["DO",1442084400000,8,16,null,1442095200000,8,200,1,1,0.0,1,0.4] + - ["DO",1442095200000,13,29,1442023200000,1442066400000,8,200,2,3,0.5,2,0.6] + - ["DO",1442066400000,35,64,1442084400000,1442073600000,8,200,2,4,0.75,3,0.8] + - ["DO",1442073600000,200,264,1442095200000,null,8,200,3,5,1.0,4,1.0] + - ["DZ",1442077200000,-1,-1,null,null,-1,-1,1,1,0.0,1,1.0] + - ["EC",1442077200000,-366,-366,null,1442023200000,-366,568,1,1,0.0,1,0.16666666666666666] + - ["EC",1442023200000,-9,-375,null,1442030400000,-366,568,1,2,0.2,2,0.3333333333333333] + - ["EC",1442030400000,0,-375,1442077200000,1442095200000,-366,568,2,3,0.4,3,0.5] + - ["EC",1442095200000,10,-365,1442023200000,1442019600000,-366,568,2,4,0.6,4,0.6666666666666666] + - ["EC",1442019600000,29,-336,1442030400000,1442084400000,-366,568,3,5,0.8,5,0.8333333333333334] + - ["EC",1442084400000,568,232,1442095200000,null,-366,568,3,6,1.0,6,1.0] + - ["EE",1442044800000,-19,-19,null,1442041200000,-19,37,1,1,0.0,1,0.5] + - ["EE",1442041200000,37,18,null,null,-19,37,2,2,1.0,2,1.0] + - ["EG",1442073600000,1,1,null,1442055600000,1,112,1,1,0.0,1,0.2] + - ["EG",1442055600000,14,15,null,1442026800000,1,112,1,2,0.25,2,0.4] + - ["EG",1442026800000,16,31,1442073600000,1442091600000,1,112,2,3,0.5,3,0.6] + - ["EG",1442091600000,27,58,1442055600000,1442062800000,1,112,2,4,0.75,4,0.8] + - ["EG",1442062800000,112,170,1442026800000,null,1,112,3,5,1.0,5,1.0] + - ["ES",1442044800000,-169,-169,null,1442088000000,-169,2506,1,1,0.0,1,0.05] + - ["ES",1442088000000,-130,-299,null,1442062800000,-169,2506,1,2,0.05263157894736842,2,0.1] + - ["ES",1442062800000,-71,-370,1442044800000,1442034000000,-169,2506,1,3,0.10526315789473684,3,0.15] + - ["ES",1442034000000,-52,-422,1442088000000,1442023200000,-169,2506,1,4,0.15789473684210525,4,0.2] + - ["ES",1442023200000,-5,-427,1442062800000,1442052000000,-169,2506,1,5,0.21052631578947367,5,0.25] + - ["ES",1442052000000,-4,-431,1442034000000,1442037600000,-169,2506,1,6,0.2631578947368421,6,0.3] + - ["ES",1442037600000,3,-428,1442023200000,1442070000000,-169,2506,1,7,0.3157894736842105,7,0.35] + - ["ES",1442070000000,61,-367,1442052000000,1442019600000,-169,2506,2,8,0.3684210526315789,8,0.4] + - ["ES",1442019600000,103,-264,1442037600000,1442041200000,-169,2506,2,9,0.42105263157894735,9,0.45] + - ["ES",1442041200000,118,-146,1442070000000,1442073600000,-169,2506,2,10,0.47368421052631576,10,0.5] + - ["ES",1442073600000,154,8,1442019600000,1442048400000,-169,2506,2,11,0.5263157894736842,11,0.55] + - ["ES",1442048400000,158,166,1442041200000,1442084400000,-169,2506,2,12,0.5789473684210527,12,0.6] + - ["ES",1442084400000,337,503,1442073600000,1442098800000,-169,2506,2,13,0.631578947368421,13,0.65] + - ["ES",1442098800000,458,961,1442048400000,1442066400000,-169,2506,2,14,0.6842105263157895,14,0.7] + - ["ES",1442066400000,461,1422,1442084400000,1442055600000,-169,2506,3,15,0.7368421052631579,15,0.75] + - ["ES",1442055600000,495,1917,1442098800000,1442091600000,-169,2506,3,16,0.7894736842105263,16,0.8] + - ["ES",1442091600000,700,2617,1442066400000,1442059200000,-169,2506,3,17,0.8421052631578947,17,0.85] + - ["ES",1442059200000,1086,3703,1442055600000,1442077200000,-169,2506,3,18,0.8947368421052632,18,0.9] + - ["ES",1442077200000,1240,4943,1442091600000,1442095200000,-169,2506,3,19,0.9473684210526315,19,0.95] + - ["ES",1442095200000,2506,7449,1442059200000,null,-169,2506,3,20,1.0,20,1.0] + - ["FI",1442073600000,-1,-1,null,1442048400000,-1,1491,1,1,0.0,1,0.08333333333333333] + - ["FI",1442048400000,12,11,null,1442037600000,-1,1491,1,2,0.09090909090909091,2,0.16666666666666666] + - ["FI",1442037600000,14,25,1442073600000,1442062800000,-1,1491,1,3,0.18181818181818182,3,0.25] + - ["FI",1442062800000,19,44,1442048400000,1442095200000,-1,1491,1,4,0.2727272727272727,4,0.3333333333333333] + - ["FI",1442095200000,69,113,1442037600000,1442080800000,-1,1491,2,5,0.36363636363636365,5,0.4166666666666667] + - ["FI",1442080800000,104,217,1442062800000,1442066400000,-1,1491,2,6,0.45454545454545453,6,0.5] + - ["FI",1442066400000,183,400,1442095200000,1442052000000,-1,1491,2,7,0.5454545454545454,7,0.5833333333333334] + - ["FI",1442052000000,186,586,1442080800000,1442077200000,-1,1491,2,8,0.6363636363636364,8,0.6666666666666666] + - ["FI",1442077200000,200,786,1442066400000,1442059200000,-1,1491,3,9,0.7272727272727273,9,0.75] + - ["FI",1442059200000,407,1193,1442052000000,1442084400000,-1,1491,3,10,0.8181818181818182,10,0.8333333333333334] + - ["FI",1442084400000,895,2088,1442077200000,1442030400000,-1,1491,3,11,0.9090909090909091,11,0.9166666666666666] + - ["FI",1442030400000,1491,3579,1442059200000,null,-1,1491,3,12,1.0,12,1.0] + - ["FR",1442077200000,-444,-444,null,1442016000000,-444,6643,1,1,0.0,1,0.043478260869565216] + - ["FR",1442016000000,-1,-445,null,1442026800000,-444,6643,1,2,0.045454545454545456,2,0.08695652173913043] + - ["FR",1442026800000,86,-359,1442077200000,1442095200000,-444,6643,1,3,0.09090909090909091,3,0.13043478260869565] + - ["FR",1442095200000,87,-272,1442016000000,1442098800000,-444,6643,1,4,0.13636363636363635,4,0.17391304347826086] + - ["FR",1442098800000,136,-136,1442026800000,1442044800000,-444,6643,1,5,0.18181818181818182,5,0.21739130434782608] + - ["FR",1442044800000,172,36,1442095200000,1442055600000,-444,6643,1,6,0.22727272727272727,6,0.2608695652173913] + - ["FR",1442055600000,463,499,1442098800000,1442070000000,-444,6643,1,7,0.2727272727272727,7,0.30434782608695654] + - ["FR",1442070000000,474,973,1442044800000,1442034000000,-444,6643,1,8,0.3181818181818182,8,0.34782608695652173] + - ["FR",1442034000000,476,1449,1442055600000,1442080800000,-444,6643,2,9,0.36363636363636365,9,0.391304347826087] + - ["FR",1442080800000,557,2006,1442070000000,1442019600000,-444,6643,2,10,0.4090909090909091,10,0.43478260869565216] + - ["FR",1442019600000,585,2591,1442034000000,1442041200000,-444,6643,2,11,0.45454545454545453,11,0.4782608695652174] + - ["FR",1442041200000,604,3195,1442080800000,1442023200000,-444,6643,2,12,0.5,12,0.5217391304347826] + - ["FR",1442023200000,628,3823,1442019600000,1442052000000,-444,6643,2,13,0.5454545454545454,13,0.5652173913043478] + - ["FR",1442052000000,637,4460,1442041200000,1442091600000,-444,6643,2,14,0.5909090909090909,14,0.6086956521739131] + - ["FR",1442091600000,741,5201,1442023200000,1442088000000,-444,6643,2,15,0.6363636363636364,15,0.6521739130434783] + - ["FR",1442088000000,1872,7073,1442052000000,1442066400000,-444,6643,2,16,0.6818181818181818,16,0.6956521739130435] + - ["FR",1442066400000,2516,9589,1442091600000,1442048400000,-444,6643,3,17,0.7272727272727273,17,0.7391304347826086] + - ["FR",1442048400000,3027,12616,1442088000000,1442073600000,-444,6643,3,18,0.7727272727272727,18,0.782608695652174] + - ["FR",1442073600000,3522,16138,1442066400000,1442037600000,-444,6643,3,19,0.8181818181818182,19,0.8260869565217391] + - ["FR",1442037600000,4174,20312,1442048400000,1442059200000,-444,6643,3,20,0.8636363636363636,20,0.8695652173913043] + - ["FR",1442059200000,4650,24962,1442073600000,1442062800000,-444,6643,3,21,0.9090909090909091,21,0.9130434782608695] + - ["FR",1442062800000,5676,30638,1442037600000,1442084400000,-444,6643,3,22,0.9545454545454546,22,0.9565217391304348] + - ["FR",1442084400000,6643,37281,1442059200000,null,-444,6643,3,23,1.0,23,1.0] + - ["GB",1442016000000,-44,-44,null,1442034000000,-44,16111,1,1,0.0,1,0.041666666666666664] + - ["GB",1442034000000,-12,-56,null,1442044800000,-44,16111,1,2,0.043478260869565216,2,0.08333333333333333] + - ["GB",1442044800000,32,-24,1442016000000,1442041200000,-44,16111,1,3,0.08695652173913043,3,0.125] + - ["GB",1442041200000,42,18,1442034000000,1442098800000,-44,16111,1,4,0.13043478260869565,4,0.16666666666666666] + - ["GB",1442098800000,49,67,1442044800000,1442019600000,-44,16111,1,5,0.17391304347826086,5,0.20833333333333334] + - ["GB",1442019600000,54,121,1442041200000,1442052000000,-44,16111,1,6,0.21739130434782608,6,0.25] + - ["GB",1442052000000,168,289,1442098800000,1442095200000,-44,16111,1,7,0.2608695652173913,7,0.2916666666666667] + - ["GB",1442095200000,238,527,1442019600000,1442026800000,-44,16111,1,8,0.30434782608695654,8,0.3333333333333333] + - ["GB",1442026800000,339,866,1442052000000,1442070000000,-44,16111,2,9,0.34782608695652173,9,0.375] + - ["GB",1442070000000,374,1240,1442095200000,1442084400000,-44,16111,2,10,0.391304347826087,10,0.4166666666666667] + - ["GB",1442084400000,384,1624,1442026800000,1442055600000,-44,16111,2,11,0.43478260869565216,11,0.4583333333333333] + - ["GB",1442055600000,453,2077,1442070000000,1442037600000,-44,16111,2,12,0.4782608695652174,12,0.5] + - ["GB",1442037600000,544,2621,1442084400000,1442073600000,-44,16111,2,13,0.5217391304347826,13,0.5416666666666666] + - ["GB",1442073600000,648,3269,1442055600000,1442066400000,-44,16111,2,14,0.5652173913043478,14,0.5833333333333334] + - ["GB",1442066400000,671,3940,1442037600000,1442048400000,-44,16111,2,15,0.6086956521739131,15,0.625] + - ["GB",1442048400000,740,4680,1442073600000,1442091600000,-44,16111,2,16,0.6521739130434783,16,0.6666666666666666] + - ["GB",1442091600000,811,5491,1442066400000,1442077200000,-44,16111,3,17,0.6956521739130435,17,0.7083333333333334] + - ["GB",1442077200000,1135,6626,1442048400000,1442080800000,-44,16111,3,18,0.7391304347826086,18,0.75] + - ["GB",1442080800000,1444,8070,1442091600000,1442088000000,-44,16111,3,19,0.782608695652174,19,0.7916666666666666] + - ["GB",1442088000000,1593,9663,1442077200000,1442023200000,-44,16111,3,20,0.8260869565217391,20,0.8333333333333334] + - ["GB",1442023200000,1816,11479,1442080800000,1442030400000,-44,16111,3,21,0.8695652173913043,21,0.875] + - ["GB",1442030400000,2524,14003,1442088000000,1442062800000,-44,16111,3,22,0.9130434782608695,22,0.9166666666666666] + - ["GB",1442062800000,5743,19746,1442023200000,1442059200000,-44,16111,3,23,0.9565217391304348,23,0.9583333333333334] + - ["GB",1442059200000,16111,35857,1442030400000,null,-44,16111,3,24,1.0,24,1.0] + - ["GE",1442052000000,-108,-108,null,1442080800000,-108,16,1,1,0.0,1,0.25] + - ["GE",1442080800000,-27,-135,null,1442044800000,-108,16,1,2,0.3333333333333333,2,0.5] + - ["GE",1442044800000,-21,-156,1442052000000,1442062800000,-108,16,2,3,0.6666666666666666,3,0.75] + - ["GE",1442062800000,16,-140,1442080800000,null,-108,16,3,4,1.0,4,1.0] + - ["GH",1442088000000,0,0,null,null,0,0,1,1,0.0,1,1.0] + - ["GR",1442073600000,-314,-314,null,1442048400000,-314,179,1,1,0.0,1,0.1] + - ["GR",1442048400000,-26,-340,null,1442034000000,-314,179,1,2,0.1111111111111111,2,0.2] + - ["GR",1442034000000,0,-340,1442073600000,1442070000000,-314,179,1,3,0.2222222222222222,3,0.3] + - ["GR",1442070000000,2,-338,1442048400000,1442041200000,-314,179,1,4,0.3333333333333333,4,0.4] + - ["GR",1442041200000,7,-331,1442034000000,1442062800000,-314,179,2,5,0.4444444444444444,5,0.5] + - ["GR",1442062800000,8,-323,1442070000000,1442019600000,-314,179,2,6,0.5555555555555556,6,0.6] + - ["GR",1442019600000,82,-241,1442041200000,1442080800000,-314,179,2,7,0.6666666666666666,7,0.7] + - ["GR",1442080800000,88,-153,1442062800000,1442091600000,-314,179,3,8,0.7777777777777778,8,0.8] + - ["GR",1442091600000,123,-30,1442019600000,1442084400000,-314,179,3,9,0.8888888888888888,9,0.9] + - ["GR",1442084400000,179,149,1442080800000,null,-314,179,3,10,1.0,10,1.0] + - ["GT",1442023200000,-167,-167,null,1442098800000,-167,173,1,1,0.0,1,0.3333333333333333] + - ["GT",1442098800000,1,-166,null,1442026800000,-167,173,2,2,0.5,2,0.6666666666666666] + - ["GT",1442026800000,173,7,1442023200000,null,-167,173,3,3,1.0,3,1.0] + - ["HK",1442026800000,-211,-211,null,1442019600000,-211,5545,1,1,0.0,1,0.05263157894736842] + - ["HK",1442019600000,-113,-324,null,1442041200000,-211,5545,1,2,0.05555555555555555,2,0.10526315789473684] + - ["HK",1442041200000,-15,-339,1442026800000,1442091600000,-211,5545,1,3,0.1111111111111111,3,0.15789473684210525] + - ["HK",1442091600000,-3,-342,1442019600000,1442095200000,-211,5545,1,4,0.16666666666666666,4,0.21052631578947367] + - ["HK",1442095200000,-1,-343,1442041200000,1442080800000,-211,5545,1,5,0.2222222222222222,5,0.2631578947368421] + - ["HK",1442080800000,0,-343,1442091600000,1442048400000,-211,5545,1,6,0.2777777777777778,6,0.3157894736842105] + - ["HK",1442048400000,1,-342,1442095200000,1442062800000,-211,5545,1,7,0.3333333333333333,7,0.42105263157894735] + - ["HK",1442062800000,1,-341,1442080800000,1442059200000,-211,5545,2,7,0.3333333333333333,7,0.42105263157894735] + - ["HK",1442059200000,2,-339,1442048400000,1442052000000,-211,5545,2,9,0.4444444444444444,8,0.47368421052631576] + - ["HK",1442052000000,15,-324,1442062800000,1442044800000,-211,5545,2,10,0.5,9,0.5263157894736842] + - ["HK",1442044800000,21,-303,1442059200000,1442066400000,-211,5545,2,11,0.5555555555555556,10,0.5789473684210527] + - ["HK",1442066400000,39,-264,1442052000000,1442030400000,-211,5545,2,12,0.6111111111111112,11,0.631578947368421] + - ["HK",1442030400000,157,-107,1442044800000,1442070000000,-211,5545,2,13,0.6666666666666666,12,0.6842105263157895] + - ["HK",1442070000000,314,207,1442066400000,1442037600000,-211,5545,3,14,0.7222222222222222,13,0.7368421052631579] + - ["HK",1442037600000,636,843,1442030400000,1442055600000,-211,5545,3,15,0.7777777777777778,14,0.7894736842105263] + - ["HK",1442055600000,804,1647,1442070000000,1442034000000,-211,5545,3,16,0.8333333333333334,15,0.8421052631578947] + - ["HK",1442034000000,1137,2784,1442037600000,1442023200000,-211,5545,3,17,0.8888888888888888,16,0.8947368421052632] + - ["HK",1442023200000,2414,5198,1442055600000,1442073600000,-211,5545,3,18,0.9444444444444444,17,0.9473684210526315] + - ["HK",1442073600000,5545,10743,1442034000000,null,-211,5545,3,19,1.0,18,1.0] + - ["HN",1442026800000,-1,-1,null,null,-1,-1,1,1,0.0,1,1.0] + - ["HR",1442084400000,-10,-10,null,1442073600000,-10,220,1,1,0.0,1,0.16666666666666666] + - ["HR",1442073600000,0,-10,null,1442070000000,-10,220,1,2,0.2,2,0.3333333333333333] + - ["HR",1442070000000,32,22,1442084400000,1442077200000,-10,220,2,3,0.4,3,0.5] + - ["HR",1442077200000,58,80,1442073600000,1442088000000,-10,220,2,4,0.6,4,0.6666666666666666] + - ["HR",1442088000000,82,162,1442070000000,1442080800000,-10,220,3,5,0.8,5,0.8333333333333334] + - ["HR",1442080800000,220,382,1442077200000,null,-10,220,3,6,1.0,6,1.0] + - ["HU",1442088000000,-71,-71,null,1442091600000,-71,547,1,1,0.0,1,0.07692307692307693] + - ["HU",1442091600000,-5,-76,null,1442055600000,-71,547,1,2,0.08333333333333333,2,0.15384615384615385] + - ["HU",1442055600000,-2,-78,1442088000000,1442019600000,-71,547,1,3,0.16666666666666666,3,0.23076923076923078] + - ["HU",1442019600000,46,-32,1442091600000,1442062800000,-71,547,1,4,0.25,4,0.3076923076923077] + - ["HU",1442062800000,50,18,1442055600000,1442041200000,-71,547,1,5,0.3333333333333333,5,0.38461538461538464] + - ["HU",1442041200000,91,109,1442019600000,1442098800000,-71,547,2,6,0.4166666666666667,6,0.46153846153846156] + - ["HU",1442098800000,110,219,1442062800000,1442084400000,-71,547,2,7,0.5,7,0.5384615384615384] + - ["HU",1442084400000,141,360,1442041200000,1442037600000,-71,547,2,8,0.5833333333333334,8,0.6153846153846154] + - ["HU",1442037600000,197,557,1442098800000,1442080800000,-71,547,2,9,0.6666666666666666,9,0.6923076923076923] + - ["HU",1442080800000,242,799,1442084400000,1442095200000,-71,547,3,10,0.75,10,0.7692307692307693] + - ["HU",1442095200000,271,1070,1442037600000,1442048400000,-71,547,3,11,0.8333333333333334,11,0.8461538461538461] + - ["HU",1442048400000,499,1569,1442080800000,1442044800000,-71,547,3,12,0.9166666666666666,12,0.9230769230769231] + - ["HU",1442044800000,547,2116,1442095200000,null,-71,547,3,13,1.0,13,1.0] + - ["ID",1442026800000,-416,-416,null,1442044800000,-416,279,1,1,0.0,1,0.07692307692307693] + - ["ID",1442044800000,-388,-804,null,1442041200000,-416,279,1,2,0.08333333333333333,2,0.15384615384615385] + - ["ID",1442041200000,2,-802,1442026800000,1442098800000,-416,279,1,3,0.16666666666666666,3,0.23076923076923078] + - ["ID",1442098800000,13,-789,1442044800000,1442037600000,-416,279,1,4,0.25,4,0.3076923076923077] + - ["ID",1442037600000,14,-775,1442041200000,1442055600000,-416,279,1,5,0.3333333333333333,5,0.38461538461538464] + - ["ID",1442055600000,16,-759,1442098800000,1442059200000,-416,279,2,6,0.4166666666666667,6,0.46153846153846156] + - ["ID",1442059200000,17,-742,1442037600000,1442034000000,-416,279,2,7,0.5,7,0.5384615384615384] + - ["ID",1442034000000,19,-723,1442055600000,1442095200000,-416,279,2,8,0.5833333333333334,8,0.6153846153846154] + - ["ID",1442095200000,20,-703,1442059200000,1442091600000,-416,279,2,9,0.6666666666666666,9,0.6923076923076923] + - ["ID",1442091600000,21,-682,1442034000000,1442070000000,-416,279,3,10,0.75,10,0.7692307692307693] + - ["ID",1442070000000,42,-640,1442095200000,1442023200000,-416,279,3,11,0.8333333333333334,11,0.8461538461538461] + - ["ID",1442023200000,106,-534,1442091600000,1442030400000,-416,279,3,12,0.9166666666666666,12,0.9230769230769231] + - ["ID",1442030400000,279,-255,1442070000000,null,-416,279,3,13,1.0,13,1.0] + - ["IE",1442070000000,-100,-100,null,1442091600000,-100,1062,1,1,0.0,1,0.125] + - ["IE",1442091600000,-71,-171,null,1442026800000,-100,1062,1,2,0.14285714285714285,2,0.25] + - ["IE",1442026800000,1,-170,1442070000000,1442030400000,-100,1062,1,3,0.2857142857142857,3,0.5] + - ["IE",1442030400000,1,-169,1442091600000,1442048400000,-100,1062,2,3,0.2857142857142857,3,0.5] + - ["IE",1442048400000,27,-142,1442026800000,1442077200000,-100,1062,2,5,0.5714285714285714,4,0.625] + - ["IE",1442077200000,403,261,1442030400000,1442084400000,-100,1062,2,6,0.7142857142857143,5,0.75] + - ["IE",1442084400000,819,1080,1442048400000,1442066400000,-100,1062,3,7,0.8571428571428571,6,0.875] + - ["IE",1442066400000,1062,2142,1442077200000,null,-100,1062,3,8,1.0,7,1.0] + - ["IL",1442095200000,0,0,null,1442066400000,0,2745,1,1,0.0,1,0.0625] + - ["IL",1442066400000,3,3,null,1442098800000,0,2745,1,2,0.06666666666666667,2,0.1875] + - ["IL",1442098800000,3,6,1442095200000,1442055600000,0,2745,1,2,0.06666666666666667,2,0.1875] + - ["IL",1442055600000,4,10,1442066400000,1442048400000,0,2745,1,4,0.2,3,0.25] + - ["IL",1442048400000,25,35,1442098800000,1442073600000,0,2745,1,5,0.26666666666666666,4,0.3125] + - ["IL",1442073600000,31,66,1442055600000,1442041200000,0,2745,1,6,0.3333333333333333,5,0.375] + - ["IL",1442041200000,35,101,1442048400000,1442070000000,0,2745,2,7,0.4,6,0.4375] + - ["IL",1442070000000,49,150,1442073600000,1442080800000,0,2745,2,8,0.4666666666666667,7,0.5] + - ["IL",1442080800000,88,238,1442041200000,1442062800000,0,2745,2,9,0.5333333333333333,8,0.5625] + - ["IL",1442062800000,180,418,1442070000000,1442077200000,0,2745,2,10,0.6,9,0.625] + - ["IL",1442077200000,187,605,1442080800000,1442044800000,0,2745,2,11,0.6666666666666666,10,0.6875] + - ["IL",1442044800000,218,823,1442062800000,1442091600000,0,2745,3,12,0.7333333333333333,11,0.75] + - ["IL",1442091600000,707,1530,1442077200000,1442084400000,0,2745,3,13,0.8,12,0.8125] + - ["IL",1442084400000,1137,2667,1442044800000,1442059200000,0,2745,3,14,0.8666666666666667,13,0.875] + - ["IL",1442059200000,1205,3872,1442091600000,1442052000000,0,2745,3,15,0.9333333333333333,14,0.9375] + - ["IL",1442052000000,2745,6617,1442084400000,null,0,2745,3,16,1.0,15,1.0] + - ["IN",1442023200000,-142,-142,null,1442080800000,-142,12091,1,1,0.0,1,0.045454545454545456] + - ["IN",1442080800000,0,-142,null,1442016000000,-142,12091,1,2,0.047619047619047616,2,0.09090909090909091] + - ["IN",1442016000000,1,-141,1442023200000,1442095200000,-142,12091,1,3,0.09523809523809523,3,0.13636363636363635] + - ["IN",1442095200000,4,-137,1442080800000,1442019600000,-142,12091,1,4,0.14285714285714285,4,0.18181818181818182] + - ["IN",1442019600000,38,-99,1442016000000,1442041200000,-142,12091,1,5,0.19047619047619047,5,0.22727272727272727] + - ["IN",1442041200000,80,-19,1442095200000,1442066400000,-142,12091,1,6,0.23809523809523808,6,0.2727272727272727] + - ["IN",1442066400000,116,97,1442019600000,1442088000000,-142,12091,1,7,0.2857142857142857,7,0.3181818181818182] + - ["IN",1442088000000,121,218,1442041200000,1442037600000,-142,12091,1,8,0.3333333333333333,8,0.36363636363636365] + - ["IN",1442037600000,135,353,1442066400000,1442055600000,-142,12091,2,9,0.38095238095238093,9,0.4090909090909091] + - ["IN",1442055600000,166,519,1442088000000,1442084400000,-142,12091,2,10,0.42857142857142855,10,0.45454545454545453] + - ["IN",1442084400000,187,706,1442037600000,1442048400000,-142,12091,2,11,0.47619047619047616,11,0.5] + - ["IN",1442048400000,262,968,1442055600000,1442052000000,-142,12091,2,12,0.5238095238095238,12,0.5454545454545454] + - ["IN",1442052000000,534,1502,1442084400000,1442059200000,-142,12091,2,13,0.5714285714285714,13,0.5909090909090909] + - ["IN",1442059200000,708,2210,1442048400000,1442026800000,-142,12091,2,14,0.6190476190476191,14,0.6363636363636364] + - ["IN",1442026800000,974,3184,1442052000000,1442073600000,-142,12091,2,15,0.6666666666666666,15,0.6818181818181818] + - ["IN",1442073600000,1170,4354,1442059200000,1442034000000,-142,12091,3,16,0.7142857142857143,16,0.7272727272727273] + - ["IN",1442034000000,1350,5704,1442026800000,1442030400000,-142,12091,3,17,0.7619047619047619,17,0.7727272727272727] + - ["IN",1442030400000,1448,7152,1442073600000,1442062800000,-142,12091,3,18,0.8095238095238095,18,0.8181818181818182] + - ["IN",1442062800000,1547,8699,1442034000000,1442044800000,-142,12091,3,19,0.8571428571428571,19,0.8636363636363636] + - ["IN",1442044800000,2677,11376,1442030400000,1442077200000,-142,12091,3,20,0.9047619047619048,20,0.9090909090909091] + - ["IN",1442077200000,5699,17075,1442062800000,1442070000000,-142,12091,3,21,0.9523809523809523,21,0.9545454545454546] + - ["IN",1442070000000,12091,29166,1442044800000,null,-142,12091,3,22,1.0,22,1.0] + - ["IQ",1442095200000,-2,-2,null,1442041200000,-2,6,1,1,0.0,1,0.25] + - ["IQ",1442041200000,-1,-3,null,1442052000000,-2,6,1,2,0.3333333333333333,2,0.5] + - ["IQ",1442052000000,0,-3,1442095200000,1442044800000,-2,6,2,3,0.6666666666666666,3,0.75] + - ["IQ",1442044800000,6,3,1442041200000,null,-2,6,3,4,1.0,4,1.0] + - ["IR",1442073600000,-193,-193,null,1442055600000,-193,1455,1,1,0.0,1,0.07692307692307693] + - ["IR",1442055600000,-124,-317,null,1442041200000,-193,1455,1,2,0.08333333333333333,2,0.15384615384615385] + - ["IR",1442041200000,-79,-396,1442073600000,1442077200000,-193,1455,1,3,0.16666666666666666,3,0.23076923076923078] + - ["IR",1442077200000,-34,-430,1442055600000,1442034000000,-193,1455,1,4,0.25,4,0.3076923076923077] + - ["IR",1442034000000,-8,-438,1442041200000,1442026800000,-193,1455,1,5,0.3333333333333333,5,0.38461538461538464] + - ["IR",1442026800000,0,-438,1442077200000,1442091600000,-193,1455,2,6,0.4166666666666667,6,0.5384615384615384] + - ["IR",1442091600000,0,-438,1442034000000,1442080800000,-193,1455,2,6,0.4166666666666667,6,0.5384615384615384] + - ["IR",1442080800000,131,-307,1442026800000,1442052000000,-193,1455,2,8,0.5833333333333334,7,0.6153846153846154] + - ["IR",1442052000000,155,-152,1442091600000,1442044800000,-193,1455,2,9,0.6666666666666666,8,0.6923076923076923] + - ["IR",1442044800000,306,154,1442080800000,1442030400000,-193,1455,3,10,0.75,9,0.7692307692307693] + - ["IR",1442030400000,375,529,1442052000000,1442088000000,-193,1455,3,11,0.8333333333333334,10,0.8461538461538461] + - ["IR",1442088000000,714,1243,1442044800000,1442059200000,-193,1455,3,12,0.9166666666666666,11,0.9230769230769231] + - ["IR",1442059200000,1455,2698,1442030400000,null,-193,1455,3,13,1.0,12,1.0] + - ["IT",1442030400000,-17,-17,null,1442037600000,-17,6240,1,1,0.0,1,0.041666666666666664] + - ["IT",1442037600000,-9,-26,null,1442016000000,-17,6240,1,2,0.043478260869565216,2,0.08333333333333333] + - ["IT",1442016000000,0,-26,1442030400000,1442041200000,-17,6240,1,3,0.08695652173913043,3,0.125] + - ["IT",1442041200000,20,-6,1442037600000,1442070000000,-17,6240,1,4,0.13043478260869565,4,0.16666666666666666] + - ["IT",1442070000000,81,75,1442016000000,1442023200000,-17,6240,1,5,0.17391304347826086,5,0.20833333333333334] + - ["IT",1442023200000,111,186,1442041200000,1442019600000,-17,6240,1,6,0.21739130434782608,6,0.25] + - ["IT",1442019600000,183,369,1442070000000,1442026800000,-17,6240,1,7,0.2608695652173913,7,0.2916666666666667] + - ["IT",1442026800000,222,591,1442023200000,1442091600000,-17,6240,1,8,0.30434782608695654,8,0.3333333333333333] + - ["IT",1442091600000,351,942,1442019600000,1442059200000,-17,6240,2,9,0.34782608695652173,9,0.375] + - ["IT",1442059200000,542,1484,1442026800000,1442098800000,-17,6240,2,10,0.391304347826087,10,0.4166666666666667] + - ["IT",1442098800000,565,2049,1442091600000,1442048400000,-17,6240,2,11,0.43478260869565216,11,0.4583333333333333] + - ["IT",1442048400000,676,2725,1442059200000,1442034000000,-17,6240,2,12,0.4782608695652174,12,0.5] + - ["IT",1442034000000,1006,3731,1442098800000,1442044800000,-17,6240,2,13,0.5217391304347826,13,0.5416666666666666] + - ["IT",1442044800000,1483,5214,1442048400000,1442052000000,-17,6240,2,14,0.5652173913043478,14,0.5833333333333334] + - ["IT",1442052000000,1880,7094,1442034000000,1442062800000,-17,6240,2,15,0.6086956521739131,15,0.625] + - ["IT",1442062800000,1938,9032,1442044800000,1442077200000,-17,6240,2,16,0.6521739130434783,16,0.6666666666666666] + - ["IT",1442077200000,2188,11220,1442052000000,1442073600000,-17,6240,3,17,0.6956521739130435,17,0.7083333333333334] + - ["IT",1442073600000,2586,13806,1442062800000,1442084400000,-17,6240,3,18,0.7391304347826086,18,0.75] + - ["IT",1442084400000,2660,16466,1442077200000,1442095200000,-17,6240,3,19,0.782608695652174,19,0.7916666666666666] + - ["IT",1442095200000,2940,19406,1442073600000,1442088000000,-17,6240,3,20,0.8260869565217391,20,0.8333333333333334] + - ["IT",1442088000000,3746,23152,1442084400000,1442066400000,-17,6240,3,21,0.8695652173913043,21,0.875] + - ["IT",1442066400000,4155,27307,1442095200000,1442080800000,-17,6240,3,22,0.9130434782608695,22,0.9166666666666666] + - ["IT",1442080800000,5544,32851,1442088000000,1442055600000,-17,6240,3,23,0.9565217391304348,23,0.9583333333333334] + - ["IT",1442055600000,6240,39091,1442066400000,null,-17,6240,3,24,1.0,24,1.0] + - ["JM",1442070000000,30,30,null,null,30,30,1,1,0.0,1,1.0] + - ["JO",1442055600000,-2,-2,null,1442059200000,-2,4,1,1,0.0,1,0.3333333333333333] + - ["JO",1442059200000,0,-2,null,1442080800000,-2,4,2,2,0.5,2,0.6666666666666666] + - ["JO",1442080800000,4,2,1442055600000,null,-2,4,3,3,1.0,3,1.0] + - ["JP",1442016000000,-113,-113,null,1442059200000,-113,2789,1,1,0.0,1,0.041666666666666664] + - ["JP",1442059200000,-85,-198,null,1442098800000,-113,2789,1,2,0.043478260869565216,2,0.08333333333333333] + - ["JP",1442098800000,-6,-204,1442016000000,1442095200000,-113,2789,1,3,0.08695652173913043,3,0.125] + - ["JP",1442095200000,0,-204,1442059200000,1442084400000,-113,2789,1,4,0.13043478260869565,4,0.16666666666666666] + - ["JP",1442084400000,13,-191,1442098800000,1442077200000,-113,2789,1,5,0.17391304347826086,5,0.20833333333333334] + - ["JP",1442077200000,51,-140,1442095200000,1442088000000,-113,2789,1,6,0.21739130434782608,6,0.25] + - ["JP",1442088000000,57,-83,1442084400000,1442070000000,-113,2789,1,7,0.2608695652173913,7,0.2916666666666667] + - ["JP",1442070000000,79,-4,1442077200000,1442066400000,-113,2789,1,8,0.30434782608695654,8,0.3333333333333333] + - ["JP",1442066400000,167,163,1442088000000,1442091600000,-113,2789,2,9,0.34782608695652173,9,0.375] + - ["JP",1442091600000,228,391,1442070000000,1442080800000,-113,2789,2,10,0.391304347826087,10,0.4166666666666667] + - ["JP",1442080800000,420,811,1442066400000,1442062800000,-113,2789,2,11,0.43478260869565216,11,0.4583333333333333] + - ["JP",1442062800000,803,1614,1442091600000,1442030400000,-113,2789,2,12,0.4782608695652174,12,0.5] + - ["JP",1442030400000,805,2419,1442080800000,1442034000000,-113,2789,2,13,0.5217391304347826,13,0.5416666666666666] + - ["JP",1442034000000,910,3329,1442062800000,1442055600000,-113,2789,2,14,0.5652173913043478,14,0.5833333333333334] + - ["JP",1442055600000,998,4327,1442030400000,1442026800000,-113,2789,2,15,0.6086956521739131,15,0.625] + - ["JP",1442026800000,1035,5362,1442034000000,1442073600000,-113,2789,2,16,0.6521739130434783,16,0.6666666666666666] + - ["JP",1442073600000,1162,6524,1442055600000,1442041200000,-113,2789,3,17,0.6956521739130435,17,0.7083333333333334] + - ["JP",1442041200000,1373,7897,1442026800000,1442044800000,-113,2789,3,18,0.7391304347826086,18,0.75] + - ["JP",1442044800000,1569,9466,1442073600000,1442023200000,-113,2789,3,19,0.782608695652174,19,0.7916666666666666] + - ["JP",1442023200000,1959,11425,1442041200000,1442048400000,-113,2789,3,20,0.8260869565217391,20,0.8333333333333334] + - ["JP",1442048400000,1981,13406,1442044800000,1442019600000,-113,2789,3,21,0.8695652173913043,21,0.875] + - ["JP",1442019600000,2002,15408,1442023200000,1442037600000,-113,2789,3,22,0.9130434782608695,22,0.9166666666666666] + - ["JP",1442037600000,2181,17589,1442048400000,1442052000000,-113,2789,3,23,0.9565217391304348,23,0.9583333333333334] + - ["JP",1442052000000,2789,20378,1442019600000,null,-113,2789,3,24,1.0,24,1.0] + - ["KE",1442044800000,-1,-1,null,null,-1,-1,1,1,0.0,1,1.0] + - ["KG",1442073600000,6,6,null,null,6,6,1,1,0.0,1,1.0] + - ["KR",1442048400000,-374,-374,null,1442026800000,-374,3640,1,1,0.0,1,0.045454545454545456] + - ["KR",1442026800000,-179,-553,null,1442077200000,-374,3640,1,2,0.047619047619047616,2,0.09090909090909091] + - ["KR",1442077200000,-40,-593,1442048400000,1442098800000,-374,3640,1,3,0.09523809523809523,3,0.13636363636363635] + - ["KR",1442098800000,-36,-629,1442026800000,1442080800000,-374,3640,1,4,0.14285714285714285,4,0.18181818181818182] + - ["KR",1442080800000,-33,-662,1442077200000,1442052000000,-374,3640,1,5,0.19047619047619047,5,0.22727272727272727] + - ["KR",1442052000000,-3,-665,1442098800000,1442041200000,-374,3640,1,6,0.23809523809523808,6,0.2727272727272727] + - ["KR",1442041200000,20,-645,1442080800000,1442037600000,-374,3640,1,7,0.2857142857142857,7,0.3181818181818182] + - ["KR",1442037600000,26,-619,1442052000000,1442059200000,-374,3640,1,8,0.3333333333333333,8,0.36363636363636365] + - ["KR",1442059200000,208,-411,1442041200000,1442070000000,-374,3640,2,9,0.38095238095238093,9,0.4090909090909091] + - ["KR",1442070000000,222,-189,1442037600000,1442084400000,-374,3640,2,10,0.42857142857142855,10,0.45454545454545453] + - ["KR",1442084400000,314,125,1442059200000,1442023200000,-374,3640,2,11,0.47619047619047616,11,0.5] + - ["KR",1442023200000,319,444,1442070000000,1442034000000,-374,3640,2,12,0.5238095238095238,12,0.5454545454545454] + - ["KR",1442034000000,434,878,1442084400000,1442019600000,-374,3640,2,13,0.5714285714285714,13,0.5909090909090909] + - ["KR",1442019600000,445,1323,1442023200000,1442088000000,-374,3640,2,14,0.6190476190476191,14,0.6363636363636364] + - ["KR",1442088000000,524,1847,1442034000000,1442095200000,-374,3640,2,15,0.6666666666666666,15,0.6818181818181818] + - ["KR",1442095200000,827,2674,1442019600000,1442044800000,-374,3640,3,16,0.7142857142857143,16,0.7272727272727273] + - ["KR",1442044800000,829,3503,1442088000000,1442016000000,-374,3640,3,17,0.7619047619047619,17,0.7727272727272727] + - ["KR",1442016000000,1024,4527,1442095200000,1442030400000,-374,3640,3,18,0.8095238095238095,18,0.8181818181818182] + - ["KR",1442030400000,1035,5562,1442044800000,1442062800000,-374,3640,3,19,0.8571428571428571,19,0.8636363636363636] + - ["KR",1442062800000,1096,6658,1442016000000,1442066400000,-374,3640,3,20,0.9047619047619048,20,0.9090909090909091] + - ["KR",1442066400000,3299,9957,1442030400000,1442055600000,-374,3640,3,21,0.9523809523809523,21,0.9545454545454546] + - ["KR",1442055600000,3640,13597,1442062800000,null,-374,3640,3,22,1.0,22,1.0] + - ["KW",1442080800000,-33,-33,null,1442055600000,-33,1815,1,1,0.0,1,0.25] + - ["KW",1442055600000,-2,-35,null,1442077200000,-33,1815,1,2,0.3333333333333333,2,0.75] + - ["KW",1442077200000,-2,-37,1442080800000,1442070000000,-33,1815,2,2,0.3333333333333333,2,0.75] + - ["KW",1442070000000,1815,1778,1442055600000,null,-33,1815,3,4,1.0,3,1.0] + - ["KZ",1442077200000,-317,-317,null,1442084400000,-317,439,1,1,0.0,1,0.09090909090909091] + - ["KZ",1442084400000,-22,-339,null,1442062800000,-317,439,1,2,0.1,2,0.18181818181818182] + - ["KZ",1442062800000,0,-339,1442077200000,1442066400000,-317,439,1,3,0.2,3,0.36363636363636365] + - ["KZ",1442066400000,0,-339,1442084400000,1442059200000,-317,439,1,3,0.2,3,0.36363636363636365] + - ["KZ",1442059200000,33,-306,1442062800000,1442055600000,-317,439,2,5,0.4,4,0.45454545454545453] + - ["KZ",1442055600000,63,-243,1442066400000,1442095200000,-317,439,2,6,0.5,5,0.5454545454545454] + - ["KZ",1442095200000,91,-152,1442059200000,1442034000000,-317,439,2,7,0.6,6,0.6363636363636364] + - ["KZ",1442034000000,161,9,1442055600000,1442044800000,-317,439,2,8,0.7,7,0.7272727272727273] + - ["KZ",1442044800000,401,410,1442095200000,1442052000000,-317,439,3,9,0.8,8,0.8181818181818182] + - ["KZ",1442052000000,412,822,1442034000000,1442048400000,-317,439,3,10,0.9,9,0.9090909090909091] + - ["KZ",1442048400000,439,1261,1442044800000,null,-317,439,3,11,1.0,10,1.0] + - ["LB",1442055600000,-67,-67,null,null,-67,-67,1,1,0.0,1,1.0] + - ["LK",1442084400000,-3,-3,null,1442048400000,-3,79,1,1,0.0,1,0.25] + - ["LK",1442048400000,8,5,null,1442052000000,-3,79,1,2,0.3333333333333333,2,0.5] + - ["LK",1442052000000,47,52,1442084400000,1442026800000,-3,79,2,3,0.6666666666666666,3,0.75] + - ["LK",1442026800000,79,131,1442048400000,null,-3,79,3,4,1.0,4,1.0] + - ["LT",1442098800000,-24,-24,null,1442080800000,-24,12,1,1,0.0,1,0.5] + - ["LT",1442080800000,12,-12,null,null,-24,12,2,2,1.0,2,1.0] + - ["LU",1442066400000,0,0,null,1442095200000,0,525,1,1,0.0,1,0.25] + - ["LU",1442095200000,2,2,null,1442059200000,0,525,1,2,0.3333333333333333,2,0.5] + - ["LU",1442059200000,79,81,1442066400000,1442077200000,0,525,2,3,0.6666666666666666,3,0.75] + - ["LU",1442077200000,525,606,1442095200000,null,0,525,3,4,1.0,4,1.0] + - ["LV",1442095200000,0,0,null,null,0,0,1,1,0.0,1,1.0] + - ["MA",1442059200000,-56,-56,null,1442019600000,-56,250,1,1,0.0,1,0.14285714285714285] + - ["MA",1442019600000,-1,-57,null,1442062800000,-56,250,1,2,0.16666666666666666,2,0.2857142857142857] + - ["MA",1442062800000,0,-57,1442059200000,1442080800000,-56,250,1,3,0.3333333333333333,3,0.42857142857142855] + - ["MA",1442080800000,5,-52,1442019600000,1442098800000,-56,250,2,4,0.5,4,0.5714285714285714] + - ["MA",1442098800000,8,-44,1442062800000,1442055600000,-56,250,2,5,0.6666666666666666,5,0.7142857142857143] + - ["MA",1442055600000,23,-21,1442080800000,1442077200000,-56,250,3,6,0.8333333333333334,6,0.8571428571428571] + - ["MA",1442077200000,250,229,1442098800000,null,-56,250,3,7,1.0,7,1.0] + - ["MD",1442077200000,6916,6916,null,null,6916,6916,1,1,0.0,1,1.0] + - ["ME",1442073600000,0,0,null,null,0,0,1,1,0.0,1,1.0] + - ["MH",1442052000000,40,40,null,null,40,40,1,1,0.0,1,1.0] + - ["MK",1442077200000,-72,-72,null,null,-72,-72,1,1,0.0,1,1.0] + - ["MM",1442070000000,3,3,null,1442073600000,3,25,1,1,0.0,1,0.5] + - ["MM",1442073600000,25,28,null,null,3,25,2,2,1.0,2,1.0] + - ["MO",1442070000000,18,18,null,1442034000000,18,30,1,1,0.0,1,0.5] + - ["MO",1442034000000,30,48,null,null,18,30,2,2,1.0,2,1.0] + - ["MR",1442080800000,10,10,null,null,10,10,1,1,0.0,1,1.0] + - ["MT",1442048400000,-1,-1,null,null,-1,-1,1,1,0.0,1,1.0] + - ["MV",1442073600000,-3,-3,null,null,-3,-3,1,1,0.0,1,1.0] + - ["MX",1442095200000,-456,-456,null,1442080800000,-456,3874,1,1,0.0,1,0.058823529411764705] + - ["MX",1442080800000,-376,-832,null,1442041200000,-456,3874,1,2,0.0625,2,0.11764705882352941] + - ["MX",1442041200000,-294,-1126,1442095200000,1442016000000,-456,3874,1,3,0.125,3,0.17647058823529413] + - ["MX",1442016000000,-67,-1193,1442080800000,1442073600000,-456,3874,1,4,0.1875,4,0.23529411764705882] + - ["MX",1442073600000,-21,-1214,1442041200000,1442066400000,-456,3874,1,5,0.25,5,0.29411764705882354] + - ["MX",1442066400000,-1,-1215,1442016000000,1442070000000,-456,3874,1,6,0.3125,6,0.4117647058823529] + - ["MX",1442070000000,-1,-1216,1442073600000,1442037600000,-456,3874,2,6,0.3125,6,0.4117647058823529] + - ["MX",1442037600000,4,-1212,1442066400000,1442098800000,-456,3874,2,8,0.4375,7,0.47058823529411764] + - ["MX",1442098800000,28,-1184,1442070000000,1442030400000,-456,3874,2,9,0.5,8,0.5294117647058824] + - ["MX",1442030400000,373,-811,1442037600000,1442088000000,-456,3874,2,10,0.5625,9,0.5882352941176471] + - ["MX",1442088000000,494,-317,1442098800000,1442023200000,-456,3874,2,11,0.625,10,0.6470588235294118] + - ["MX",1442023200000,549,232,1442030400000,1442091600000,-456,3874,2,12,0.6875,11,0.7058823529411765] + - ["MX",1442091600000,799,1031,1442088000000,1442034000000,-456,3874,3,13,0.75,12,0.7647058823529411] + - ["MX",1442034000000,944,1975,1442023200000,1442084400000,-456,3874,3,14,0.8125,13,0.8235294117647058] + - ["MX",1442084400000,981,2956,1442091600000,1442026800000,-456,3874,3,15,0.875,14,0.8823529411764706] + - ["MX",1442026800000,3642,6598,1442034000000,1442077200000,-456,3874,3,16,0.9375,15,0.9411764705882353] + - ["MX",1442077200000,3874,10472,1442084400000,null,-456,3874,3,17,1.0,16,1.0] + - ["MY",1442044800000,-127,-127,null,1442077200000,-127,1028,1,1,0.0,1,0.08333333333333333] + - ["MY",1442077200000,-10,-137,null,1442019600000,-127,1028,1,2,0.09090909090909091,2,0.16666666666666666] + - ["MY",1442019600000,-7,-144,1442044800000,1442030400000,-127,1028,1,3,0.18181818181818182,3,0.25] + - ["MY",1442030400000,-3,-147,1442077200000,1442059200000,-127,1028,1,4,0.2727272727272727,4,0.3333333333333333] + - ["MY",1442059200000,0,-147,1442019600000,1442055600000,-127,1028,2,5,0.36363636363636365,5,0.4166666666666667] + - ["MY",1442055600000,1,-146,1442030400000,1442066400000,-127,1028,2,6,0.45454545454545453,6,0.6666666666666666] + - ["MY",1442066400000,1,-145,1442059200000,1442073600000,-127,1028,2,6,0.45454545454545453,6,0.6666666666666666] + - ["MY",1442073600000,1,-144,1442055600000,1442048400000,-127,1028,2,6,0.45454545454545453,6,0.6666666666666666] + - ["MY",1442048400000,649,505,1442066400000,1442098800000,-127,1028,3,9,0.7272727272727273,7,0.75] + - ["MY",1442098800000,739,1244,1442073600000,1442041200000,-127,1028,3,10,0.8181818181818182,8,0.8333333333333334] + - ["MY",1442041200000,935,2179,1442048400000,1442034000000,-127,1028,3,11,0.9090909090909091,9,0.9166666666666666] + - ["MY",1442034000000,1028,3207,1442098800000,null,-127,1028,3,12,1.0,10,1.0] + - ["NG",1442070000000,6,6,null,1442052000000,6,208,1,1,0.0,1,0.5] + - ["NG",1442052000000,208,214,null,null,6,208,2,2,1.0,2,1.0] + - ["NL",1442070000000,-84,-84,null,1442062800000,-84,8947,1,1,0.0,1,0.058823529411764705] + - ["NL",1442062800000,-30,-114,null,1442034000000,-84,8947,1,2,0.0625,2,0.11764705882352941] + - ["NL",1442034000000,0,-114,1442070000000,1442098800000,-84,8947,1,3,0.125,3,0.17647058823529413] + - ["NL",1442098800000,4,-110,1442062800000,1442088000000,-84,8947,1,4,0.1875,4,0.23529411764705882] + - ["NL",1442088000000,12,-98,1442034000000,1442044800000,-84,8947,1,5,0.25,5,0.29411764705882354] + - ["NL",1442044800000,16,-82,1442098800000,1442091600000,-84,8947,1,6,0.3125,6,0.35294117647058826] + - ["NL",1442091600000,19,-63,1442088000000,1442052000000,-84,8947,2,7,0.375,7,0.4117647058823529] + - ["NL",1442052000000,53,-10,1442044800000,1442066400000,-84,8947,2,8,0.4375,8,0.47058823529411764] + - ["NL",1442066400000,61,51,1442091600000,1442095200000,-84,8947,2,9,0.5,9,0.5294117647058824] + - ["NL",1442095200000,70,121,1442052000000,1442055600000,-84,8947,2,10,0.5625,10,0.5882352941176471] + - ["NL",1442055600000,105,226,1442066400000,1442073600000,-84,8947,2,11,0.625,11,0.6470588235294118] + - ["NL",1442073600000,166,392,1442095200000,1442059200000,-84,8947,2,12,0.6875,12,0.7058823529411765] + - ["NL",1442059200000,206,598,1442055600000,1442084400000,-84,8947,3,13,0.75,13,0.7647058823529411] + - ["NL",1442084400000,436,1034,1442073600000,1442077200000,-84,8947,3,14,0.8125,14,0.8235294117647058] + - ["NL",1442077200000,878,1912,1442059200000,1442048400000,-84,8947,3,15,0.875,15,0.8823529411764706] + - ["NL",1442048400000,1303,3215,1442084400000,1442080800000,-84,8947,3,16,0.9375,16,0.9411764705882353] + - ["NL",1442080800000,8947,12162,1442077200000,null,-84,8947,3,17,1.0,17,1.0] + - ["NO",1442048400000,-447,-447,null,1442095200000,-447,447,1,1,0.0,1,0.09090909090909091] + - ["NO",1442095200000,-1,-448,null,1442098800000,-447,447,1,2,0.1,2,0.18181818181818182] + - ["NO",1442098800000,2,-446,1442048400000,1442088000000,-447,447,1,3,0.2,3,0.2727272727272727] + - ["NO",1442088000000,15,-431,1442095200000,1442091600000,-447,447,1,4,0.3,4,0.45454545454545453] + - ["NO",1442091600000,15,-416,1442098800000,1442055600000,-447,447,2,4,0.3,4,0.45454545454545453] + - ["NO",1442055600000,29,-387,1442088000000,1442080800000,-447,447,2,6,0.5,5,0.5454545454545454] + - ["NO",1442080800000,31,-356,1442091600000,1442019600000,-447,447,2,7,0.6,6,0.6363636363636364] + - ["NO",1442019600000,48,-308,1442055600000,1442066400000,-447,447,2,8,0.7,7,0.7272727272727273] + - ["NO",1442066400000,71,-237,1442080800000,1442073600000,-447,447,3,9,0.8,8,0.8181818181818182] + - ["NO",1442073600000,222,-15,1442019600000,1442052000000,-447,447,3,10,0.9,9,0.9090909090909091] + - ["NO",1442052000000,447,432,1442066400000,null,-447,447,3,11,1.0,10,1.0] + - ["NP",1442048400000,61,61,null,null,61,61,1,1,0.0,1,1.0] + - ["NZ",1442084400000,-52,-52,null,1442095200000,-52,635,1,1,0.0,1,0.1111111111111111] + - ["NZ",1442095200000,-4,-56,null,1442098800000,-52,635,1,2,0.125,2,0.2222222222222222] + - ["NZ",1442098800000,-2,-58,1442084400000,1442019600000,-52,635,1,3,0.25,3,0.3333333333333333] + - ["NZ",1442019600000,28,-30,1442095200000,1442037600000,-52,635,2,4,0.375,4,0.4444444444444444] + - ["NZ",1442037600000,66,36,1442098800000,1442048400000,-52,635,2,5,0.5,5,0.5555555555555556] + - ["NZ",1442048400000,189,225,1442019600000,1442088000000,-52,635,2,6,0.625,6,0.6666666666666666] + - ["NZ",1442088000000,405,630,1442037600000,1442059200000,-52,635,3,7,0.75,7,0.7777777777777778] + - ["NZ",1442059200000,428,1058,1442048400000,1442026800000,-52,635,3,8,0.875,8,0.8888888888888888] + - ["NZ",1442026800000,635,1693,1442088000000,null,-52,635,3,9,1.0,9,1.0] + - ["OM",1442052000000,0,0,null,null,0,0,1,1,0.0,1,1.0] + - ["PA",1442026800000,0,0,null,null,0,0,1,1,0.0,1,1.0] + - ["PE",1442077200000,-163,-163,null,1442084400000,-163,1861,1,1,0.0,1,0.1111111111111111] + - ["PE",1442084400000,-68,-231,null,1442095200000,-163,1861,1,2,0.125,2,0.2222222222222222] + - ["PE",1442095200000,-19,-250,1442077200000,1442026800000,-163,1861,1,3,0.25,3,0.3333333333333333] + - ["PE",1442026800000,-12,-262,1442084400000,1442062800000,-163,1861,2,4,0.375,4,0.5555555555555556] + - ["PE",1442062800000,-12,-274,1442095200000,1442080800000,-163,1861,2,4,0.375,4,0.5555555555555556] + - ["PE",1442080800000,-2,-276,1442026800000,1442023200000,-163,1861,2,6,0.625,5,0.6666666666666666] + - ["PE",1442023200000,26,-250,1442062800000,1442019600000,-163,1861,3,7,0.75,6,0.7777777777777778] + - ["PE",1442019600000,523,273,1442080800000,1442098800000,-163,1861,3,8,0.875,7,0.8888888888888888] + - ["PE",1442098800000,1861,2134,1442023200000,null,-163,1861,3,9,1.0,8,1.0] + - ["PH",1442073600000,-227,-227,null,1442041200000,-227,1969,1,1,0.0,1,0.047619047619047616] + - ["PH",1442041200000,0,-227,null,1442077200000,-227,1969,1,2,0.05,2,0.09523809523809523] + - ["PH",1442077200000,2,-225,1442073600000,1442019600000,-227,1969,1,3,0.1,3,0.14285714285714285] + - ["PH",1442019600000,6,-219,1442041200000,1442098800000,-227,1969,1,4,0.15,4,0.19047619047619047] + - ["PH",1442098800000,8,-211,1442077200000,1442037600000,-227,1969,1,5,0.2,5,0.23809523809523808] + - ["PH",1442037600000,17,-194,1442019600000,1442052000000,-227,1969,1,6,0.25,6,0.2857142857142857] + - ["PH",1442052000000,22,-172,1442098800000,1442030400000,-227,1969,1,7,0.3,7,0.3333333333333333] + - ["PH",1442030400000,26,-146,1442037600000,1442080800000,-227,1969,2,8,0.35,8,0.38095238095238093] + - ["PH",1442080800000,32,-114,1442052000000,1442070000000,-227,1969,2,9,0.4,9,0.42857142857142855] + - ["PH",1442070000000,34,-80,1442030400000,1442084400000,-227,1969,2,10,0.45,10,0.47619047619047616] + - ["PH",1442084400000,39,-41,1442080800000,1442044800000,-227,1969,2,11,0.5,11,0.5238095238095238] + - ["PH",1442044800000,55,14,1442070000000,1442034000000,-227,1969,2,12,0.55,12,0.5714285714285714] + - ["PH",1442034000000,59,73,1442084400000,1442048400000,-227,1969,2,13,0.6,13,0.6190476190476191] + - ["PH",1442048400000,62,135,1442044800000,1442062800000,-227,1969,2,14,0.65,14,0.6666666666666666] + - ["PH",1442062800000,171,306,1442034000000,1442059200000,-227,1969,3,15,0.7,15,0.7142857142857143] + - ["PH",1442059200000,273,579,1442048400000,1442023200000,-227,1969,3,16,0.75,16,0.7619047619047619] + - ["PH",1442023200000,459,1038,1442062800000,1442091600000,-227,1969,3,17,0.8,17,0.8095238095238095] + - ["PH",1442091600000,816,1854,1442059200000,1442026800000,-227,1969,3,18,0.85,18,0.8571428571428571] + - ["PH",1442026800000,910,2764,1442023200000,1442066400000,-227,1969,3,19,0.9,19,0.9047619047619048] + - ["PH",1442066400000,1880,4644,1442091600000,1442055600000,-227,1969,3,20,0.95,20,0.9523809523809523] + - ["PH",1442055600000,1969,6613,1442026800000,null,-227,1969,3,21,1.0,21,1.0] + - ["PK",1442048400000,15,15,null,1442062800000,15,335,1,1,0.0,1,0.14285714285714285] + - ["PK",1442062800000,23,38,null,1442041200000,15,335,1,2,0.16666666666666666,2,0.2857142857142857] + - ["PK",1442041200000,24,62,1442048400000,1442070000000,15,335,1,3,0.3333333333333333,3,0.42857142857142855] + - ["PK",1442070000000,43,105,1442062800000,1442037600000,15,335,2,4,0.5,4,0.5714285714285714] + - ["PK",1442037600000,100,205,1442041200000,1442026800000,15,335,2,5,0.6666666666666666,5,0.7142857142857143] + - ["PK",1442026800000,101,306,1442070000000,1442019600000,15,335,3,6,0.8333333333333334,6,0.8571428571428571] + - ["PK",1442019600000,335,641,1442037600000,null,15,335,3,7,1.0,7,1.0] + - ["PL",1442098800000,-9,-9,null,1442080800000,-9,4171,1,1,0.0,1,0.05555555555555555] + - ["PL",1442080800000,7,-2,null,1442084400000,-9,4171,1,2,0.058823529411764705,2,0.1111111111111111] + - ["PL",1442084400000,13,11,1442098800000,1442073600000,-9,4171,1,3,0.11764705882352941,3,0.16666666666666666] + - ["PL",1442073600000,30,41,1442080800000,1442066400000,-9,4171,1,4,0.17647058823529413,4,0.2222222222222222] + - ["PL",1442066400000,34,75,1442084400000,1442037600000,-9,4171,1,5,0.23529411764705882,5,0.2777777777777778] + - ["PL",1442037600000,95,170,1442073600000,1442070000000,-9,4171,1,6,0.29411764705882354,6,0.3333333333333333] + - ["PL",1442070000000,146,316,1442066400000,1442059200000,-9,4171,2,7,0.35294117647058826,7,0.3888888888888889] + - ["PL",1442059200000,199,515,1442037600000,1442041200000,-9,4171,2,8,0.4117647058823529,8,0.4444444444444444] + - ["PL",1442041200000,281,796,1442070000000,1442044800000,-9,4171,2,9,0.47058823529411764,9,0.5] + - ["PL",1442044800000,319,1115,1442059200000,1442077200000,-9,4171,2,10,0.5294117647058824,10,0.5555555555555556] + - ["PL",1442077200000,324,1439,1442041200000,1442052000000,-9,4171,2,11,0.5882352941176471,11,0.6111111111111112] + - ["PL",1442052000000,330,1769,1442044800000,1442088000000,-9,4171,2,12,0.6470588235294118,12,0.6666666666666666] + - ["PL",1442088000000,346,2115,1442077200000,1442048400000,-9,4171,3,13,0.7058823529411765,13,0.7222222222222222] + - ["PL",1442048400000,366,2481,1442052000000,1442055600000,-9,4171,3,14,0.7647058823529411,14,0.7777777777777778] + - ["PL",1442055600000,410,2891,1442088000000,1442091600000,-9,4171,3,15,0.8235294117647058,15,0.8333333333333334] + - ["PL",1442091600000,902,3793,1442048400000,1442095200000,-9,4171,3,16,0.8823529411764706,16,0.8888888888888888] + - ["PL",1442095200000,1851,5644,1442055600000,1442062800000,-9,4171,3,17,0.9411764705882353,17,0.9444444444444444] + - ["PL",1442062800000,4171,9815,1442091600000,null,-9,4171,3,18,1.0,18,1.0] + - ["PR",1442059200000,-35,-35,null,1442030400000,-35,29,1,1,0.0,1,0.2] + - ["PR",1442030400000,2,-33,null,1442077200000,-35,29,1,2,0.25,2,0.4] + - ["PR",1442077200000,5,-28,1442059200000,1442026800000,-35,29,2,3,0.5,3,0.6] + - ["PR",1442026800000,22,-6,1442030400000,1442095200000,-35,29,2,4,0.75,4,0.8] + - ["PR",1442095200000,29,23,1442077200000,null,-35,29,3,5,1.0,5,1.0] + - ["PT",1442080800000,-79,-79,null,1442077200000,-79,3470,1,1,0.0,1,0.1] + - ["PT",1442077200000,-75,-154,null,1442098800000,-79,3470,1,2,0.1111111111111111,2,0.2] + - ["PT",1442098800000,2,-152,1442080800000,1442044800000,-79,3470,1,3,0.2222222222222222,3,0.3] + - ["PT",1442044800000,11,-141,1442077200000,1442066400000,-79,3470,1,4,0.3333333333333333,4,0.4] + - ["PT",1442066400000,12,-129,1442098800000,1442095200000,-79,3470,2,5,0.4444444444444444,5,0.5] + - ["PT",1442095200000,19,-110,1442044800000,1442052000000,-79,3470,2,6,0.5555555555555556,6,0.6] + - ["PT",1442052000000,102,-8,1442066400000,1442019600000,-79,3470,2,7,0.6666666666666666,7,0.7] + - ["PT",1442019600000,172,164,1442095200000,1442088000000,-79,3470,3,8,0.7777777777777778,8,0.8] + - ["PT",1442088000000,403,567,1442052000000,1442070000000,-79,3470,3,9,0.8888888888888888,9,0.9] + - ["PT",1442070000000,3470,4037,1442019600000,null,-79,3470,3,10,1.0,10,1.0] + - ["PY",1442019600000,1,1,null,1442080800000,1,628,1,1,0.0,1,0.3333333333333333] + - ["PY",1442080800000,5,6,null,1442084400000,1,628,2,2,0.5,2,0.6666666666666666] + - ["PY",1442084400000,628,634,1442019600000,null,1,628,3,3,1.0,3,1.0] + - ["QA",1442041200000,13,13,null,null,13,13,1,1,0.0,1,1.0] + - ["RO",1442070000000,-29,-29,null,1442091600000,-29,845,1,1,0.0,1,0.1] + - ["RO",1442091600000,0,-29,null,1442073600000,-29,845,1,2,0.1111111111111111,2,0.2] + - ["RO",1442073600000,15,-14,1442070000000,1442055600000,-29,845,1,3,0.2222222222222222,3,0.3] + - ["RO",1442055600000,26,12,1442091600000,1442034000000,-29,845,1,4,0.3333333333333333,4,0.4] + - ["RO",1442034000000,68,80,1442073600000,1442044800000,-29,845,2,5,0.4444444444444444,5,0.5] + - ["RO",1442044800000,284,364,1442055600000,1442052000000,-29,845,2,6,0.5555555555555556,6,0.6] + - ["RO",1442052000000,319,683,1442034000000,1442062800000,-29,845,2,7,0.6666666666666666,7,0.7] + - ["RO",1442062800000,541,1224,1442044800000,1442095200000,-29,845,3,8,0.7777777777777778,8,0.8] + - ["RO",1442095200000,824,2048,1442052000000,1442041200000,-29,845,3,9,0.8888888888888888,9,0.9] + - ["RO",1442041200000,845,2893,1442062800000,null,-29,845,3,10,1.0,10,1.0] + - ["RS",1442091600000,-15,-15,null,1442066400000,-15,813,1,1,0.0,1,0.14285714285714285] + - ["RS",1442066400000,0,-15,null,1442080800000,-15,813,1,2,0.16666666666666666,2,0.42857142857142855] + - ["RS",1442080800000,0,-15,1442091600000,1442019600000,-15,813,1,2,0.16666666666666666,2,0.42857142857142855] + - ["RS",1442019600000,6,-9,1442066400000,1442062800000,-15,813,2,4,0.5,3,0.5714285714285714] + - ["RS",1442062800000,13,4,1442080800000,1442084400000,-15,813,2,5,0.6666666666666666,4,0.7142857142857143] + - ["RS",1442084400000,89,93,1442019600000,1442073600000,-15,813,3,6,0.8333333333333334,5,0.8571428571428571] + - ["RS",1442073600000,813,906,1442062800000,null,-15,813,3,7,1.0,6,1.0] + - ["RU",1442037600000,-324,-324,null,1442026800000,-324,12098,1,1,0.0,1,0.043478260869565216] + - ["RU",1442026800000,0,-324,null,1442030400000,-324,12098,1,2,0.045454545454545456,2,0.08695652173913043] + - ["RU",1442030400000,76,-248,1442037600000,1442062800000,-324,12098,1,3,0.09090909090909091,3,0.13043478260869565] + - ["RU",1442062800000,168,-80,1442026800000,1442023200000,-324,12098,1,4,0.13636363636363635,4,0.17391304347826086] + - ["RU",1442023200000,299,219,1442030400000,1442095200000,-324,12098,1,5,0.18181818181818182,5,0.21739130434782608] + - ["RU",1442095200000,435,654,1442062800000,1442055600000,-324,12098,1,6,0.22727272727272727,6,0.2608695652173913] + - ["RU",1442055600000,499,1153,1442023200000,1442041200000,-324,12098,1,7,0.2727272727272727,7,0.30434782608695654] + - ["RU",1442041200000,580,1733,1442095200000,1442080800000,-324,12098,1,8,0.3181818181818182,8,0.34782608695652173] + - ["RU",1442080800000,655,2388,1442055600000,1442034000000,-324,12098,2,9,0.36363636363636365,9,0.391304347826087] + - ["RU",1442034000000,658,3046,1442041200000,1442048400000,-324,12098,2,10,0.4090909090909091,10,0.43478260869565216] + - ["RU",1442048400000,1027,4073,1442080800000,1442077200000,-324,12098,2,11,0.45454545454545453,11,0.4782608695652174] + - ["RU",1442077200000,1162,5235,1442034000000,1442052000000,-324,12098,2,12,0.5,12,0.5217391304347826] + - ["RU",1442052000000,1214,6449,1442048400000,1442073600000,-324,12098,2,13,0.5454545454545454,13,0.5652173913043478] + - ["RU",1442073600000,1618,8067,1442077200000,1442066400000,-324,12098,2,14,0.5909090909090909,14,0.6086956521739131] + - ["RU",1442066400000,2047,10114,1442052000000,1442019600000,-324,12098,2,15,0.6363636363636364,15,0.6521739130434783] + - ["RU",1442019600000,2214,12328,1442073600000,1442044800000,-324,12098,2,16,0.6818181818181818,16,0.6956521739130435] + - ["RU",1442044800000,2564,14892,1442066400000,1442088000000,-324,12098,3,17,0.7272727272727273,17,0.7391304347826086] + - ["RU",1442088000000,2596,17488,1442019600000,1442091600000,-324,12098,3,18,0.7727272727272727,18,0.782608695652174] + - ["RU",1442091600000,3449,20937,1442044800000,1442059200000,-324,12098,3,19,0.8181818181818182,19,0.8260869565217391] + - ["RU",1442059200000,3902,24839,1442088000000,1442070000000,-324,12098,3,20,0.8636363636363636,20,0.8695652173913043] + - ["RU",1442070000000,4706,29545,1442091600000,1442084400000,-324,12098,3,21,0.9090909090909091,21,0.9130434782608695] + - ["RU",1442084400000,6461,36006,1442059200000,1442098800000,-324,12098,3,22,0.9545454545454546,22,0.9565217391304348] + - ["RU",1442098800000,12098,48104,1442070000000,null,-324,12098,3,23,1.0,23,1.0] + - ["SA",1442037600000,-97,-97,null,1442077200000,-97,1276,1,1,0.0,1,0.125] + - ["SA",1442077200000,-50,-147,null,1442059200000,-97,1276,1,2,0.14285714285714285,2,0.25] + - ["SA",1442059200000,0,-147,1442037600000,1442073600000,-97,1276,1,3,0.2857142857142857,3,0.375] + - ["SA",1442073600000,2,-145,1442077200000,1442055600000,-97,1276,2,4,0.42857142857142855,4,0.5] + - ["SA",1442055600000,11,-134,1442059200000,1442048400000,-97,1276,2,5,0.5714285714285714,5,0.625] + - ["SA",1442048400000,14,-120,1442073600000,1442084400000,-97,1276,2,6,0.7142857142857143,6,0.75] + - ["SA",1442084400000,458,338,1442055600000,1442066400000,-97,1276,3,7,0.8571428571428571,7,0.875] + - ["SA",1442066400000,1276,1614,1442048400000,null,-97,1276,3,8,1.0,8,1.0] + - ["SE",1442048400000,-145,-145,null,1442055600000,-145,1476,1,1,0.0,1,0.06666666666666667] + - ["SE",1442055600000,-5,-150,null,1442091600000,-145,1476,1,2,0.07142857142857142,2,0.13333333333333333] + - ["SE",1442091600000,-1,-151,1442048400000,1442098800000,-145,1476,1,3,0.14285714285714285,3,0.2] + - ["SE",1442098800000,0,-151,1442055600000,1442052000000,-145,1476,1,4,0.21428571428571427,4,0.26666666666666666] + - ["SE",1442052000000,1,-150,1442091600000,1442023200000,-145,1476,1,5,0.2857142857142857,5,0.3333333333333333] + - ["SE",1442023200000,3,-147,1442098800000,1442066400000,-145,1476,2,6,0.35714285714285715,6,0.4] + - ["SE",1442066400000,14,-133,1442052000000,1442030400000,-145,1476,2,7,0.42857142857142855,7,0.4666666666666667] + - ["SE",1442030400000,30,-103,1442023200000,1442084400000,-145,1476,2,8,0.5,8,0.5333333333333333] + - ["SE",1442084400000,37,-66,1442066400000,1442095200000,-145,1476,2,9,0.5714285714285714,9,0.6] + - ["SE",1442095200000,61,-5,1442030400000,1442070000000,-145,1476,2,10,0.6428571428571429,10,0.6666666666666666] + - ["SE",1442070000000,78,73,1442084400000,1442080800000,-145,1476,3,11,0.7142857142857143,11,0.7333333333333333] + - ["SE",1442080800000,89,162,1442095200000,1442041200000,-145,1476,3,12,0.7857142857142857,12,0.8] + - ["SE",1442041200000,91,253,1442070000000,1442019600000,-145,1476,3,13,0.8571428571428571,13,0.8666666666666667] + - ["SE",1442019600000,109,362,1442080800000,1442059200000,-145,1476,3,14,0.9285714285714286,14,0.9333333333333333] + - ["SE",1442059200000,1476,1838,1442041200000,null,-145,1476,3,15,1.0,15,1.0] + - ["SG",1442066400000,0,0,null,1442030400000,0,2758,1,1,0.0,1,0.125] + - ["SG",1442030400000,1,1,null,1442037600000,0,2758,1,2,0.14285714285714285,2,0.25] + - ["SG",1442037600000,3,4,1442066400000,1442048400000,0,2758,1,3,0.2857142857142857,3,0.375] + - ["SG",1442048400000,52,56,1442030400000,1442041200000,0,2758,2,4,0.42857142857142855,4,0.5] + - ["SG",1442041200000,59,115,1442037600000,1442044800000,0,2758,2,5,0.5714285714285714,5,0.625] + - ["SG",1442044800000,77,192,1442048400000,1442062800000,0,2758,2,6,0.7142857142857143,6,0.75] + - ["SG",1442062800000,388,580,1442041200000,1442026800000,0,2758,3,7,0.8571428571428571,7,0.875] + - ["SG",1442026800000,2758,3338,1442044800000,null,0,2758,3,8,1.0,8,1.0] + - ["SI",1442080800000,-45,-45,null,1442091600000,-45,9,1,1,0.0,1,0.5] + - ["SI",1442091600000,9,-36,null,null,-45,9,2,2,1.0,2,1.0] + - ["SK",1442084400000,-92,-92,null,1442037600000,-92,446,1,1,0.0,1,0.16666666666666666] + - ["SK",1442037600000,-1,-93,null,1442062800000,-92,446,1,2,0.2,2,0.3333333333333333] + - ["SK",1442062800000,6,-87,1442084400000,1442098800000,-92,446,2,3,0.4,3,0.5] + - ["SK",1442098800000,7,-80,1442037600000,1442052000000,-92,446,2,4,0.6,4,0.6666666666666666] + - ["SK",1442052000000,13,-67,1442062800000,1442073600000,-92,446,3,5,0.8,5,0.8333333333333334] + - ["SK",1442073600000,446,379,1442098800000,null,-92,446,3,6,1.0,6,1.0] + - ["SV",1442019600000,-1,-1,null,1442088000000,-1,106,1,1,0.0,1,0.3333333333333333] + - ["SV",1442088000000,9,8,null,1442084400000,-1,106,2,2,0.5,2,0.6666666666666666] + - ["SV",1442084400000,106,114,1442019600000,null,-1,106,3,3,1.0,3,1.0] + - ["TH",1442062800000,-46,-46,null,1442066400000,-46,110,1,1,0.0,1,0.1111111111111111] + - ["TH",1442066400000,-34,-80,null,1442052000000,-46,110,1,2,0.125,2,0.2222222222222222] + - ["TH",1442052000000,-22,-102,1442062800000,1442034000000,-46,110,1,3,0.25,3,0.3333333333333333] + - ["TH",1442034000000,0,-102,1442066400000,1442055600000,-46,110,2,4,0.375,4,0.6666666666666666] + - ["TH",1442055600000,0,-102,1442052000000,1442070000000,-46,110,2,4,0.375,4,0.6666666666666666] + - ["TH",1442070000000,0,-102,1442034000000,1442041200000,-46,110,2,4,0.375,4,0.6666666666666666] + - ["TH",1442041200000,3,-99,1442055600000,1442084400000,-46,110,3,7,0.75,5,0.7777777777777778] + - ["TH",1442084400000,13,-86,1442070000000,1442044800000,-46,110,3,8,0.875,6,0.8888888888888888] + - ["TH",1442044800000,110,24,1442041200000,null,-46,110,3,9,1.0,7,1.0] + - ["TJ",1442048400000,1471,1471,null,null,1471,1471,1,1,0.0,1,1.0] + - ["TN",1442098800000,-9,-9,null,null,-9,-9,1,1,0.0,1,1.0] + - ["TR",1442095200000,-29,-29,null,1442080800000,-29,3048,1,1,0.0,1,0.06666666666666667] + - ["TR",1442080800000,-1,-30,null,1442041200000,-29,3048,1,2,0.07142857142857142,2,0.13333333333333333] + - ["TR",1442041200000,1,-29,1442095200000,1442044800000,-29,3048,1,3,0.14285714285714285,3,0.2] + - ["TR",1442044800000,41,12,1442080800000,1442052000000,-29,3048,1,4,0.21428571428571427,4,0.3333333333333333] + - ["TR",1442052000000,41,53,1442041200000,1442066400000,-29,3048,1,4,0.21428571428571427,4,0.3333333333333333] + - ["TR",1442066400000,85,138,1442044800000,1442048400000,-29,3048,2,6,0.35714285714285715,5,0.4] + - ["TR",1442048400000,88,226,1442052000000,1442077200000,-29,3048,2,7,0.42857142857142855,6,0.4666666666666667] + - ["TR",1442077200000,89,315,1442066400000,1442084400000,-29,3048,2,8,0.5,7,0.5333333333333333] + - ["TR",1442084400000,170,485,1442048400000,1442070000000,-29,3048,2,9,0.5714285714285714,8,0.6] + - ["TR",1442070000000,236,721,1442077200000,1442055600000,-29,3048,2,10,0.6428571428571429,9,0.6666666666666666] + - ["TR",1442055600000,299,1020,1442084400000,1442023200000,-29,3048,3,11,0.7142857142857143,10,0.7333333333333333] + - ["TR",1442023200000,306,1326,1442070000000,1442062800000,-29,3048,3,12,0.7857142857142857,11,0.8] + - ["TR",1442062800000,315,1641,1442055600000,1442088000000,-29,3048,3,13,0.8571428571428571,12,0.8666666666666667] + - ["TR",1442088000000,2389,4030,1442023200000,1442091600000,-29,3048,3,14,0.9285714285714286,13,0.9333333333333333] + - ["TR",1442091600000,3048,7078,1442062800000,null,-29,3048,3,15,1.0,14,1.0] + - ["TT",1442088000000,9,9,null,null,9,9,1,1,0.0,1,1.0] + - ["TW",1442062800000,-272,-272,null,1442059200000,-272,772,1,1,0.0,1,0.045454545454545456] + - ["TW",1442059200000,-157,-429,null,1442095200000,-272,772,1,2,0.047619047619047616,2,0.09090909090909091] + - ["TW",1442095200000,-77,-506,1442062800000,1442098800000,-272,772,1,3,0.09523809523809523,3,0.13636363636363635] + - ["TW",1442098800000,-60,-566,1442059200000,1442019600000,-272,772,1,4,0.14285714285714285,4,0.18181818181818182] + - ["TW",1442019600000,0,-566,1442095200000,1442030400000,-272,772,1,5,0.19047619047619047,5,0.3181818181818182] + - ["TW",1442030400000,0,-566,1442098800000,1442084400000,-272,772,1,5,0.19047619047619047,5,0.3181818181818182] + - ["TW",1442084400000,0,-566,1442019600000,1442044800000,-272,772,1,5,0.19047619047619047,5,0.3181818181818182] + - ["TW",1442044800000,24,-542,1442030400000,1442052000000,-272,772,1,8,0.3333333333333333,6,0.45454545454545453] + - ["TW",1442052000000,24,-518,1442084400000,1442080800000,-272,772,2,8,0.3333333333333333,6,0.45454545454545453] + - ["TW",1442080800000,24,-494,1442044800000,1442055600000,-272,772,2,8,0.3333333333333333,6,0.45454545454545453] + - ["TW",1442055600000,48,-446,1442052000000,1442048400000,-272,772,2,11,0.47619047619047616,7,0.5] + - ["TW",1442048400000,75,-371,1442080800000,1442016000000,-272,772,2,12,0.5238095238095238,8,0.5454545454545454] + - ["TW",1442016000000,92,-279,1442055600000,1442023200000,-272,772,2,13,0.5714285714285714,9,0.5909090909090909] + - ["TW",1442023200000,97,-182,1442048400000,1442034000000,-272,772,2,14,0.6190476190476191,10,0.6363636363636364] + - ["TW",1442034000000,143,-39,1442016000000,1442037600000,-272,772,2,15,0.6666666666666666,11,0.6818181818181818] + - ["TW",1442037600000,266,227,1442023200000,1442041200000,-272,772,3,16,0.7142857142857143,12,0.7272727272727273] + - ["TW",1442041200000,366,593,1442034000000,1442070000000,-272,772,3,17,0.7619047619047619,13,0.7727272727272727] + - ["TW",1442070000000,485,1078,1442037600000,1442077200000,-272,772,3,18,0.8095238095238095,14,0.8181818181818182] + - ["TW",1442077200000,502,1580,1442041200000,1442066400000,-272,772,3,19,0.8571428571428571,15,0.8636363636363636] + - ["TW",1442066400000,624,2204,1442070000000,1442026800000,-272,772,3,20,0.9047619047619048,16,0.9090909090909091] + - ["TW",1442026800000,680,2884,1442077200000,1442073600000,-272,772,3,21,0.9523809523809523,17,0.9545454545454546] + - ["TW",1442073600000,772,3656,1442066400000,null,-272,772,3,22,1.0,18,1.0] + - ["UA",1442091600000,-388,-388,null,1442077200000,-388,14202,1,1,0.0,1,0.05263157894736842] + - ["UA",1442077200000,-181,-569,null,1442095200000,-388,14202,1,2,0.05555555555555555,2,0.10526315789473684] + - ["UA",1442095200000,-30,-599,1442091600000,1442088000000,-388,14202,1,3,0.1111111111111111,3,0.15789473684210525] + - ["UA",1442088000000,-21,-620,1442077200000,1442059200000,-388,14202,1,4,0.16666666666666666,4,0.21052631578947367] + - ["UA",1442059200000,-2,-622,1442095200000,1442037600000,-388,14202,1,5,0.2222222222222222,5,0.2631578947368421] + - ["UA",1442037600000,-1,-623,1442088000000,1442080800000,-388,14202,1,6,0.2777777777777778,6,0.3684210526315789] + - ["UA",1442080800000,-1,-624,1442059200000,1442048400000,-388,14202,1,6,0.2777777777777778,6,0.3684210526315789] + - ["UA",1442048400000,2,-622,1442037600000,1442084400000,-388,14202,2,8,0.3888888888888889,7,0.42105263157894735] + - ["UA",1442084400000,5,-617,1442080800000,1442098800000,-388,14202,2,9,0.4444444444444444,8,0.47368421052631576] + - ["UA",1442098800000,38,-579,1442048400000,1442041200000,-388,14202,2,10,0.5,9,0.5263157894736842] + - ["UA",1442041200000,74,-505,1442084400000,1442044800000,-388,14202,2,11,0.5555555555555556,10,0.5789473684210527] + - ["UA",1442044800000,280,-225,1442098800000,1442066400000,-388,14202,2,12,0.6111111111111112,11,0.631578947368421] + - ["UA",1442066400000,296,71,1442041200000,1442052000000,-388,14202,2,13,0.6666666666666666,12,0.6842105263157895] + - ["UA",1442052000000,410,481,1442044800000,1442062800000,-388,14202,3,14,0.7222222222222222,13,0.7368421052631579] + - ["UA",1442062800000,773,1254,1442066400000,1442070000000,-388,14202,3,15,0.7777777777777778,14,0.7894736842105263] + - ["UA",1442070000000,1733,2987,1442052000000,1442034000000,-388,14202,3,16,0.8333333333333334,15,0.8421052631578947] + - ["UA",1442034000000,3468,6455,1442062800000,1442073600000,-388,14202,3,17,0.8888888888888888,16,0.8947368421052632] + - ["UA",1442073600000,4241,10696,1442070000000,1442055600000,-388,14202,3,18,0.9444444444444444,17,0.9473684210526315] + - ["UA",1442055600000,14202,24898,1442034000000,null,-388,14202,3,19,1.0,18,1.0] + - ["UG",1442070000000,1,1,null,null,1,1,1,1,0.0,1,1.0] + - ["US",1442048400000,-466,-466,null,1442052000000,-466,4001,1,1,0.0,1,0.041666666666666664] + - ["US",1442052000000,-2,-468,null,1442016000000,-466,4001,1,2,0.043478260869565216,2,0.08333333333333333] + - ["US",1442016000000,0,-468,1442048400000,1442059200000,-466,4001,1,3,0.08695652173913043,3,0.125] + - ["US",1442059200000,11,-457,1442052000000,1442062800000,-466,4001,1,4,0.13043478260869565,4,0.16666666666666666] + - ["US",1442062800000,47,-410,1442016000000,1442044800000,-466,4001,1,5,0.17391304347826086,5,0.20833333333333334] + - ["US",1442044800000,139,-271,1442059200000,1442055600000,-466,4001,1,6,0.21739130434782608,6,0.25] + - ["US",1442055600000,156,-115,1442062800000,1442095200000,-466,4001,1,7,0.2608695652173913,7,0.2916666666666667] + - ["US",1442095200000,416,301,1442044800000,1442066400000,-466,4001,1,8,0.30434782608695654,8,0.3333333333333333] + - ["US",1442066400000,772,1073,1442055600000,1442019600000,-466,4001,2,9,0.34782608695652173,9,0.375] + - ["US",1442019600000,1043,2116,1442095200000,1442073600000,-466,4001,2,10,0.391304347826087,10,0.4166666666666667] + - ["US",1442073600000,1100,3216,1442066400000,1442026800000,-466,4001,2,11,0.43478260869565216,11,0.4583333333333333] + - ["US",1442026800000,1512,4728,1442019600000,1442088000000,-466,4001,2,12,0.4782608695652174,12,0.5] + - ["US",1442088000000,1691,6419,1442073600000,1442041200000,-466,4001,2,13,0.5217391304347826,13,0.5416666666666666] + - ["US",1442041200000,1999,8418,1442026800000,1442030400000,-466,4001,2,14,0.5652173913043478,14,0.5833333333333334] + - ["US",1442030400000,2023,10441,1442088000000,1442077200000,-466,4001,2,15,0.6086956521739131,15,0.625] + - ["US",1442077200000,2168,12609,1442041200000,1442091600000,-466,4001,2,16,0.6521739130434783,16,0.6666666666666666] + - ["US",1442091600000,2502,15111,1442030400000,1442084400000,-466,4001,3,17,0.6956521739130435,17,0.7083333333333334] + - ["US",1442084400000,2523,17634,1442077200000,1442023200000,-466,4001,3,18,0.7391304347826086,18,0.75] + - ["US",1442023200000,2844,20478,1442091600000,1442070000000,-466,4001,3,19,0.782608695652174,19,0.7916666666666666] + - ["US",1442070000000,3505,23983,1442084400000,1442098800000,-466,4001,3,20,0.8260869565217391,20,0.8333333333333334] + - ["US",1442098800000,3575,27558,1442023200000,1442034000000,-466,4001,3,21,0.8695652173913043,21,0.875] + - ["US",1442034000000,3648,31206,1442070000000,1442037600000,-466,4001,3,22,0.9130434782608695,22,0.9166666666666666] + - ["US",1442037600000,3675,34881,1442098800000,1442080800000,-466,4001,3,23,0.9565217391304348,23,0.9583333333333334] + - ["US",1442080800000,4001,38882,1442034000000,null,-466,4001,3,24,1.0,24,1.0] + - ["UY",1442073600000,-42,-42,null,1442037600000,-42,517,1,1,0.0,1,0.14285714285714285] + - ["UY",1442037600000,1,-41,null,1442077200000,-42,517,1,2,0.16666666666666666,2,0.2857142857142857] + - ["UY",1442077200000,23,-18,1442073600000,1442026800000,-42,517,1,3,0.3333333333333333,3,0.42857142857142855] + - ["UY",1442026800000,76,58,1442037600000,1442019600000,-42,517,2,4,0.5,4,0.5714285714285714] + - ["UY",1442019600000,77,135,1442077200000,1442070000000,-42,517,2,5,0.6666666666666666,5,0.7142857142857143] + - ["UY",1442070000000,284,419,1442026800000,1442023200000,-42,517,3,6,0.8333333333333334,6,0.8571428571428571] + - ["UY",1442023200000,517,936,1442019600000,null,-42,517,3,7,1.0,7,1.0] + - ["UZ",1442044800000,1369,1369,null,null,1369,1369,1,1,0.0,1,1.0] + - ["VE",1442026800000,-17,-17,null,1442034000000,-17,420,1,1,0.0,1,0.1] + - ["VE",1442034000000,-2,-19,null,1442098800000,-17,420,1,2,0.1111111111111111,2,0.2] + - ["VE",1442098800000,9,-10,1442026800000,1442066400000,-17,420,1,3,0.2222222222222222,3,0.3] + - ["VE",1442066400000,18,8,1442034000000,1442095200000,-17,420,1,4,0.3333333333333333,4,0.4] + - ["VE",1442095200000,35,43,1442098800000,1442030400000,-17,420,2,5,0.4444444444444444,5,0.5] + - ["VE",1442030400000,51,94,1442066400000,1442084400000,-17,420,2,6,0.5555555555555556,6,0.6] + - ["VE",1442084400000,60,154,1442095200000,1442023200000,-17,420,2,7,0.6666666666666666,7,0.7] + - ["VE",1442023200000,115,269,1442030400000,1442077200000,-17,420,3,8,0.7777777777777778,8,0.8] + - ["VE",1442077200000,412,681,1442084400000,1442070000000,-17,420,3,9,0.8888888888888888,9,0.9] + - ["VE",1442070000000,420,1101,1442023200000,null,-17,420,3,10,1.0,10,1.0] + - ["VG",1442062800000,-238,-238,null,null,-238,-238,1,1,0.0,1,1.0] + - ["VN",1442034000000,-29,-29,null,1442048400000,-29,811,1,1,0.0,1,0.07692307692307693] + - ["VN",1442048400000,-15,-44,null,1442037600000,-29,811,1,2,0.08333333333333333,2,0.15384615384615385] + - ["VN",1442037600000,-11,-55,1442034000000,1442084400000,-29,811,1,3,0.16666666666666666,3,0.23076923076923078] + - ["VN",1442084400000,-10,-65,1442048400000,1442023200000,-29,811,1,4,0.25,4,0.3076923076923077] + - ["VN",1442023200000,-9,-74,1442037600000,1442041200000,-29,811,1,5,0.3333333333333333,5,0.38461538461538464] + - ["VN",1442041200000,0,-74,1442084400000,1442059200000,-29,811,2,6,0.4166666666666667,6,0.46153846153846156] + - ["VN",1442059200000,8,-66,1442023200000,1442055600000,-29,811,2,7,0.5,7,0.5384615384615384] + - ["VN",1442055600000,37,-29,1442041200000,1442026800000,-29,811,2,8,0.5833333333333334,8,0.6153846153846154] + - ["VN",1442026800000,63,34,1442059200000,1442052000000,-29,811,2,9,0.6666666666666666,9,0.6923076923076923] + - ["VN",1442052000000,90,124,1442055600000,1442062800000,-29,811,3,10,0.75,10,0.7692307692307693] + - ["VN",1442062800000,146,270,1442026800000,1442070000000,-29,811,3,11,0.8333333333333334,11,0.8461538461538461] + - ["VN",1442070000000,479,749,1442052000000,1442066400000,-29,811,3,12,0.9166666666666666,12,0.9230769230769231] + - ["VN",1442066400000,811,1560,1442062800000,null,-29,811,3,13,1.0,13,1.0] + - ["ZA",1442034000000,-3,-3,null,1442070000000,-3,79,1,1,0.0,1,0.2] + - ["ZA",1442070000000,0,-3,null,1442091600000,-3,79,1,2,0.25,2,0.4] + - ["ZA",1442091600000,1,-2,1442034000000,1442059200000,-3,79,2,3,0.5,3,0.6] + - ["ZA",1442059200000,50,48,1442070000000,1442048400000,-3,79,2,4,0.75,4,0.8] + - ["ZA",1442048400000,79,127,1442091600000,null,-3,79,3,5,1.0,5,1.0] + - ["ZM",1442041200000,133,133,null,null,133,133,1,1,0.0,1,1.0] + - ["ZW",1442044800000,0,0,null,1442048400000,0,254,1,1,0.0,1,0.5] + - ["ZW",1442048400000,254,254,null,null,0,254,2,2,1.0,2,1.0] diff --git a/sql/src/test/resources/calcite/tests/window/wikipediaScanWindow.sqlTest b/sql/src/test/resources/calcite/tests/window/wikipediaScanWindow.sqlTest index e5d8584827e0..cce181855c8d 100644 --- a/sql/src/test/resources/calcite/tests/window/wikipediaScanWindow.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/wikipediaScanWindow.sqlTest @@ -20,251 +20,251 @@ expectedOperators: offset: -1 expectedResults: - - [ 1442055495852,"1.121.160.49","Walker, Texas Ranger","" ] - - [ 1442056175946,"1.121.160.49","Walker, Texas Ranger","Walker, Texas Ranger" ] - - [ 1442062719426,"1.121.160.49","Richard Norton (actor)","Walker, Texas Ranger" ] - - [ 1442053449011,"1.123.133.249","Inside Out","" ] - - [ 1442030282870,"1.123.149.111","Christina Ricci","" ] - - [ 1442062306734,"1.129.96.160","Andrew Hastie (politician)","" ] - - [ 1442052408695,"1.129.96.219","Dorrigo Steam Railway and Museum","" ] - - [ 1442049229239,"1.129.96.242","Dorrigo Steam Railway and Museum","" ] - - [ 1442046541914,"1.152.96.170","Ayrton Senna","" ] - - [ 1442056892106,"101.128.232.140","清水浩","" ] - - [ 1442057005310,"101.128.232.140","清水浩","清水浩" ] - - [ 1442033283609,"101.140.3.146","水原茂","" ] - - [ 1442036282693,"101.162.15.184","The Biggest Loser (U.S. TV series)","" ] - - [ 1442036494525,"101.162.15.184","The Biggest Loser (U.S. TV series)","The Biggest Loser (U.S. TV series)" ] - - [ 1442053239190,"101.162.15.184","The Biggest Loser (season 3)","The Biggest Loser (U.S. TV series)" ] - - [ 1442094543511,"101.162.15.184","The Biggest Loser (season 3)","The Biggest Loser (season 3)" ] - - [ 1442054030928,"101.162.192.189","Second Keating Ministry","" ] - - [ 1442054439219,"101.162.192.189","Second Keating Ministry","Second Keating Ministry" ] - - [ 1442062617292,"101.180.202.153","2015 AFL season","" ] - - [ 1442042291553,"103.18.40.202","Wikipedia:Auskunft","" ] - - [ 1442030546957,"103.20.255.191","Same-sex marriage in New Zealand","" ] - - [ 1442028937717,"103.225.121.237","AKB48握手会傷害事件","" ] - - [ 1442025765045,"103.56.218.196","욱일기","" ] - - [ 1442018949298,"106.131.175.193","正岡大介","" ] - - [ 1442061568629,"106.132.207.6","白石涼子","" ] - - [ 1442074511372,"106.150.80.109","ノート:アズ熊谷","" ] - - [ 1442022640886,"106.161.56.138","山口敬之","" ] - - [ 1442061180690,"106.188.137.190","救急救命士養成所","" ] - - [ 1442061491224,"106.188.137.190","救急救命士","救急救命士養成所" ] - - [ 1442100695886,"106.188.187.22","Petronas Towers","" ] - - [ 1442033017165,"106.188.237.163","ダウンロード違法化","" ] - - [ 1442019638402,"110.1.177.43","ユーロビート","" ] - - [ 1442039765889,"110.1.177.43","虹の都へ","ユーロビート" ] - - [ 1442097432832,"110.20.158.121","Flavia Pennetta","" ] - - [ 1442097158335,"110.20.234.69","Yaoi","" ] - - [ 1442101346090,"110.20.234.69","Yaoi fandom","Yaoi" ] - - [ 1442022181729,"110.21.43.182","Planet Hollywood Resort & Casino","" ] - - [ 1442054156682,"110.22.186.92","Aris F.C. (Thessaloniki)","" ] - - [ 1442060921634,"110.32.28.203","Politics of Réunion","" ] - - [ 1442095172937,"110.67.252.181","Shinya","" ] - - [ 1442073188151,"111.216.35.85","うしおそうじ","" ] - - [ 1442070741096,"113.197.250.14","フィンテック","" ] - - [ 1442065282546,"113.36.127.77","福岡県立修猷館高等学校の人物一覧","" ] - - [ 1442020617093,"113.38.112.244","エフエム東京","" ] - - [ 1442043701284,"114.148.67.27","オウム真理教の修行","" ] - - [ 1442057752095,"114.149.159.81","鮎川誠","" ] - - [ 1442030463066,"114.149.98.37","2015年全米オープン (テニス)","" ] - - [ 1442036595334,"114.161.17.122","京都放送","" ] - - [ 1442085773238,"114.163.215.4","コンコルド墜落事故","" ] - - [ 1442019941523,"114.165.9.29","架空の乗り物一覧","" ] - - [ 1442073082802,"114.167.235.83","ランドール・パーク","" ] - - [ 1442036882364,"114.168.102.41","杉浦圭子","" ] - - [ 1442046282828,"114.186.112.218","オイルショック","" ] - - [ 1442030866019,"115.64.101.40","Snow leopard","" ] - - [ 1442030416128,"115.69.63.229","Ibrahim Sunday","" ] - - [ 1442046588882,"117.18.154.84","969運動","" ] - - [ 1442022015086,"117.55.68.51","セルゲーエフ","" ] - - [ 1442022520647,"117.55.68.51","セルゲーエワ","セルゲーエフ" ] - - [ 1442063719891,"117.74.50.110","ソード・ワールド2.0リプレイ from USA","" ] - - [ 1442039556838,"118.106.18.200","今夜もオトパラ!","" ] - - [ 1442049541582,"118.106.18.200","青森放送","今夜もオトパラ!" ] - - [ 1442047677181,"118.109.38.229","ケイゾク","" ] - - [ 1442049350391,"118.109.38.229","ケイゾク","ケイゾク" ] - - [ 1442063820782,"118.109.38.229","ケイゾク","ケイゾク" ] - - [ 1442080232899,"118.111.38.174","外傷初期診療ガイドライン日本版","" ] - - [ 1442033322693,"118.238.237.196","推理小説","" ] - - [ 1442090528892,"119.104.157.254","おかしな二人","" ] - - [ 1442075598708,"119.104.36.170","パスポート","" ] - - [ 1442038707947,"119.170.41.230","スーパーマン (1978年の映画)","" ] - - [ 1442031883720,"119.25.37.181","六甲人工島線","" ] - - [ 1442018890048,"119.26.148.34","青野武","" ] - - [ 1442046705300,"119.26.148.34","クッキングパパの登場人物","青野武" ] - - [ 1442058062503,"119.26.148.34","林先生が驚く初耳学!","クッキングパパの登場人物" ] - - [ 1442059524102,"119.26.148.34","エンジェル・ハート","林先生が驚く初耳学!" ] - - [ 1442065445099,"119.26.148.34","本田望結","エンジェル・ハート" ] - - [ 1442068465888,"119.63.112.86","DIABOLIK LOVERS","" ] - - [ 1442069164239,"119.63.112.86","GANGSTA.","DIABOLIK LOVERS" ] - - [ 1442091530861,"119.63.112.86","BS-TBS独占放送深夜アニメ枠","GANGSTA." ] - - [ 1442030131807,"119.72.245.161","The VISIONALUX","" ] - - [ 1442047214542,"120.147.6.7","African Union Mission to Somalia","" ] - - [ 1442032176994,"121.102.43.4","利用者‐会話:Yasuyuki Takeo","" ] - - [ 1442066932287,"121.117.180.156","Ulmendorf","" ] - - [ 1442023340480,"121.208.92.28","Moreton Bay","" ] - - [ 1442050348689,"121.211.56.55","Dominique Dunne","" ] - - [ 1442100154443,"121.211.82.121","List of Harry Potter characters","" ] - - [ 1442048444641,"121.223.129.191","List of dinosaur genera","" ] - - [ 1442027637932,"121.45.214.80","Total Drama Presents: The Ridonculous Race","" ] - - [ 1442054470231,"121.93.47.91","チキンハート","" ] - - [ 1442069124156,"121.93.97.147","機甲創世記モスピーダ","" ] - - [ 1442095062216,"122.108.156.100","United States presidential election, 1892","" ] - - [ 1442098671579,"122.108.156.100","United States presidential election, 1892","United States presidential election, 1892" ] - - [ 1442023533650,"122.25.10.78","星のカービィ! も〜れつプププアワー!","" ] - - [ 1442024788039,"122.25.10.78","陸上防衛隊まおちゃん","星のカービィ! も〜れつプププアワー!" ] - - [ 1442072416878,"122.25.10.78","黒鷺死体宅配便","陸上防衛隊まおちゃん" ] - - [ 1442074382146,"122.25.10.78","ロリコンフェニックス","黒鷺死体宅配便" ] - - [ 1442072607975,"123.100.63.20","User:MichelleFranklin/AustralianSkeptics","" ] - - [ 1442084541627,"123.217.1.75","JOIN ALIVE","" ] - - [ 1442056682107,"123.223.224.148","相馬康一","" ] - - [ 1442056818652,"123.223.224.148","杉崎亮","相馬康一" ] - - [ 1442057183557,"123.223.224.148","日高里菜","杉崎亮" ] - - [ 1442037245734,"124.148.87.34","List of Doctor Who audio plays by Big Finish","" ] - - [ 1442038279908,"124.148.87.34","List of Doctor Who audio plays by Big Finish","List of Doctor Who audio plays by Big Finish" ] - - [ 1442039505649,"124.148.87.34","List of Doctor Who audio plays by Big Finish","List of Doctor Who audio plays by Big Finish" ] - - [ 1442051202571,"124.148.87.34","List of Doctor Who audio plays by Big Finish","List of Doctor Who audio plays by Big Finish" ] - - [ 1442027954979,"124.169.165.146","Talk:Peter O'Toole","" ] - - [ 1442096498423,"124.169.17.234","Coca-Cola formula","" ] - - [ 1442046696410,"124.170.55.214","Northern Football League (Australia)","" ] - - [ 1442049310216,"124.171.44.159","Liberal Democratic Party (Australia)","" ] - - [ 1442035151510,"124.188.44.154","List of Doctor Who audio plays by Big Finish","" ] - - [ 1442092615464,"124.45.73.228","鹿児島県立加治木高等学校","" ] - - [ 1442023710710,"125.168.85.156","Beatrix Potter","" ] - - [ 1442050705594,"125.192.149.97","ドカチン","" ] - - [ 1442063450156,"125.198.182.94","交響曲第5番 (チャイコフスキー)","" ] - - [ 1442036586983,"125.2.29.54","バトルスピリッツ 烈火魂","" ] - - [ 1442020773422,"125.205.166.177","粉河町","" ] - - [ 1442070671364,"126.10.25.69","民王","" ] - - [ 1442065314043,"126.120.17.52","ガンズ・アンド・ローゼズ","" ] - - [ 1442057530890,"126.144.8.136","小柳友貴美","" ] - - [ 1442057729757,"126.144.8.136","張込み","小柳友貴美" ] - - [ 1442058237893,"126.144.8.136","篠原涼子","張込み" ] - - [ 1442058403152,"126.144.8.136","瀬戸朝香","篠原涼子" ] - - [ 1442058944024,"126.144.8.136","顔田顔彦","瀬戸朝香" ] - - [ 1442059192896,"126.144.8.136","山中聡","顔田顔彦" ] - - [ 1442064154338,"126.29.44.172","アンフェア the answer","" ] - - [ 1442046633404,"126.64.184.114","中山道","" ] - - [ 1442045829839,"130.54.130.227","静岡空港","" ] - - [ 1442056451492,"137.147.143.241","Royal Australian Air Force","" ] - - [ 1442020256428,"137.147.165.107","Michael Sharkey","" ] - - [ 1442045368765,"139.218.187.26","National Youth Competition (rugby league)","" ] - - [ 1442021132744,"14.201.22.221","2015 Roger Federer tennis season","" ] - - [ 1442078715198,"14.203.177.143","Captain (cricket)","" ] - - [ 1442063042912,"153.170.91.23","一色氏","" ] - - [ 1442040686108,"153.200.114.68","芋たこなんきん","" ] - - [ 1442042536291,"153.200.114.68","ごちそうさん (2013年のテレビドラマ)","芋たこなんきん" ] - - [ 1442042555091,"153.200.114.68","ごちそうさん (2013年のテレビドラマ)","ごちそうさん (2013年のテレビドラマ)" ] - - [ 1442024836364,"153.207.13.117","リーガ・エスパニョーラ","" ] - - [ 1442055615954,"153.230.62.16","刺客 聶隱娘","" ] - - [ 1442079228153,"161.202.72.168","Shaun King (activist)","" ] - - [ 1442080592078,"161.202.72.168","Talk:Shaun King (activist)","Shaun King (activist)" ] - - [ 1442082673917,"161.202.72.168","Talk:Shaun King (activist)","Talk:Shaun King (activist)" ] - - [ 1442054785180,"180.17.65.26","88式鉄帽","" ] - - [ 1442064037343,"180.27.228.108","虎ノ門事件","" ] - - [ 1442092840431,"180.54.251.210","鹿児島県立加治木高等学校","" ] - - [ 1442026399564,"182.168.99.4","ミャンマー","" ] - - [ 1442080053112,"182.173.142.88","ドクタースランプ","" ] - - [ 1442080079822,"182.173.142.88","ドクタースランプ","ドクタースランプ" ] - - [ 1442071861338,"188.23.31.111","Diskussion:Löwengrube (Serie)","" ] - - [ 1442041218594,"202.174.58.102","テッド (映画)","" ] - - [ 1442043359400,"202.174.58.102","立川流 (密教)","テッド (映画)" ] - - [ 1442050346906,"203.112.37.97","ABCフレッシュアップベースボール","" ] - - [ 1442037360618,"203.87.72.77","Hakoah Sydney City East FC","" ] - - [ 1442033433557,"210.128.82.94","列車種別","" ] - - [ 1442059451406,"210.132.145.235","キン肉マンスーパー・フェニックス","" ] - - [ 1442028766085,"210.145.159.111","小桜エツコ","" ] - - [ 1442047728381,"210.159.186.209","ハウス食品","" ] - - [ 1442073460368,"210.160.37.25","沖野晃司","" ] - - [ 1442073648703,"210.160.37.25","沖野晃司","沖野晃司" ] - - [ 1442025498133,"210.171.30.75","車塚 (伊丹市)","" ] - - [ 1442053077021,"210.194.52.87","小田急多摩線","" ] - - [ 1442079405551,"210.199.238.238","ズバリ!当てましょう","" ] - - [ 1442084605765,"210.199.238.238","インド","ズバリ!当てましょう" ] - - [ 1442048760081,"211.0.97.62","アフガニスタン紛争 (1978年-1989年)","" ] - - [ 1442058690158,"211.1.73.194","筑波山","" ] - - [ 1442066152552,"211.135.251.28","FNSスーパースペシャルテレビ夢列島","" ] - - [ 1442090789576,"212.95.7.43","Pamela (Vorname)","" ] - - [ 1442093822018,"212.95.7.57","Eşkıya Dünyaya Hükümdar Olmaz (dizi)","" ] - - [ 1442052594311,"213.102.112.181","Diskussion:Schlacht um die Krim","" ] - - [ 1442055194535,"213.102.112.181","Diskussion:Schlacht um die Krim","Diskussion:Schlacht um die Krim" ] - - [ 1442055264461,"213.102.112.181","Diskussion:Schlacht um die Krim","Diskussion:Schlacht um die Krim" ] - - [ 1442087241623,"213.240.105.56","16. Mai","" ] - - [ 1442073949064,"218.110.166.206","エゴグラム","" ] - - [ 1442048197658,"218.227.98.24","福岡空港","" ] - - [ 1442031289907,"218.45.13.57","サムライエッジ","" ] - - [ 1442043817524,"219.102.143.16","ヒルナンデス!","" ] - - [ 1442076175461,"219.106.24.95","中村れい子","" ] - - [ 1442076262194,"219.106.24.95","阿藤快","中村れい子" ] - - [ 1442076443347,"219.106.24.95","西岡善信","阿藤快" ] - - [ 1442067732777,"219.106.70.167","アンフェア the end","" ] - - [ 1442047016164,"219.110.114.95","永田久光","" ] - - [ 1442039078679,"219.110.28.111","こちら葛飾区亀有公園前派出所の登場人物","" ] - - [ 1442039059890,"219.112.132.106","野口茂樹","" ] - - [ 1442039204914,"219.112.132.106","野口茂樹","野口茂樹" ] - - [ 1442039593604,"219.112.132.106","井場友和","野口茂樹" ] - - [ 1442042116370,"219.112.132.106","高村祐","井場友和" ] - - [ 1442043631086,"219.112.132.106","岩本勉","高村祐" ] - - [ 1442033187371,"219.127.27.114","あんハピ♪","" ] - - [ 1442033425162,"219.127.27.114","林田理沙","あんハピ♪" ] - - [ 1442034666225,"219.127.27.114","八木沼純子","林田理沙" ] - - [ 1442026079559,"219.127.82.26","Wikipedia:サンドボックス","" ] - - [ 1442047519920,"219.161.34.177","小川虎之助","" ] - - [ 1442088730524,"219.171.105.167","2015 FIFA U-20ワールドカップ","" ] - - [ 1442090473730,"219.171.105.167","AFC U-19女子選手権2015","2015 FIFA U-20ワールドカップ" ] - - [ 1442098469728,"219.182.78.3","宮里久美","" ] - - [ 1442029124664,"219.198.137.251","逆転イッパツマン","" ] - - [ 1442048505685,"219.51.50.31","突撃!ナマイキTV","" ] - - [ 1442053430316,"219.51.50.31","突撃!ナマイキTV","突撃!ナマイキTV" ] - - [ 1442075782897,"219.67.166.28","オリンピア・ミラノ","" ] - - [ 1442035985727,"220.109.120.102","ワールドサッカー ウイニングイレブン 2016","" ] - - [ 1442036083342,"220.210.178.20","櫻井よしこ","" ] - - [ 1442024997507,"220.212.136.113","国際地学オリンピック","" ] - - [ 1442024799232,"220.213.14.136","甲府市中心市街地活性化基本計画","" ] - - [ 1442025695124,"220.213.14.136","放置自転車","甲府市中心市街地活性化基本計画" ] - - [ 1442026228735,"220.213.14.136","甲府市中心市街地活性化基本計画","放置自転車" ] - - [ 1442051686890,"220.62.54.3","坂上忍の成長マン!!","" ] - - [ 1442044538982,"221.170.137.161","週末キッズタイム","" ] - - [ 1442053936462,"221.77.244.149","ボーダーブレイク","" ] - - [ 1442101230028,"222.12.9.108","ネプリーグのクイズ・企画一覧","" ] - - [ 1442046505197,"222.148.228.64","おじゃる丸のエピソード一覧","" ] - - [ 1442046590842,"222.148.228.64","おじゃる丸","おじゃる丸のエピソード一覧" ] - - [ 1442051878307,"223.132.42.72","THE IDOLM@STER CINDERELLA GIRLS ANIMATION PROJECT","" ] - - [ 1442027068163,"49.128.148.160","パンク・ファッション","" ] - - [ 1442035102420,"49.181.161.0","Hazelbrook railway station","" ] - - [ 1442059510611,"49.183.149.106","2015 AFL finals series","" ] - - [ 1442045663055,"49.199.44.74","List of fictional European countries","" ] - - [ 1442047899247,"49.199.44.74","List of fictional European countries","List of fictional European countries" ] - - [ 1442051573911,"49.199.44.74","List of fictional European countries","List of fictional European countries" ] - - [ 1442051658029,"49.199.44.74","List of fictional European countries","List of fictional European countries" ] - - [ 1442055279567,"58.106.135.42","Newcastle Jets FC Youth","" ] - - [ 1442059004452,"58.111.155.139","Stadium Australia","" ] - - [ 1442048316558,"58.156.119.18","特盛!よしもと 今田・八光のおしゃべりジャングル","" ] - - [ 1442028373987,"58.156.158.18","ソーラーパネル","" ] - - [ 1442046515015,"58.174.137.134","Jarryd Hayne","" ] - - [ 1442055231108,"58.175.186.6","Animals in Islam","" ] - - [ 1442056110424,"58.175.59.60","Queer Lion","" ] - - [ 1442040037037,"58.183.124.153","ジュラシック・パークIII","" ] - - [ 1442046294050,"58.188.28.158","小山薫堂の“温故知新堂”","" ] - - [ 1442051739818,"58.188.28.158","平塚競技場","小山薫堂の“温故知新堂”" ] - - [ 1442058986459,"58.188.28.158","2015年ワールドカップバレーボール","平塚競技場" ] - - [ 1442065595186,"58.188.28.158","ザ・ラストヒロイン〜ワルキューレの審判〜","2015年ワールドカップバレーボール" ] - - [ 1442065723868,"58.188.28.158","癒し屋キリコの約束","ザ・ラストヒロイン〜ワルキューレの審判〜" ] - - [ 1442068144671,"58.188.28.158","地域発ドラマ","癒し屋キリコの約束" ] - - [ 1442068557997,"58.7.81.140","Nose gunner","" ] - - [ 1442056051721,"58.70.174.162","トヨタ・エスティマ","" ] - - [ 1442042617971,"58.89.8.10","津軽信枚","" ] - - [ 1442038469110,"58.93.38.113","ウエルシア薬局","" ] - - [ 1442072948002,"59.166.42.154","コミック乱ツインズ","" ] - - [ 1442034973871,"59.86.97.35","パズドラZ","" ] - - [ 1442071403042,"59.87.28.229","История создания сил специальных операций Армии США","" ] - - [ 1442072375155,"59.87.28.229","Армия США","История создания сил специальных операций Армии США" ] - - [ 1442027556018,"60.224.133.167","Torres Strait Islanders","" ] - - [ 1442018825474,"60.225.66.142","Peremptory norm","" ] - - [ 1442043839445,"61.200.121.189","コズミックフロント","" ] - - [ 1442036042205,"61.245.69.54","テレビ朝日系列日曜昼前の情報番組枠","" ] - - [ 1442063039021,"62.178.213.52","Cimburgis von Masowien","" ] - - [ 1442068687074,"77.80.5.199","Santiago Niño Becerra","" ] - - [ 1442088415400,"83.65.220.213","Philomena Höltkemeier Story Consulting","" ] - - [ 1442093778448,"90.146.48.55","Z Nation","" ] - - [ 1442088395645,"91.115.65.157","Al-Masdschid al-Harām","" ] + - [1442055495852,"1.121.160.49","Walker, Texas Ranger",null] + - [1442056175946,"1.121.160.49","Walker, Texas Ranger","Walker, Texas Ranger"] + - [1442062719426,"1.121.160.49","Richard Norton (actor)","Walker, Texas Ranger"] + - [1442053449011,"1.123.133.249","Inside Out",null] + - [1442030282870,"1.123.149.111","Christina Ricci",null] + - [1442062306734,"1.129.96.160","Andrew Hastie (politician)",null] + - [1442052408695,"1.129.96.219","Dorrigo Steam Railway and Museum",null] + - [1442049229239,"1.129.96.242","Dorrigo Steam Railway and Museum",null] + - [1442046541914,"1.152.96.170","Ayrton Senna",null] + - [1442056892106,"101.128.232.140","清水浩",null] + - [1442057005310,"101.128.232.140","清水浩","清水浩"] + - [1442033283609,"101.140.3.146","水原茂",null] + - [1442036282693,"101.162.15.184","The Biggest Loser (U.S. TV series)",null] + - [1442036494525,"101.162.15.184","The Biggest Loser (U.S. TV series)","The Biggest Loser (U.S. TV series)"] + - [1442053239190,"101.162.15.184","The Biggest Loser (season 3)","The Biggest Loser (U.S. TV series)"] + - [1442094543511,"101.162.15.184","The Biggest Loser (season 3)","The Biggest Loser (season 3)"] + - [1442054030928,"101.162.192.189","Second Keating Ministry",null] + - [1442054439219,"101.162.192.189","Second Keating Ministry","Second Keating Ministry"] + - [1442062617292,"101.180.202.153","2015 AFL season",null] + - [1442042291553,"103.18.40.202","Wikipedia:Auskunft",null] + - [1442030546957,"103.20.255.191","Same-sex marriage in New Zealand",null] + - [1442028937717,"103.225.121.237","AKB48握手会傷害事件",null] + - [1442025765045,"103.56.218.196","욱일기",null] + - [1442018949298,"106.131.175.193","正岡大介",null] + - [1442061568629,"106.132.207.6","白石涼子",null] + - [1442074511372,"106.150.80.109","ノート:アズ熊谷",null] + - [1442022640886,"106.161.56.138","山口敬之",null] + - [1442061180690,"106.188.137.190","救急救命士養成所",null] + - [1442061491224,"106.188.137.190","救急救命士","救急救命士養成所"] + - [1442100695886,"106.188.187.22","Petronas Towers",null] + - [1442033017165,"106.188.237.163","ダウンロード違法化",null] + - [1442019638402,"110.1.177.43","ユーロビート",null] + - [1442039765889,"110.1.177.43","虹の都へ","ユーロビート"] + - [1442097432832,"110.20.158.121","Flavia Pennetta",null] + - [1442097158335,"110.20.234.69","Yaoi",null] + - [1442101346090,"110.20.234.69","Yaoi fandom","Yaoi"] + - [1442022181729,"110.21.43.182","Planet Hollywood Resort & Casino",null] + - [1442054156682,"110.22.186.92","Aris F.C. (Thessaloniki)",null] + - [1442060921634,"110.32.28.203","Politics of Réunion",null] + - [1442095172937,"110.67.252.181","Shinya",null] + - [1442073188151,"111.216.35.85","うしおそうじ",null] + - [1442070741096,"113.197.250.14","フィンテック",null] + - [1442065282546,"113.36.127.77","福岡県立修猷館高等学校の人物一覧",null] + - [1442020617093,"113.38.112.244","エフエム東京",null] + - [1442043701284,"114.148.67.27","オウム真理教の修行",null] + - [1442057752095,"114.149.159.81","鮎川誠",null] + - [1442030463066,"114.149.98.37","2015年全米オープン (テニス)",null] + - [1442036595334,"114.161.17.122","京都放送",null] + - [1442085773238,"114.163.215.4","コンコルド墜落事故",null] + - [1442019941523,"114.165.9.29","架空の乗り物一覧",null] + - [1442073082802,"114.167.235.83","ランドール・パーク",null] + - [1442036882364,"114.168.102.41","杉浦圭子",null] + - [1442046282828,"114.186.112.218","オイルショック",null] + - [1442030866019,"115.64.101.40","Snow leopard",null] + - [1442030416128,"115.69.63.229","Ibrahim Sunday",null] + - [1442046588882,"117.18.154.84","969運動",null] + - [1442022015086,"117.55.68.51","セルゲーエフ",null] + - [1442022520647,"117.55.68.51","セルゲーエワ","セルゲーエフ"] + - [1442063719891,"117.74.50.110","ソード・ワールド2.0リプレイ from USA",null] + - [1442039556838,"118.106.18.200","今夜もオトパラ!",null] + - [1442049541582,"118.106.18.200","青森放送","今夜もオトパラ!"] + - [1442047677181,"118.109.38.229","ケイゾク",null] + - [1442049350391,"118.109.38.229","ケイゾク","ケイゾク"] + - [1442063820782,"118.109.38.229","ケイゾク","ケイゾク"] + - [1442080232899,"118.111.38.174","外傷初期診療ガイドライン日本版",null] + - [1442033322693,"118.238.237.196","推理小説",null] + - [1442090528892,"119.104.157.254","おかしな二人",null] + - [1442075598708,"119.104.36.170","パスポート",null] + - [1442038707947,"119.170.41.230","スーパーマン (1978年の映画)",null] + - [1442031883720,"119.25.37.181","六甲人工島線",null] + - [1442018890048,"119.26.148.34","青野武",null] + - [1442046705300,"119.26.148.34","クッキングパパの登場人物","青野武"] + - [1442058062503,"119.26.148.34","林先生が驚く初耳学!","クッキングパパの登場人物"] + - [1442059524102,"119.26.148.34","エンジェル・ハート","林先生が驚く初耳学!"] + - [1442065445099,"119.26.148.34","本田望結","エンジェル・ハート"] + - [1442068465888,"119.63.112.86","DIABOLIK LOVERS",null] + - [1442069164239,"119.63.112.86","GANGSTA.","DIABOLIK LOVERS"] + - [1442091530861,"119.63.112.86","BS-TBS独占放送深夜アニメ枠","GANGSTA."] + - [1442030131807,"119.72.245.161","The VISIONALUX",null] + - [1442047214542,"120.147.6.7","African Union Mission to Somalia",null] + - [1442032176994,"121.102.43.4","利用者‐会話:Yasuyuki Takeo",null] + - [1442066932287,"121.117.180.156","Ulmendorf",null] + - [1442023340480,"121.208.92.28","Moreton Bay",null] + - [1442050348689,"121.211.56.55","Dominique Dunne",null] + - [1442100154443,"121.211.82.121","List of Harry Potter characters",null] + - [1442048444641,"121.223.129.191","List of dinosaur genera",null] + - [1442027637932,"121.45.214.80","Total Drama Presents: The Ridonculous Race",null] + - [1442054470231,"121.93.47.91","チキンハート",null] + - [1442069124156,"121.93.97.147","機甲創世記モスピーダ",null] + - [1442095062216,"122.108.156.100","United States presidential election, 1892",null] + - [1442098671579,"122.108.156.100","United States presidential election, 1892","United States presidential election, 1892"] + - [1442023533650,"122.25.10.78","星のカービィ! も〜れつプププアワー!",null] + - [1442024788039,"122.25.10.78","陸上防衛隊まおちゃん","星のカービィ! も〜れつプププアワー!"] + - [1442072416878,"122.25.10.78","黒鷺死体宅配便","陸上防衛隊まおちゃん"] + - [1442074382146,"122.25.10.78","ロリコンフェニックス","黒鷺死体宅配便"] + - [1442072607975,"123.100.63.20","User:MichelleFranklin/AustralianSkeptics",null] + - [1442084541627,"123.217.1.75","JOIN ALIVE",null] + - [1442056682107,"123.223.224.148","相馬康一",null] + - [1442056818652,"123.223.224.148","杉崎亮","相馬康一"] + - [1442057183557,"123.223.224.148","日高里菜","杉崎亮"] + - [1442037245734,"124.148.87.34","List of Doctor Who audio plays by Big Finish",null] + - [1442038279908,"124.148.87.34","List of Doctor Who audio plays by Big Finish","List of Doctor Who audio plays by Big Finish"] + - [1442039505649,"124.148.87.34","List of Doctor Who audio plays by Big Finish","List of Doctor Who audio plays by Big Finish"] + - [1442051202571,"124.148.87.34","List of Doctor Who audio plays by Big Finish","List of Doctor Who audio plays by Big Finish"] + - [1442027954979,"124.169.165.146","Talk:Peter O'Toole",null] + - [1442096498423,"124.169.17.234","Coca-Cola formula",null] + - [1442046696410,"124.170.55.214","Northern Football League (Australia)",null] + - [1442049310216,"124.171.44.159","Liberal Democratic Party (Australia)",null] + - [1442035151510,"124.188.44.154","List of Doctor Who audio plays by Big Finish",null] + - [1442092615464,"124.45.73.228","鹿児島県立加治木高等学校",null] + - [1442023710710,"125.168.85.156","Beatrix Potter",null] + - [1442050705594,"125.192.149.97","ドカチン",null] + - [1442063450156,"125.198.182.94","交響曲第5番 (チャイコフスキー)",null] + - [1442036586983,"125.2.29.54","バトルスピリッツ 烈火魂",null] + - [1442020773422,"125.205.166.177","粉河町",null] + - [1442070671364,"126.10.25.69","民王",null] + - [1442065314043,"126.120.17.52","ガンズ・アンド・ローゼズ",null] + - [1442057530890,"126.144.8.136","小柳友貴美",null] + - [1442057729757,"126.144.8.136","張込み","小柳友貴美"] + - [1442058237893,"126.144.8.136","篠原涼子","張込み"] + - [1442058403152,"126.144.8.136","瀬戸朝香","篠原涼子"] + - [1442058944024,"126.144.8.136","顔田顔彦","瀬戸朝香"] + - [1442059192896,"126.144.8.136","山中聡","顔田顔彦"] + - [1442064154338,"126.29.44.172","アンフェア the answer",null] + - [1442046633404,"126.64.184.114","中山道",null] + - [1442045829839,"130.54.130.227","静岡空港",null] + - [1442056451492,"137.147.143.241","Royal Australian Air Force",null] + - [1442020256428,"137.147.165.107","Michael Sharkey",null] + - [1442045368765,"139.218.187.26","National Youth Competition (rugby league)",null] + - [1442021132744,"14.201.22.221","2015 Roger Federer tennis season",null] + - [1442078715198,"14.203.177.143","Captain (cricket)",null] + - [1442063042912,"153.170.91.23","一色氏",null] + - [1442040686108,"153.200.114.68","芋たこなんきん",null] + - [1442042536291,"153.200.114.68","ごちそうさん (2013年のテレビドラマ)","芋たこなんきん"] + - [1442042555091,"153.200.114.68","ごちそうさん (2013年のテレビドラマ)","ごちそうさん (2013年のテレビドラマ)"] + - [1442024836364,"153.207.13.117","リーガ・エスパニョーラ",null] + - [1442055615954,"153.230.62.16","刺客 聶隱娘",null] + - [1442079228153,"161.202.72.168","Shaun King (activist)",null] + - [1442080592078,"161.202.72.168","Talk:Shaun King (activist)","Shaun King (activist)"] + - [1442082673917,"161.202.72.168","Talk:Shaun King (activist)","Talk:Shaun King (activist)"] + - [1442054785180,"180.17.65.26","88式鉄帽",null] + - [1442064037343,"180.27.228.108","虎ノ門事件",null] + - [1442092840431,"180.54.251.210","鹿児島県立加治木高等学校",null] + - [1442026399564,"182.168.99.4","ミャンマー",null] + - [1442080053112,"182.173.142.88","ドクタースランプ",null] + - [1442080079822,"182.173.142.88","ドクタースランプ","ドクタースランプ"] + - [1442071861338,"188.23.31.111","Diskussion:Löwengrube (Serie)",null] + - [1442041218594,"202.174.58.102","テッド (映画)",null] + - [1442043359400,"202.174.58.102","立川流 (密教)","テッド (映画)"] + - [1442050346906,"203.112.37.97","ABCフレッシュアップベースボール",null] + - [1442037360618,"203.87.72.77","Hakoah Sydney City East FC",null] + - [1442033433557,"210.128.82.94","列車種別",null] + - [1442059451406,"210.132.145.235","キン肉マンスーパー・フェニックス",null] + - [1442028766085,"210.145.159.111","小桜エツコ",null] + - [1442047728381,"210.159.186.209","ハウス食品",null] + - [1442073460368,"210.160.37.25","沖野晃司",null] + - [1442073648703,"210.160.37.25","沖野晃司","沖野晃司"] + - [1442025498133,"210.171.30.75","車塚 (伊丹市)",null] + - [1442053077021,"210.194.52.87","小田急多摩線",null] + - [1442079405551,"210.199.238.238","ズバリ!当てましょう",null] + - [1442084605765,"210.199.238.238","インド","ズバリ!当てましょう"] + - [1442048760081,"211.0.97.62","アフガニスタン紛争 (1978年-1989年)",null] + - [1442058690158,"211.1.73.194","筑波山",null] + - [1442066152552,"211.135.251.28","FNSスーパースペシャルテレビ夢列島",null] + - [1442090789576,"212.95.7.43","Pamela (Vorname)",null] + - [1442093822018,"212.95.7.57","Eşkıya Dünyaya Hükümdar Olmaz (dizi)",null] + - [1442052594311,"213.102.112.181","Diskussion:Schlacht um die Krim",null] + - [1442055194535,"213.102.112.181","Diskussion:Schlacht um die Krim","Diskussion:Schlacht um die Krim"] + - [1442055264461,"213.102.112.181","Diskussion:Schlacht um die Krim","Diskussion:Schlacht um die Krim"] + - [1442087241623,"213.240.105.56","16. Mai",null] + - [1442073949064,"218.110.166.206","エゴグラム",null] + - [1442048197658,"218.227.98.24","福岡空港",null] + - [1442031289907,"218.45.13.57","サムライエッジ",null] + - [1442043817524,"219.102.143.16","ヒルナンデス!",null] + - [1442076175461,"219.106.24.95","中村れい子",null] + - [1442076262194,"219.106.24.95","阿藤快","中村れい子"] + - [1442076443347,"219.106.24.95","西岡善信","阿藤快"] + - [1442067732777,"219.106.70.167","アンフェア the end",null] + - [1442047016164,"219.110.114.95","永田久光",null] + - [1442039078679,"219.110.28.111","こちら葛飾区亀有公園前派出所の登場人物",null] + - [1442039059890,"219.112.132.106","野口茂樹",null] + - [1442039204914,"219.112.132.106","野口茂樹","野口茂樹"] + - [1442039593604,"219.112.132.106","井場友和","野口茂樹"] + - [1442042116370,"219.112.132.106","高村祐","井場友和"] + - [1442043631086,"219.112.132.106","岩本勉","高村祐"] + - [1442033187371,"219.127.27.114","あんハピ♪",null] + - [1442033425162,"219.127.27.114","林田理沙","あんハピ♪"] + - [1442034666225,"219.127.27.114","八木沼純子","林田理沙"] + - [1442026079559,"219.127.82.26","Wikipedia:サンドボックス",null] + - [1442047519920,"219.161.34.177","小川虎之助",null] + - [1442088730524,"219.171.105.167","2015 FIFA U-20ワールドカップ",null] + - [1442090473730,"219.171.105.167","AFC U-19女子選手権2015","2015 FIFA U-20ワールドカップ"] + - [1442098469728,"219.182.78.3","宮里久美",null] + - [1442029124664,"219.198.137.251","逆転イッパツマン",null] + - [1442048505685,"219.51.50.31","突撃!ナマイキTV",null] + - [1442053430316,"219.51.50.31","突撃!ナマイキTV","突撃!ナマイキTV"] + - [1442075782897,"219.67.166.28","オリンピア・ミラノ",null] + - [1442035985727,"220.109.120.102","ワールドサッカー ウイニングイレブン 2016",null] + - [1442036083342,"220.210.178.20","櫻井よしこ",null] + - [1442024997507,"220.212.136.113","国際地学オリンピック",null] + - [1442024799232,"220.213.14.136","甲府市中心市街地活性化基本計画",null] + - [1442025695124,"220.213.14.136","放置自転車","甲府市中心市街地活性化基本計画"] + - [1442026228735,"220.213.14.136","甲府市中心市街地活性化基本計画","放置自転車"] + - [1442051686890,"220.62.54.3","坂上忍の成長マン!!",null] + - [1442044538982,"221.170.137.161","週末キッズタイム",null] + - [1442053936462,"221.77.244.149","ボーダーブレイク",null] + - [1442101230028,"222.12.9.108","ネプリーグのクイズ・企画一覧",null] + - [1442046505197,"222.148.228.64","おじゃる丸のエピソード一覧",null] + - [1442046590842,"222.148.228.64","おじゃる丸","おじゃる丸のエピソード一覧"] + - [1442051878307,"223.132.42.72","THE IDOLM@STER CINDERELLA GIRLS ANIMATION PROJECT",null] + - [1442027068163,"49.128.148.160","パンク・ファッション",null] + - [1442035102420,"49.181.161.0","Hazelbrook railway station",null] + - [1442059510611,"49.183.149.106","2015 AFL finals series",null] + - [1442045663055,"49.199.44.74","List of fictional European countries",null] + - [1442047899247,"49.199.44.74","List of fictional European countries","List of fictional European countries"] + - [1442051573911,"49.199.44.74","List of fictional European countries","List of fictional European countries"] + - [1442051658029,"49.199.44.74","List of fictional European countries","List of fictional European countries"] + - [1442055279567,"58.106.135.42","Newcastle Jets FC Youth",null] + - [1442059004452,"58.111.155.139","Stadium Australia",null] + - [1442048316558,"58.156.119.18","特盛!よしもと 今田・八光のおしゃべりジャングル",null] + - [1442028373987,"58.156.158.18","ソーラーパネル",null] + - [1442046515015,"58.174.137.134","Jarryd Hayne",null] + - [1442055231108,"58.175.186.6","Animals in Islam",null] + - [1442056110424,"58.175.59.60","Queer Lion",null] + - [1442040037037,"58.183.124.153","ジュラシック・パークIII",null] + - [1442046294050,"58.188.28.158","小山薫堂の“温故知新堂”",null] + - [1442051739818,"58.188.28.158","平塚競技場","小山薫堂の“温故知新堂”"] + - [1442058986459,"58.188.28.158","2015年ワールドカップバレーボール","平塚競技場"] + - [1442065595186,"58.188.28.158","ザ・ラストヒロイン〜ワルキューレの審判〜","2015年ワールドカップバレーボール"] + - [1442065723868,"58.188.28.158","癒し屋キリコの約束","ザ・ラストヒロイン〜ワルキューレの審判〜"] + - [1442068144671,"58.188.28.158","地域発ドラマ","癒し屋キリコの約束"] + - [1442068557997,"58.7.81.140","Nose gunner",null] + - [1442056051721,"58.70.174.162","トヨタ・エスティマ",null] + - [1442042617971,"58.89.8.10","津軽信枚",null] + - [1442038469110,"58.93.38.113","ウエルシア薬局",null] + - [1442072948002,"59.166.42.154","コミック乱ツインズ",null] + - [1442034973871,"59.86.97.35","パズドラZ",null] + - [1442071403042,"59.87.28.229","История создания сил специальных операций Армии США",null] + - [1442072375155,"59.87.28.229","Армия США","История создания сил специальных операций Армии США"] + - [1442027556018,"60.224.133.167","Torres Strait Islanders",null] + - [1442018825474,"60.225.66.142","Peremptory norm",null] + - [1442043839445,"61.200.121.189","コズミックフロント",null] + - [1442036042205,"61.245.69.54","テレビ朝日系列日曜昼前の情報番組枠",null] + - [1442063039021,"62.178.213.52","Cimburgis von Masowien",null] + - [1442068687074,"77.80.5.199","Santiago Niño Becerra",null] + - [1442088415400,"83.65.220.213","Philomena Höltkemeier Story Consulting",null] + - [1442093778448,"90.146.48.55","Z Nation",null] + - [1442088395645,"91.115.65.157","Al-Masdschid al-Harām",null] diff --git a/sql/src/test/resources/calcite/tests/window/wikipediaSimplePartitionInitialSort.sqlTest b/sql/src/test/resources/calcite/tests/window/wikipediaSimplePartitionInitialSort.sqlTest index 282647c2f774..d310f6a8f1ce 100644 --- a/sql/src/test/resources/calcite/tests/window/wikipediaSimplePartitionInitialSort.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/wikipediaSimplePartitionInitialSort.sqlTest @@ -39,990 +39,990 @@ expectedOperators: - { "type": "offset", "inputColumn": "d0", "outputColumn": "w5", "offset": 1 } expectedResults: - - [ 1442016000000, "", 29873, 8414700, null, 1442019600000, 29873, 276159, 1 ] - - [ 1442019600000, "", 173892, 8414700, null, 1442023200000, 29873, 276159, 1 ] - - [ 1442023200000, "", 399636, 8414700, 1442016000000, 1442026800000, 29873, 276159, 1 ] - - [ 1442026800000, "", 252626, 8414700, 1442019600000, 1442030400000, 29873, 276159, 1 ] - - [ 1442030400000, "", 166672, 8414700, 1442023200000, 1442034000000, 29873, 276159, 1 ] - - [ 1442034000000, "", 330957, 8414700, 1442026800000, 1442037600000, 29873, 276159, 1 ] - - [ 1442037600000, "", 200605, 8414700, 1442030400000, 1442041200000, 29873, 276159, 1 ] - - [ 1442041200000, "", 543450, 8414700, 1442034000000, 1442044800000, 29873, 276159, 1 ] - - [ 1442044800000, "", 316002, 8414700, 1442037600000, 1442048400000, 29873, 276159, 2 ] - - [ 1442048400000, "", 308316, 8414700, 1442041200000, 1442052000000, 29873, 276159, 2 ] - - [ 1442052000000, "", 787370, 8414700, 1442044800000, 1442055600000, 29873, 276159, 2 ] - - [ 1442055600000, "", 283958, 8414700, 1442048400000, 1442059200000, 29873, 276159, 2 ] - - [ 1442059200000, "", 459297, 8414700, 1442052000000, 1442062800000, 29873, 276159, 2 ] - - [ 1442062800000, "", 389465, 8414700, 1442055600000, 1442066400000, 29873, 276159, 2 ] - - [ 1442066400000, "", 351584, 8414700, 1442059200000, 1442070000000, 29873, 276159, 2 ] - - [ 1442070000000, "", 358515, 8414700, 1442062800000, 1442073600000, 29873, 276159, 2 ] - - [ 1442073600000, "", 375394, 8414700, 1442066400000, 1442077200000, 29873, 276159, 3 ] - - [ 1442077200000, "", 392483, 8414700, 1442070000000, 1442080800000, 29873, 276159, 3 ] - - [ 1442080800000, "", 453077, 8414700, 1442073600000, 1442084400000, 29873, 276159, 3 ] - - [ 1442084400000, "", 372569, 8414700, 1442077200000, 1442088000000, 29873, 276159, 3 ] - - [ 1442088000000, "", 303872, 8414700, 1442080800000, 1442091600000, 29873, 276159, 3 ] - - [ 1442091600000, "", 514427, 8414700, 1442084400000, 1442095200000, 29873, 276159, 3 ] - - [ 1442095200000, "", 374501, 8414700, 1442088000000, 1442098800000, 29873, 276159, 3 ] - - [ 1442098800000, "", 276159, 8414700, 1442091600000, null, 29873, 276159, 3 ] - - [ 1442030400000, "AE", 118, 6547, null, 1442044800000, 118, 42, 1 ] - - [ 1442044800000, "AE", -7, 6547, null, 1442048400000, 118, 42, 1 ] - - [ 1442048400000, "AE", 39, 6547, 1442030400000, 1442052000000, 118, 42, 1 ] - - [ 1442052000000, "AE", -3, 6547, 1442044800000, 1442059200000, 118, 42, 2 ] - - [ 1442059200000, "AE", -11, 6547, 1442048400000, 1442070000000, 118, 42, 2 ] - - [ 1442070000000, "AE", 46, 6547, 1442052000000, 1442077200000, 118, 42, 2 ] - - [ 1442077200000, "AE", 6323, 6547, 1442059200000, 1442080800000, 118, 42, 3 ] - - [ 1442080800000, "AE", 42, 6547, 1442070000000, null, 118, 42, 3 ] - - [ 1442077200000, "AL", 26, 80, null, 1442091600000, 26, 54, 1 ] - - [ 1442091600000, "AL", 54, 80, null, null, 26, 54, 2 ] - - [ 1442041200000, "AO", -26, 740, null, 1442052000000, -26, 722, 1 ] - - [ 1442052000000, "AO", -18, 740, null, 1442088000000, -26, 722, 1 ] - - [ 1442088000000, "AO", 62, 740, 1442041200000, 1442098800000, -26, 722, 2 ] - - [ 1442098800000, "AO", 722, 740, 1442052000000, null, -26, 722, 3 ] - - [ 1442019600000, "AR", 1, 4450, null, 1442023200000, 1, 64, 1 ] - - [ 1442023200000, "AR", 2514, 4450, null, 1442026800000, 1, 64, 1 ] - - [ 1442026800000, "AR", 644, 4450, 1442019600000, 1442030400000, 1, 64, 1 ] - - [ 1442030400000, "AR", -3, 4450, 1442023200000, 1442034000000, 1, 64, 1 ] - - [ 1442034000000, "AR", 212, 4450, 1442026800000, 1442037600000, 1, 64, 1 ] - - [ 1442037600000, "AR", 81, 4450, 1442030400000, 1442055600000, 1, 64, 1 ] - - [ 1442055600000, "AR", -54, 4450, 1442034000000, 1442059200000, 1, 64, 2 ] - - [ 1442059200000, "AR", 210, 4450, 1442037600000, 1442062800000, 1, 64, 2 ] - - [ 1442062800000, "AR", 29, 4450, 1442055600000, 1442066400000, 1, 64, 2 ] - - [ 1442066400000, "AR", 0, 4450, 1442059200000, 1442070000000, 1, 64, 2 ] - - [ 1442070000000, "AR", 377, 4450, 1442062800000, 1442077200000, 1, 64, 2 ] - - [ 1442077200000, "AR", -591, 4450, 1442066400000, 1442080800000, 1, 64, 2 ] - - [ 1442080800000, "AR", 1, 4450, 1442070000000, 1442084400000, 1, 64, 3 ] - - [ 1442084400000, "AR", -5, 4450, 1442077200000, 1442091600000, 1, 64, 3 ] - - [ 1442091600000, "AR", 340, 4450, 1442080800000, 1442095200000, 1, 64, 3 ] - - [ 1442095200000, "AR", 630, 4450, 1442084400000, 1442098800000, 1, 64, 3 ] - - [ 1442098800000, "AR", 64, 4450, 1442091600000, null, 1, 64, 3 ] - - [ 1442052000000, "AT", 4793, 12047, null, 1442062800000, 4793, 89, 1 ] - - [ 1442062800000, "AT", -155, 12047, null, 1442066400000, 4793, 89, 1 ] - - [ 1442066400000, "AT", 0, 12047, 1442052000000, 1442070000000, 4793, 89, 1 ] - - [ 1442070000000, "AT", 272, 12047, 1442062800000, 1442084400000, 4793, 89, 2 ] - - [ 1442084400000, "AT", -2, 12047, 1442066400000, 1442088000000, 4793, 89, 2 ] - - [ 1442088000000, "AT", 7050, 12047, 1442070000000, 1442091600000, 4793, 89, 3 ] - - [ 1442091600000, "AT", 89, 12047, 1442084400000, null, 4793, 89, 3 ] - - [ 1442016000000, "AU", 0, 2700, null, 1442019600000, 0, 518, 1 ] - - [ 1442019600000, "AU", 253, 2700, null, 1442023200000, 0, 518, 1 ] - - [ 1442023200000, "AU", 52, 2700, 1442016000000, 1442026800000, 0, 518, 1 ] - - [ 1442026800000, "AU", 188, 2700, 1442019600000, 1442030400000, 0, 518, 1 ] - - [ 1442030400000, "AU", -377, 2700, 1442023200000, 1442034000000, 0, 518, 1 ] - - [ 1442034000000, "AU", 283, 2700, 1442026800000, 1442037600000, 0, 518, 1 ] - - [ 1442037600000, "AU", 3, 2700, 1442030400000, 1442041200000, 0, 518, 1 ] - - [ 1442041200000, "AU", 194, 2700, 1442034000000, 1442044800000, 0, 518, 2 ] - - [ 1442044800000, "AU", 373, 2700, 1442037600000, 1442048400000, 0, 518, 2 ] - - [ 1442048400000, "AU", 135, 2700, 1442041200000, 1442052000000, 0, 518, 2 ] - - [ 1442052000000, "AU", -643, 2700, 1442044800000, 1442055600000, 0, 518, 2 ] - - [ 1442055600000, "AU", 182, 2700, 1442048400000, 1442059200000, 0, 518, 2 ] - - [ 1442059200000, "AU", 38, 2700, 1442052000000, 1442066400000, 0, 518, 2 ] - - [ 1442066400000, "AU", -21, 2700, 1442055600000, 1442070000000, 0, 518, 3 ] - - [ 1442070000000, "AU", -12, 2700, 1442059200000, 1442077200000, 0, 518, 3 ] - - [ 1442077200000, "AU", 1, 2700, 1442066400000, 1442091600000, 0, 518, 3 ] - - [ 1442091600000, "AU", 1138, 2700, 1442070000000, 1442095200000, 0, 518, 3 ] - - [ 1442095200000, "AU", 395, 2700, 1442077200000, 1442098800000, 0, 518, 3 ] - - [ 1442098800000, "AU", 518, 2700, 1442091600000, null, 0, 518, 3 ] - - [ 1442048400000, "BA", -13, -178, null, 1442052000000, -13, -1, 1 ] - - [ 1442052000000, "BA", 38, -178, null, 1442055600000, -13, -1, 1 ] - - [ 1442055600000, "BA", -202, -178, 1442048400000, 1442084400000, -13, -1, 2 ] - - [ 1442084400000, "BA", -1, -178, 1442052000000, null, -13, -1, 3 ] - - [ 1442019600000, "BD", 0, 1106, null, 1442041200000, 0, -2, 1 ] - - [ 1442041200000, "BD", 854, 1106, null, 1442066400000, 0, -2, 1 ] - - [ 1442066400000, "BD", 76, 1106, 1442019600000, 1442073600000, 0, -2, 2 ] - - [ 1442073600000, "BD", 103, 1106, 1442041200000, 1442077200000, 0, -2, 2 ] - - [ 1442077200000, "BD", 75, 1106, 1442066400000, 1442091600000, 0, -2, 3 ] - - [ 1442091600000, "BD", -2, 1106, 1442073600000, null, 0, -2, 3 ] - - [ 1442030400000, "BE", -103, 795, null, 1442048400000, -103, 9, 1 ] - - [ 1442048400000, "BE", 59, 795, null, 1442052000000, -103, 9, 1 ] - - [ 1442052000000, "BE", -1, 795, 1442030400000, 1442055600000, -103, 9, 1 ] - - [ 1442055600000, "BE", 233, 795, 1442048400000, 1442062800000, -103, 9, 1 ] - - [ 1442062800000, "BE", 91, 795, 1442052000000, 1442066400000, -103, 9, 2 ] - - [ 1442066400000, "BE", 136, 795, 1442055600000, 1442073600000, -103, 9, 2 ] - - [ 1442073600000, "BE", 19, 795, 1442062800000, 1442080800000, -103, 9, 2 ] - - [ 1442080800000, "BE", 1, 795, 1442066400000, 1442084400000, -103, 9, 2 ] - - [ 1442084400000, "BE", 183, 795, 1442073600000, 1442088000000, -103, 9, 3 ] - - [ 1442088000000, "BE", 67, 795, 1442080800000, 1442091600000, -103, 9, 3 ] - - [ 1442091600000, "BE", 101, 795, 1442084400000, 1442098800000, -103, 9, 3 ] - - [ 1442098800000, "BE", 9, 795, 1442088000000, null, -103, 9, 3 ] - - [ 1442041200000, "BG", 9, 19592, null, 1442052000000, 9, 401, 1 ] - - [ 1442052000000, "BG", 18936, 19592, null, 1442059200000, 9, 401, 1 ] - - [ 1442059200000, "BG", 191, 19592, 1442041200000, 1442070000000, 9, 401, 2 ] - - [ 1442070000000, "BG", 55, 19592, 1442052000000, 1442084400000, 9, 401, 2 ] - - [ 1442084400000, "BG", 401, 19592, 1442059200000, null, 9, 401, 3 ] - - [ 1442052000000, "BH", 44, 44, null, null, 44, 44, 1 ] - - [ 1442080800000, "BO", 4, 4, null, 1442088000000, 4, -4, 1 ] - - [ 1442088000000, "BO", 4, 4, null, 1442095200000, 4, -4, 2 ] - - [ 1442095200000, "BO", -4, 4, 1442080800000, null, 4, -4, 3 ] - - [ 1442016000000, "BR", -248, 8550, null, 1442019600000, -248, -645, 1 ] - - [ 1442019600000, "BR", 372, 8550, null, 1442023200000, -248, -645, 1 ] - - [ 1442023200000, "BR", 879, 8550, 1442016000000, 1442026800000, -248, -645, 1 ] - - [ 1442026800000, "BR", 51, 8550, 1442019600000, 1442030400000, -248, -645, 1 ] - - [ 1442030400000, "BR", 30, 8550, 1442023200000, 1442034000000, -248, -645, 1 ] - - [ 1442034000000, "BR", 21, 8550, 1442026800000, 1442037600000, -248, -645, 1 ] - - [ 1442037600000, "BR", 267, 8550, 1442030400000, 1442041200000, -248, -645, 1 ] - - [ 1442041200000, "BR", 3, 8550, 1442034000000, 1442044800000, -248, -645, 1 ] - - [ 1442044800000, "BR", 71, 8550, 1442037600000, 1442052000000, -248, -645, 2 ] - - [ 1442052000000, "BR", 232, 8550, 1442041200000, 1442055600000, -248, -645, 2 ] - - [ 1442055600000, "BR", 242, 8550, 1442044800000, 1442059200000, -248, -645, 2 ] - - [ 1442059200000, "BR", 73, 8550, 1442052000000, 1442062800000, -248, -645, 2 ] - - [ 1442062800000, "BR", 93, 8550, 1442055600000, 1442066400000, -248, -645, 2 ] - - [ 1442066400000, "BR", 1034, 8550, 1442059200000, 1442070000000, -248, -645, 2 ] - - [ 1442070000000, "BR", 536, 8550, 1442062800000, 1442073600000, -248, -645, 2 ] - - [ 1442073600000, "BR", 2087, 8550, 1442066400000, 1442077200000, -248, -645, 2 ] - - [ 1442077200000, "BR", 2253, 8550, 1442070000000, 1442080800000, -248, -645, 3 ] - - [ 1442080800000, "BR", -267, 8550, 1442073600000, 1442084400000, -248, -645, 3 ] - - [ 1442084400000, "BR", 492, 8550, 1442077200000, 1442088000000, -248, -645, 3 ] - - [ 1442088000000, "BR", 215, 8550, 1442080800000, 1442091600000, -248, -645, 3 ] - - [ 1442091600000, "BR", 11, 8550, 1442084400000, 1442095200000, -248, -645, 3 ] - - [ 1442095200000, "BR", 748, 8550, 1442088000000, 1442098800000, -248, -645, 3 ] - - [ 1442098800000, "BR", -645, 8550, 1442091600000, null, -248, -645, 3 ] - - [ 1442055600000, "BY", 1, 2153, null, 1442059200000, 1, 33, 1 ] - - [ 1442059200000, "BY", 1464, 2153, null, 1442073600000, 1, 33, 1 ] - - [ 1442073600000, "BY", 596, 2153, 1442055600000, 1442077200000, 1, 33, 1 ] - - [ 1442077200000, "BY", 30, 2153, 1442059200000, 1442080800000, 1, 33, 2 ] - - [ 1442080800000, "BY", 28, 2153, 1442073600000, 1442084400000, 1, 33, 2 ] - - [ 1442084400000, "BY", 1, 2153, 1442077200000, 1442088000000, 1, 33, 3 ] - - [ 1442088000000, "BY", 33, 2153, 1442080800000, null, 1, 33, 3 ] - - [ 1442016000000, "CA", -371, 8544, null, 1442019600000, -371, 164, 1 ] - - [ 1442019600000, "CA", 2184, 8544, null, 1442023200000, -371, 164, 1 ] - - [ 1442023200000, "CA", 286, 8544, 1442016000000, 1442026800000, -371, 164, 1 ] - - [ 1442026800000, "CA", 2216, 8544, 1442019600000, 1442030400000, -371, 164, 1 ] - - [ 1442030400000, "CA", -47, 8544, 1442023200000, 1442034000000, -371, 164, 1 ] - - [ 1442034000000, "CA", 178, 8544, 1442026800000, 1442037600000, -371, 164, 1 ] - - [ 1442037600000, "CA", -132, 8544, 1442030400000, 1442041200000, -371, 164, 1 ] - - [ 1442041200000, "CA", 5, 8544, 1442034000000, 1442044800000, -371, 164, 1 ] - - [ 1442044800000, "CA", 1, 8544, 1442037600000, 1442052000000, -371, 164, 2 ] - - [ 1442052000000, "CA", 38, 8544, 1442041200000, 1442059200000, -371, 164, 2 ] - - [ 1442059200000, "CA", 1036, 8544, 1442044800000, 1442062800000, -371, 164, 2 ] - - [ 1442062800000, "CA", -367, 8544, 1442052000000, 1442066400000, -371, 164, 2 ] - - [ 1442066400000, "CA", 307, 8544, 1442059200000, 1442070000000, -371, 164, 2 ] - - [ 1442070000000, "CA", 185, 8544, 1442062800000, 1442073600000, -371, 164, 2 ] - - [ 1442073600000, "CA", 86, 8544, 1442066400000, 1442077200000, -371, 164, 2 ] - - [ 1442077200000, "CA", -282, 8544, 1442070000000, 1442080800000, -371, 164, 3 ] - - [ 1442080800000, "CA", 481, 8544, 1442073600000, 1442084400000, -371, 164, 3 ] - - [ 1442084400000, "CA", 44, 8544, 1442077200000, 1442088000000, -371, 164, 3 ] - - [ 1442088000000, "CA", 35, 8544, 1442080800000, 1442091600000, -371, 164, 3 ] - - [ 1442091600000, "CA", 2858, 8544, 1442084400000, 1442095200000, -371, 164, 3 ] - - [ 1442095200000, "CA", -361, 8544, 1442088000000, 1442098800000, -371, 164, 3 ] - - [ 1442098800000, "CA", 164, 8544, 1442091600000, null, -371, 164, 3 ] - - [ 1442037600000, "CH", 59, 753, null, 1442041200000, 59, 67, 1 ] - - [ 1442041200000, "CH", 198, 753, null, 1442044800000, 59, 67, 1 ] - - [ 1442044800000, "CH", -54, 753, 1442037600000, 1442048400000, 59, 67, 1 ] - - [ 1442048400000, "CH", 24, 753, 1442041200000, 1442052000000, 59, 67, 1 ] - - [ 1442052000000, "CH", 47, 753, 1442044800000, 1442055600000, 59, 67, 2 ] - - [ 1442055600000, "CH", 0, 753, 1442048400000, 1442062800000, 59, 67, 2 ] - - [ 1442062800000, "CH", 22, 753, 1442052000000, 1442070000000, 59, 67, 2 ] - - [ 1442070000000, "CH", 11, 753, 1442055600000, 1442073600000, 59, 67, 2 ] - - [ 1442073600000, "CH", 360, 753, 1442062800000, 1442077200000, 59, 67, 3 ] - - [ 1442077200000, "CH", 6, 753, 1442070000000, 1442084400000, 59, 67, 3 ] - - [ 1442084400000, "CH", 13, 753, 1442073600000, 1442091600000, 59, 67, 3 ] - - [ 1442091600000, "CH", 67, 753, 1442077200000, null, 59, 67, 3 ] - - [ 1442016000000, "CL", 161, 533, null, 1442019600000, 161, 9, 1 ] - - [ 1442019600000, "CL", -370, 533, null, 1442023200000, 161, 9, 1 ] - - [ 1442023200000, "CL", 15, 533, 1442016000000, 1442030400000, 161, 9, 1 ] - - [ 1442030400000, "CL", 40, 533, 1442019600000, 1442034000000, 161, 9, 1 ] - - [ 1442034000000, "CL", -1, 533, 1442023200000, 1442037600000, 161, 9, 1 ] - - [ 1442037600000, "CL", 2, 533, 1442030400000, 1442041200000, 161, 9, 1 ] - - [ 1442041200000, "CL", -1, 533, 1442034000000, 1442052000000, 161, 9, 1 ] - - [ 1442052000000, "CL", 390, 533, 1442037600000, 1442059200000, 161, 9, 2 ] - - [ 1442059200000, "CL", -12, 533, 1442041200000, 1442062800000, 161, 9, 2 ] - - [ 1442062800000, "CL", 17, 533, 1442052000000, 1442066400000, 161, 9, 2 ] - - [ 1442066400000, "CL", -41, 533, 1442059200000, 1442070000000, 161, 9, 2 ] - - [ 1442070000000, "CL", 13, 533, 1442062800000, 1442073600000, 161, 9, 2 ] - - [ 1442073600000, "CL", 153, 533, 1442066400000, 1442077200000, 161, 9, 2 ] - - [ 1442077200000, "CL", -15, 533, 1442070000000, 1442080800000, 161, 9, 2 ] - - [ 1442080800000, "CL", 17, 533, 1442073600000, 1442084400000, 161, 9, 3 ] - - [ 1442084400000, "CL", 126, 533, 1442077200000, 1442088000000, 161, 9, 3 ] - - [ 1442088000000, "CL", 286, 533, 1442080800000, 1442091600000, 161, 9, 3 ] - - [ 1442091600000, "CL", 20, 533, 1442084400000, 1442095200000, 161, 9, 3 ] - - [ 1442095200000, "CL", -276, 533, 1442088000000, 1442098800000, 161, 9, 3 ] - - [ 1442098800000, "CL", 9, 533, 1442091600000, null, 161, 9, 3 ] - - [ 1442023200000, "CN", -13, 583, null, 1442026800000, -13, -1, 1 ] - - [ 1442026800000, "CN", 154, 583, null, 1442037600000, -13, -1, 1 ] - - [ 1442037600000, "CN", 98, 583, 1442023200000, 1442048400000, -13, -1, 1 ] - - [ 1442048400000, "CN", 293, 583, 1442026800000, 1442052000000, -13, -1, 1 ] - - [ 1442052000000, "CN", 0, 583, 1442037600000, 1442055600000, -13, -1, 2 ] - - [ 1442055600000, "CN", 69, 583, 1442048400000, 1442059200000, -13, -1, 2 ] - - [ 1442059200000, "CN", 8, 583, 1442052000000, 1442066400000, -13, -1, 2 ] - - [ 1442066400000, "CN", -15, 583, 1442055600000, 1442080800000, -13, -1, 3 ] - - [ 1442080800000, "CN", -10, 583, 1442059200000, 1442084400000, -13, -1, 3 ] - - [ 1442084400000, "CN", -1, 583, 1442066400000, null, -13, -1, 3 ] - - [ 1442016000000, "CO", 16, 59611, null, 1442019600000, 16, 83, 1 ] - - [ 1442019600000, "CO", 12, 59611, null, 1442023200000, 16, 83, 1 ] - - [ 1442023200000, "CO", 9, 59611, 1442016000000, 1442030400000, 16, 83, 1 ] - - [ 1442030400000, "CO", 441, 59611, 1442019600000, 1442059200000, 16, 83, 1 ] - - [ 1442059200000, "CO", 473, 59611, 1442023200000, 1442066400000, 16, 83, 1 ] - - [ 1442066400000, "CO", 288, 59611, 1442030400000, 1442070000000, 16, 83, 2 ] - - [ 1442070000000, "CO", -45, 59611, 1442059200000, 1442073600000, 16, 83, 2 ] - - [ 1442073600000, "CO", 39860, 59611, 1442066400000, 1442077200000, 16, 83, 2 ] - - [ 1442077200000, "CO", 581, 59611, 1442070000000, 1442080800000, 16, 83, 2 ] - - [ 1442080800000, "CO", 25, 59611, 1442073600000, 1442084400000, 16, 83, 2 ] - - [ 1442084400000, "CO", 51, 59611, 1442077200000, 1442088000000, 16, 83, 3 ] - - [ 1442088000000, "CO", 17150, 59611, 1442080800000, 1442091600000, 16, 83, 3 ] - - [ 1442091600000, "CO", 377, 59611, 1442084400000, 1442095200000, 16, 83, 3 ] - - [ 1442095200000, "CO", 290, 59611, 1442088000000, 1442098800000, 16, 83, 3 ] - - [ 1442098800000, "CO", 83, 59611, 1442091600000, null, 16, 83, 3 ] - - [ 1442019600000, "CR", 62, 3241, null, 1442023200000, 62, 72, 1 ] - - [ 1442023200000, "CR", 62, 3241, null, 1442026800000, 62, 72, 1 ] - - [ 1442026800000, "CR", 140, 3241, 1442019600000, 1442030400000, 62, 72, 1 ] - - [ 1442030400000, "CR", 2497, 3241, 1442023200000, 1442041200000, 62, 72, 2 ] - - [ 1442041200000, "CR", 51, 3241, 1442026800000, 1442044800000, 62, 72, 2 ] - - [ 1442044800000, "CR", 194, 3241, 1442030400000, 1442048400000, 62, 72, 2 ] - - [ 1442048400000, "CR", 163, 3241, 1442041200000, 1442088000000, 62, 72, 3 ] - - [ 1442088000000, "CR", 72, 3241, 1442044800000, null, 62, 72, 3 ] - - [ 1442026800000, "CZ", -19, 3479, null, 1442034000000, -19, 2, 1 ] - - [ 1442034000000, "CZ", 78, 3479, null, 1442037600000, -19, 2, 1 ] - - [ 1442037600000, "CZ", 18, 3479, 1442026800000, 1442055600000, -19, 2, 1 ] - - [ 1442055600000, "CZ", 1073, 3479, 1442034000000, 1442059200000, -19, 2, 1 ] - - [ 1442059200000, "CZ", 21, 3479, 1442037600000, 1442062800000, -19, 2, 2 ] - - [ 1442062800000, "CZ", 0, 3479, 1442055600000, 1442070000000, -19, 2, 2 ] - - [ 1442070000000, "CZ", 168, 3479, 1442059200000, 1442073600000, -19, 2, 2 ] - - [ 1442073600000, "CZ", 2051, 3479, 1442062800000, 1442077200000, -19, 2, 2 ] - - [ 1442077200000, "CZ", 115, 3479, 1442070000000, 1442080800000, -19, 2, 3 ] - - [ 1442080800000, "CZ", -28, 3479, 1442073600000, 1442098800000, -19, 2, 3 ] - - [ 1442098800000, "CZ", 2, 3479, 1442077200000, null, -19, 2, 3 ] - - [ 1442016000000, "DE", 167, 25583, null, 1442019600000, 167, 329, 1 ] - - [ 1442019600000, "DE", 0, 25583, null, 1442023200000, 167, 329, 1 ] - - [ 1442023200000, "DE", 64, 25583, 1442016000000, 1442030400000, 167, 329, 1 ] - - [ 1442030400000, "DE", 373, 25583, 1442019600000, 1442034000000, 167, 329, 1 ] - - [ 1442034000000, "DE", 358, 25583, 1442023200000, 1442037600000, 167, 329, 1 ] - - [ 1442037600000, "DE", 544, 25583, 1442030400000, 1442041200000, 167, 329, 1 ] - - [ 1442041200000, "DE", 197, 25583, 1442034000000, 1442044800000, 167, 329, 1 ] - - [ 1442044800000, "DE", 979, 25583, 1442037600000, 1442048400000, 167, 329, 1 ] - - [ 1442048400000, "DE", 811, 25583, 1442041200000, 1442052000000, 167, 329, 2 ] - - [ 1442052000000, "DE", 1600, 25583, 1442044800000, 1442055600000, 167, 329, 2 ] - - [ 1442055600000, "DE", 1523, 25583, 1442048400000, 1442059200000, 167, 329, 2 ] - - [ 1442059200000, "DE", 289, 25583, 1442052000000, 1442062800000, 167, 329, 2 ] - - [ 1442062800000, "DE", 283, 25583, 1442055600000, 1442066400000, 167, 329, 2 ] - - [ 1442066400000, "DE", 1577, 25583, 1442059200000, 1442070000000, 167, 329, 2 ] - - [ 1442070000000, "DE", 1666, 25583, 1442062800000, 1442073600000, 167, 329, 2 ] - - [ 1442073600000, "DE", 6075, 25583, 1442066400000, 1442077200000, 167, 329, 2 ] - - [ 1442077200000, "DE", 2188, 25583, 1442070000000, 1442080800000, 167, 329, 3 ] - - [ 1442080800000, "DE", 1133, 25583, 1442073600000, 1442084400000, 167, 329, 3 ] - - [ 1442084400000, "DE", -125, 25583, 1442077200000, 1442088000000, 167, 329, 3 ] - - [ 1442088000000, "DE", 190, 25583, 1442080800000, 1442091600000, 167, 329, 3 ] - - [ 1442091600000, "DE", 4355, 25583, 1442084400000, 1442095200000, 167, 329, 3 ] - - [ 1442095200000, "DE", 1007, 25583, 1442088000000, 1442098800000, 167, 329, 3 ] - - [ 1442098800000, "DE", 329, 25583, 1442091600000, null, 167, 329, 3 ] - - [ 1442037600000, "DK", 10, 594, null, 1442044800000, 10, 0, 1 ] - - [ 1442044800000, "DK", 36, 594, null, 1442048400000, 10, 0, 1 ] - - [ 1442048400000, "DK", -5, 594, 1442037600000, 1442055600000, 10, 0, 1 ] - - [ 1442055600000, "DK", 42, 594, 1442044800000, 1442059200000, 10, 0, 1 ] - - [ 1442059200000, "DK", 0, 594, 1442048400000, 1442062800000, 10, 0, 2 ] - - [ 1442062800000, "DK", 1, 594, 1442055600000, 1442066400000, 10, 0, 2 ] - - [ 1442066400000, "DK", 416, 594, 1442059200000, 1442077200000, 10, 0, 2 ] - - [ 1442077200000, "DK", -9, 594, 1442062800000, 1442080800000, 10, 0, 2 ] - - [ 1442080800000, "DK", 61, 594, 1442066400000, 1442084400000, 10, 0, 3 ] - - [ 1442084400000, "DK", -97, 594, 1442077200000, 1442091600000, 10, 0, 3 ] - - [ 1442091600000, "DK", 139, 594, 1442080800000, 1442095200000, 10, 0, 3 ] - - [ 1442095200000, "DK", 0, 594, 1442084400000, null, 10, 0, 3 ] - - [ 1442023200000, "DO", 8, 264, null, 1442066400000, 8, 13, 1 ] - - [ 1442066400000, "DO", 35, 264, null, 1442073600000, 8, 13, 1 ] - - [ 1442073600000, "DO", 200, 264, 1442023200000, 1442084400000, 8, 13, 2 ] - - [ 1442084400000, "DO", 8, 264, 1442066400000, 1442095200000, 8, 13, 2 ] - - [ 1442095200000, "DO", 13, 264, 1442073600000, null, 8, 13, 3 ] - - [ 1442077200000, "DZ", -1, -1, null, null, -1, -1, 1 ] - - [ 1442019600000, "EC", 29, 232, null, 1442023200000, 29, 10, 1 ] - - [ 1442023200000, "EC", -9, 232, null, 1442030400000, 29, 10, 1 ] - - [ 1442030400000, "EC", 0, 232, 1442019600000, 1442077200000, 29, 10, 2 ] - - [ 1442077200000, "EC", -366, 232, 1442023200000, 1442084400000, 29, 10, 2 ] - - [ 1442084400000, "EC", 568, 232, 1442030400000, 1442095200000, 29, 10, 3 ] - - [ 1442095200000, "EC", 10, 232, 1442077200000, null, 29, 10, 3 ] - - [ 1442041200000, "EE", 37, 18, null, 1442044800000, 37, -19, 1 ] - - [ 1442044800000, "EE", -19, 18, null, null, 37, -19, 2 ] - - [ 1442026800000, "EG", 16, 170, null, 1442055600000, 16, 27, 1 ] - - [ 1442055600000, "EG", 14, 170, null, 1442062800000, 16, 27, 1 ] - - [ 1442062800000, "EG", 112, 170, 1442026800000, 1442073600000, 16, 27, 2 ] - - [ 1442073600000, "EG", 1, 170, 1442055600000, 1442091600000, 16, 27, 2 ] - - [ 1442091600000, "EG", 27, 170, 1442062800000, null, 16, 27, 3 ] - - [ 1442019600000, "ES", 103, 7449, null, 1442023200000, 103, 458, 1 ] - - [ 1442023200000, "ES", -5, 7449, null, 1442034000000, 103, 458, 1 ] - - [ 1442034000000, "ES", -52, 7449, 1442019600000, 1442037600000, 103, 458, 1 ] - - [ 1442037600000, "ES", 3, 7449, 1442023200000, 1442041200000, 103, 458, 1 ] - - [ 1442041200000, "ES", 118, 7449, 1442034000000, 1442044800000, 103, 458, 1 ] - - [ 1442044800000, "ES", -169, 7449, 1442037600000, 1442048400000, 103, 458, 1 ] - - [ 1442048400000, "ES", 158, 7449, 1442041200000, 1442052000000, 103, 458, 1 ] - - [ 1442052000000, "ES", -4, 7449, 1442044800000, 1442055600000, 103, 458, 2 ] - - [ 1442055600000, "ES", 495, 7449, 1442048400000, 1442059200000, 103, 458, 2 ] - - [ 1442059200000, "ES", 1086, 7449, 1442052000000, 1442062800000, 103, 458, 2 ] - - [ 1442062800000, "ES", -71, 7449, 1442055600000, 1442066400000, 103, 458, 2 ] - - [ 1442066400000, "ES", 461, 7449, 1442059200000, 1442070000000, 103, 458, 2 ] - - [ 1442070000000, "ES", 61, 7449, 1442062800000, 1442073600000, 103, 458, 2 ] - - [ 1442073600000, "ES", 154, 7449, 1442066400000, 1442077200000, 103, 458, 2 ] - - [ 1442077200000, "ES", 1240, 7449, 1442070000000, 1442084400000, 103, 458, 3 ] - - [ 1442084400000, "ES", 337, 7449, 1442073600000, 1442088000000, 103, 458, 3 ] - - [ 1442088000000, "ES", -130, 7449, 1442077200000, 1442091600000, 103, 458, 3 ] - - [ 1442091600000, "ES", 700, 7449, 1442084400000, 1442095200000, 103, 458, 3 ] - - [ 1442095200000, "ES", 2506, 7449, 1442088000000, 1442098800000, 103, 458, 3 ] - - [ 1442098800000, "ES", 458, 7449, 1442091600000, null, 103, 458, 3 ] - - [ 1442030400000, "FI", 1491, 3579, null, 1442037600000, 1491, 69, 1 ] - - [ 1442037600000, "FI", 14, 3579, null, 1442048400000, 1491, 69, 1 ] - - [ 1442048400000, "FI", 12, 3579, 1442030400000, 1442052000000, 1491, 69, 1 ] - - [ 1442052000000, "FI", 186, 3579, 1442037600000, 1442059200000, 1491, 69, 1 ] - - [ 1442059200000, "FI", 407, 3579, 1442048400000, 1442062800000, 1491, 69, 2 ] - - [ 1442062800000, "FI", 19, 3579, 1442052000000, 1442066400000, 1491, 69, 2 ] - - [ 1442066400000, "FI", 183, 3579, 1442059200000, 1442073600000, 1491, 69, 2 ] - - [ 1442073600000, "FI", -1, 3579, 1442062800000, 1442077200000, 1491, 69, 2 ] - - [ 1442077200000, "FI", 200, 3579, 1442066400000, 1442080800000, 1491, 69, 3 ] - - [ 1442080800000, "FI", 104, 3579, 1442073600000, 1442084400000, 1491, 69, 3 ] - - [ 1442084400000, "FI", 895, 3579, 1442077200000, 1442095200000, 1491, 69, 3 ] - - [ 1442095200000, "FI", 69, 3579, 1442080800000, null, 1491, 69, 3 ] - - [ 1442016000000, "FR", -1, 37281, null, 1442019600000, -1, 136, 1 ] - - [ 1442019600000, "FR", 585, 37281, null, 1442023200000, -1, 136, 1 ] - - [ 1442023200000, "FR", 628, 37281, 1442016000000, 1442026800000, -1, 136, 1 ] - - [ 1442026800000, "FR", 86, 37281, 1442019600000, 1442034000000, -1, 136, 1 ] - - [ 1442034000000, "FR", 476, 37281, 1442023200000, 1442037600000, -1, 136, 1 ] - - [ 1442037600000, "FR", 4174, 37281, 1442026800000, 1442041200000, -1, 136, 1 ] - - [ 1442041200000, "FR", 604, 37281, 1442034000000, 1442044800000, -1, 136, 1 ] - - [ 1442044800000, "FR", 172, 37281, 1442037600000, 1442048400000, -1, 136, 1 ] - - [ 1442048400000, "FR", 3027, 37281, 1442041200000, 1442052000000, -1, 136, 2 ] - - [ 1442052000000, "FR", 637, 37281, 1442044800000, 1442055600000, -1, 136, 2 ] - - [ 1442055600000, "FR", 463, 37281, 1442048400000, 1442059200000, -1, 136, 2 ] - - [ 1442059200000, "FR", 4650, 37281, 1442052000000, 1442062800000, -1, 136, 2 ] - - [ 1442062800000, "FR", 5676, 37281, 1442055600000, 1442066400000, -1, 136, 2 ] - - [ 1442066400000, "FR", 2516, 37281, 1442059200000, 1442070000000, -1, 136, 2 ] - - [ 1442070000000, "FR", 474, 37281, 1442062800000, 1442073600000, -1, 136, 2 ] - - [ 1442073600000, "FR", 3522, 37281, 1442066400000, 1442077200000, -1, 136, 2 ] - - [ 1442077200000, "FR", -444, 37281, 1442070000000, 1442080800000, -1, 136, 3 ] - - [ 1442080800000, "FR", 557, 37281, 1442073600000, 1442084400000, -1, 136, 3 ] - - [ 1442084400000, "FR", 6643, 37281, 1442077200000, 1442088000000, -1, 136, 3 ] - - [ 1442088000000, "FR", 1872, 37281, 1442080800000, 1442091600000, -1, 136, 3 ] - - [ 1442091600000, "FR", 741, 37281, 1442084400000, 1442095200000, -1, 136, 3 ] - - [ 1442095200000, "FR", 87, 37281, 1442088000000, 1442098800000, -1, 136, 3 ] - - [ 1442098800000, "FR", 136, 37281, 1442091600000, null, -1, 136, 3 ] - - [ 1442016000000, "GB", -44, 35857, null, 1442019600000, -44, 49, 1 ] - - [ 1442019600000, "GB", 54, 35857, null, 1442023200000, -44, 49, 1 ] - - [ 1442023200000, "GB", 1816, 35857, 1442016000000, 1442026800000, -44, 49, 1 ] - - [ 1442026800000, "GB", 339, 35857, 1442019600000, 1442030400000, -44, 49, 1 ] - - [ 1442030400000, "GB", 2524, 35857, 1442023200000, 1442034000000, -44, 49, 1 ] - - [ 1442034000000, "GB", -12, 35857, 1442026800000, 1442037600000, -44, 49, 1 ] - - [ 1442037600000, "GB", 544, 35857, 1442030400000, 1442041200000, -44, 49, 1 ] - - [ 1442041200000, "GB", 42, 35857, 1442034000000, 1442044800000, -44, 49, 1 ] - - [ 1442044800000, "GB", 32, 35857, 1442037600000, 1442048400000, -44, 49, 2 ] - - [ 1442048400000, "GB", 740, 35857, 1442041200000, 1442052000000, -44, 49, 2 ] - - [ 1442052000000, "GB", 168, 35857, 1442044800000, 1442055600000, -44, 49, 2 ] - - [ 1442055600000, "GB", 453, 35857, 1442048400000, 1442059200000, -44, 49, 2 ] - - [ 1442059200000, "GB", 16111, 35857, 1442052000000, 1442062800000, -44, 49, 2 ] - - [ 1442062800000, "GB", 5743, 35857, 1442055600000, 1442066400000, -44, 49, 2 ] - - [ 1442066400000, "GB", 671, 35857, 1442059200000, 1442070000000, -44, 49, 2 ] - - [ 1442070000000, "GB", 374, 35857, 1442062800000, 1442073600000, -44, 49, 2 ] - - [ 1442073600000, "GB", 648, 35857, 1442066400000, 1442077200000, -44, 49, 3 ] - - [ 1442077200000, "GB", 1135, 35857, 1442070000000, 1442080800000, -44, 49, 3 ] - - [ 1442080800000, "GB", 1444, 35857, 1442073600000, 1442084400000, -44, 49, 3 ] - - [ 1442084400000, "GB", 384, 35857, 1442077200000, 1442088000000, -44, 49, 3 ] - - [ 1442088000000, "GB", 1593, 35857, 1442080800000, 1442091600000, -44, 49, 3 ] - - [ 1442091600000, "GB", 811, 35857, 1442084400000, 1442095200000, -44, 49, 3 ] - - [ 1442095200000, "GB", 238, 35857, 1442088000000, 1442098800000, -44, 49, 3 ] - - [ 1442098800000, "GB", 49, 35857, 1442091600000, null, -44, 49, 3 ] - - [ 1442044800000, "GE", -21, -140, null, 1442052000000, -21, -27, 1 ] - - [ 1442052000000, "GE", -108, -140, null, 1442062800000, -21, -27, 1 ] - - [ 1442062800000, "GE", 16, -140, 1442044800000, 1442080800000, -21, -27, 2 ] - - [ 1442080800000, "GE", -27, -140, 1442052000000, null, -21, -27, 3 ] - - [ 1442088000000, "GH", 0, 0, null, null, 0, 0, 1 ] - - [ 1442019600000, "GR", 82, 149, null, 1442034000000, 82, 123, 1 ] - - [ 1442034000000, "GR", 0, 149, null, 1442041200000, 82, 123, 1 ] - - [ 1442041200000, "GR", 7, 149, 1442019600000, 1442048400000, 82, 123, 1 ] - - [ 1442048400000, "GR", -26, 149, 1442034000000, 1442062800000, 82, 123, 1 ] - - [ 1442062800000, "GR", 8, 149, 1442041200000, 1442070000000, 82, 123, 2 ] - - [ 1442070000000, "GR", 2, 149, 1442048400000, 1442073600000, 82, 123, 2 ] - - [ 1442073600000, "GR", -314, 149, 1442062800000, 1442080800000, 82, 123, 2 ] - - [ 1442080800000, "GR", 88, 149, 1442070000000, 1442084400000, 82, 123, 3 ] - - [ 1442084400000, "GR", 179, 149, 1442073600000, 1442091600000, 82, 123, 3 ] - - [ 1442091600000, "GR", 123, 149, 1442080800000, null, 82, 123, 3 ] - - [ 1442023200000, "GT", -167, 7, null, 1442026800000, -167, 1, 1 ] - - [ 1442026800000, "GT", 173, 7, null, 1442098800000, -167, 1, 2 ] - - [ 1442098800000, "GT", 1, 7, 1442023200000, null, -167, 1, 3 ] - - [ 1442019600000, "HK", -113, 10743, null, 1442023200000, -113, -1, 1 ] - - [ 1442023200000, "HK", 2414, 10743, null, 1442026800000, -113, -1, 1 ] - - [ 1442026800000, "HK", -211, 10743, 1442019600000, 1442030400000, -113, -1, 1 ] - - [ 1442030400000, "HK", 157, 10743, 1442023200000, 1442034000000, -113, -1, 1 ] - - [ 1442034000000, "HK", 1137, 10743, 1442026800000, 1442037600000, -113, -1, 1 ] - - [ 1442037600000, "HK", 636, 10743, 1442030400000, 1442041200000, -113, -1, 1 ] - - [ 1442041200000, "HK", -15, 10743, 1442034000000, 1442044800000, -113, -1, 1 ] - - [ 1442044800000, "HK", 21, 10743, 1442037600000, 1442048400000, -113, -1, 2 ] - - [ 1442048400000, "HK", 1, 10743, 1442041200000, 1442052000000, -113, -1, 2 ] - - [ 1442052000000, "HK", 15, 10743, 1442044800000, 1442055600000, -113, -1, 2 ] - - [ 1442055600000, "HK", 804, 10743, 1442048400000, 1442059200000, -113, -1, 2 ] - - [ 1442059200000, "HK", 2, 10743, 1442052000000, 1442062800000, -113, -1, 2 ] - - [ 1442062800000, "HK", 1, 10743, 1442055600000, 1442066400000, -113, -1, 2 ] - - [ 1442066400000, "HK", 39, 10743, 1442059200000, 1442070000000, -113, -1, 3 ] - - [ 1442070000000, "HK", 314, 10743, 1442062800000, 1442073600000, -113, -1, 3 ] - - [ 1442073600000, "HK", 5545, 10743, 1442066400000, 1442080800000, -113, -1, 3 ] - - [ 1442080800000, "HK", 0, 10743, 1442070000000, 1442091600000, -113, -1, 3 ] - - [ 1442091600000, "HK", -3, 10743, 1442073600000, 1442095200000, -113, -1, 3 ] - - [ 1442095200000, "HK", -1, 10743, 1442080800000, null, -113, -1, 3 ] - - [ 1442026800000, "HN", -1, -1, null, null, -1, -1, 1 ] - - [ 1442070000000, "HR", 32, 382, null, 1442073600000, 32, 82, 1 ] - - [ 1442073600000, "HR", 0, 382, null, 1442077200000, 32, 82, 1 ] - - [ 1442077200000, "HR", 58, 382, 1442070000000, 1442080800000, 32, 82, 2 ] - - [ 1442080800000, "HR", 220, 382, 1442073600000, 1442084400000, 32, 82, 2 ] - - [ 1442084400000, "HR", -10, 382, 1442077200000, 1442088000000, 32, 82, 3 ] - - [ 1442088000000, "HR", 82, 382, 1442080800000, null, 32, 82, 3 ] - - [ 1442019600000, "HU", 46, 2116, null, 1442037600000, 46, 110, 1 ] - - [ 1442037600000, "HU", 197, 2116, null, 1442041200000, 46, 110, 1 ] - - [ 1442041200000, "HU", 91, 2116, 1442019600000, 1442044800000, 46, 110, 1 ] - - [ 1442044800000, "HU", 547, 2116, 1442037600000, 1442048400000, 46, 110, 1 ] - - [ 1442048400000, "HU", 499, 2116, 1442041200000, 1442055600000, 46, 110, 1 ] - - [ 1442055600000, "HU", -2, 2116, 1442044800000, 1442062800000, 46, 110, 2 ] - - [ 1442062800000, "HU", 50, 2116, 1442048400000, 1442080800000, 46, 110, 2 ] - - [ 1442080800000, "HU", 242, 2116, 1442055600000, 1442084400000, 46, 110, 2 ] - - [ 1442084400000, "HU", 141, 2116, 1442062800000, 1442088000000, 46, 110, 2 ] - - [ 1442088000000, "HU", -71, 2116, 1442080800000, 1442091600000, 46, 110, 3 ] - - [ 1442091600000, "HU", -5, 2116, 1442084400000, 1442095200000, 46, 110, 3 ] - - [ 1442095200000, "HU", 271, 2116, 1442088000000, 1442098800000, 46, 110, 3 ] - - [ 1442098800000, "HU", 110, 2116, 1442091600000, null, 46, 110, 3 ] - - [ 1442023200000, "ID", 106, -255, null, 1442026800000, 106, 13, 1 ] - - [ 1442026800000, "ID", -416, -255, null, 1442030400000, 106, 13, 1 ] - - [ 1442030400000, "ID", 279, -255, 1442023200000, 1442034000000, 106, 13, 1 ] - - [ 1442034000000, "ID", 19, -255, 1442026800000, 1442037600000, 106, 13, 1 ] - - [ 1442037600000, "ID", 14, -255, 1442030400000, 1442041200000, 106, 13, 1 ] - - [ 1442041200000, "ID", 2, -255, 1442034000000, 1442044800000, 106, 13, 2 ] - - [ 1442044800000, "ID", -388, -255, 1442037600000, 1442055600000, 106, 13, 2 ] - - [ 1442055600000, "ID", 16, -255, 1442041200000, 1442059200000, 106, 13, 2 ] - - [ 1442059200000, "ID", 17, -255, 1442044800000, 1442070000000, 106, 13, 2 ] - - [ 1442070000000, "ID", 42, -255, 1442055600000, 1442091600000, 106, 13, 3 ] - - [ 1442091600000, "ID", 21, -255, 1442059200000, 1442095200000, 106, 13, 3 ] - - [ 1442095200000, "ID", 20, -255, 1442070000000, 1442098800000, 106, 13, 3 ] - - [ 1442098800000, "ID", 13, -255, 1442091600000, null, 106, 13, 3 ] - - [ 1442026800000, "IE", 1, 2142, null, 1442030400000, 1, -71, 1 ] - - [ 1442030400000, "IE", 1, 2142, null, 1442048400000, 1, -71, 1 ] - - [ 1442048400000, "IE", 27, 2142, 1442026800000, 1442066400000, 1, -71, 1 ] - - [ 1442066400000, "IE", 1062, 2142, 1442030400000, 1442070000000, 1, -71, 2 ] - - [ 1442070000000, "IE", -100, 2142, 1442048400000, 1442077200000, 1, -71, 2 ] - - [ 1442077200000, "IE", 403, 2142, 1442066400000, 1442084400000, 1, -71, 2 ] - - [ 1442084400000, "IE", 819, 2142, 1442070000000, 1442091600000, 1, -71, 3 ] - - [ 1442091600000, "IE", -71, 2142, 1442077200000, null, 1, -71, 3 ] - - [ 1442041200000, "IL", 35, 6617, null, 1442044800000, 35, 3, 1 ] - - [ 1442044800000, "IL", 218, 6617, null, 1442048400000, 35, 3, 1 ] - - [ 1442048400000, "IL", 25, 6617, 1442041200000, 1442052000000, 35, 3, 1 ] - - [ 1442052000000, "IL", 2745, 6617, 1442044800000, 1442055600000, 35, 3, 1 ] - - [ 1442055600000, "IL", 4, 6617, 1442048400000, 1442059200000, 35, 3, 1 ] - - [ 1442059200000, "IL", 1205, 6617, 1442052000000, 1442062800000, 35, 3, 1 ] - - [ 1442062800000, "IL", 180, 6617, 1442055600000, 1442066400000, 35, 3, 2 ] - - [ 1442066400000, "IL", 3, 6617, 1442059200000, 1442070000000, 35, 3, 2 ] - - [ 1442070000000, "IL", 49, 6617, 1442062800000, 1442073600000, 35, 3, 2 ] - - [ 1442073600000, "IL", 31, 6617, 1442066400000, 1442077200000, 35, 3, 2 ] - - [ 1442077200000, "IL", 187, 6617, 1442070000000, 1442080800000, 35, 3, 2 ] - - [ 1442080800000, "IL", 88, 6617, 1442073600000, 1442084400000, 35, 3, 3 ] - - [ 1442084400000, "IL", 1137, 6617, 1442077200000, 1442091600000, 35, 3, 3 ] - - [ 1442091600000, "IL", 707, 6617, 1442080800000, 1442095200000, 35, 3, 3 ] - - [ 1442095200000, "IL", 0, 6617, 1442084400000, 1442098800000, 35, 3, 3 ] - - [ 1442098800000, "IL", 3, 6617, 1442091600000, null, 35, 3, 3 ] - - [ 1442016000000, "IN", 1, 29166, null, 1442019600000, 1, 4, 1 ] - - [ 1442019600000, "IN", 38, 29166, null, 1442023200000, 1, 4, 1 ] - - [ 1442023200000, "IN", -142, 29166, 1442016000000, 1442026800000, 1, 4, 1 ] - - [ 1442026800000, "IN", 974, 29166, 1442019600000, 1442030400000, 1, 4, 1 ] - - [ 1442030400000, "IN", 1448, 29166, 1442023200000, 1442034000000, 1, 4, 1 ] - - [ 1442034000000, "IN", 1350, 29166, 1442026800000, 1442037600000, 1, 4, 1 ] - - [ 1442037600000, "IN", 135, 29166, 1442030400000, 1442041200000, 1, 4, 1 ] - - [ 1442041200000, "IN", 80, 29166, 1442034000000, 1442044800000, 1, 4, 1 ] - - [ 1442044800000, "IN", 2677, 29166, 1442037600000, 1442048400000, 1, 4, 2 ] - - [ 1442048400000, "IN", 262, 29166, 1442041200000, 1442052000000, 1, 4, 2 ] - - [ 1442052000000, "IN", 534, 29166, 1442044800000, 1442055600000, 1, 4, 2 ] - - [ 1442055600000, "IN", 166, 29166, 1442048400000, 1442059200000, 1, 4, 2 ] - - [ 1442059200000, "IN", 708, 29166, 1442052000000, 1442062800000, 1, 4, 2 ] - - [ 1442062800000, "IN", 1547, 29166, 1442055600000, 1442066400000, 1, 4, 2 ] - - [ 1442066400000, "IN", 116, 29166, 1442059200000, 1442070000000, 1, 4, 2 ] - - [ 1442070000000, "IN", 12091, 29166, 1442062800000, 1442073600000, 1, 4, 3 ] - - [ 1442073600000, "IN", 1170, 29166, 1442066400000, 1442077200000, 1, 4, 3 ] - - [ 1442077200000, "IN", 5699, 29166, 1442070000000, 1442080800000, 1, 4, 3 ] - - [ 1442080800000, "IN", 0, 29166, 1442073600000, 1442084400000, 1, 4, 3 ] - - [ 1442084400000, "IN", 187, 29166, 1442077200000, 1442088000000, 1, 4, 3 ] - - [ 1442088000000, "IN", 121, 29166, 1442080800000, 1442095200000, 1, 4, 3 ] - - [ 1442095200000, "IN", 4, 29166, 1442084400000, null, 1, 4, 3 ] - - [ 1442041200000, "IQ", -1, 3, null, 1442044800000, -1, -2, 1 ] - - [ 1442044800000, "IQ", 6, 3, null, 1442052000000, -1, -2, 1 ] - - [ 1442052000000, "IQ", 0, 3, 1442041200000, 1442095200000, -1, -2, 2 ] - - [ 1442095200000, "IQ", -2, 3, 1442044800000, null, -1, -2, 3 ] - - [ 1442026800000, "IR", 0, 2698, null, 1442030400000, 0, 0, 1 ] - - [ 1442030400000, "IR", 375, 2698, null, 1442034000000, 0, 0, 1 ] - - [ 1442034000000, "IR", -8, 2698, 1442026800000, 1442041200000, 0, 0, 1 ] - - [ 1442041200000, "IR", -79, 2698, 1442030400000, 1442044800000, 0, 0, 1 ] - - [ 1442044800000, "IR", 306, 2698, 1442034000000, 1442052000000, 0, 0, 1 ] - - [ 1442052000000, "IR", 155, 2698, 1442041200000, 1442055600000, 0, 0, 2 ] - - [ 1442055600000, "IR", -124, 2698, 1442044800000, 1442059200000, 0, 0, 2 ] - - [ 1442059200000, "IR", 1455, 2698, 1442052000000, 1442073600000, 0, 0, 2 ] - - [ 1442073600000, "IR", -193, 2698, 1442055600000, 1442077200000, 0, 0, 2 ] - - [ 1442077200000, "IR", -34, 2698, 1442059200000, 1442080800000, 0, 0, 3 ] - - [ 1442080800000, "IR", 131, 2698, 1442073600000, 1442088000000, 0, 0, 3 ] - - [ 1442088000000, "IR", 714, 2698, 1442077200000, 1442091600000, 0, 0, 3 ] - - [ 1442091600000, "IR", 0, 2698, 1442080800000, null, 0, 0, 3 ] - - [ 1442016000000, "IT", 0, 39091, null, 1442019600000, 0, 565, 1 ] - - [ 1442019600000, "IT", 183, 39091, null, 1442023200000, 0, 565, 1 ] - - [ 1442023200000, "IT", 111, 39091, 1442016000000, 1442026800000, 0, 565, 1 ] - - [ 1442026800000, "IT", 222, 39091, 1442019600000, 1442030400000, 0, 565, 1 ] - - [ 1442030400000, "IT", -17, 39091, 1442023200000, 1442034000000, 0, 565, 1 ] - - [ 1442034000000, "IT", 1006, 39091, 1442026800000, 1442037600000, 0, 565, 1 ] - - [ 1442037600000, "IT", -9, 39091, 1442030400000, 1442041200000, 0, 565, 1 ] - - [ 1442041200000, "IT", 20, 39091, 1442034000000, 1442044800000, 0, 565, 1 ] - - [ 1442044800000, "IT", 1483, 39091, 1442037600000, 1442048400000, 0, 565, 2 ] - - [ 1442048400000, "IT", 676, 39091, 1442041200000, 1442052000000, 0, 565, 2 ] - - [ 1442052000000, "IT", 1880, 39091, 1442044800000, 1442055600000, 0, 565, 2 ] - - [ 1442055600000, "IT", 6240, 39091, 1442048400000, 1442059200000, 0, 565, 2 ] - - [ 1442059200000, "IT", 542, 39091, 1442052000000, 1442062800000, 0, 565, 2 ] - - [ 1442062800000, "IT", 1938, 39091, 1442055600000, 1442066400000, 0, 565, 2 ] - - [ 1442066400000, "IT", 4155, 39091, 1442059200000, 1442070000000, 0, 565, 2 ] - - [ 1442070000000, "IT", 81, 39091, 1442062800000, 1442073600000, 0, 565, 2 ] - - [ 1442073600000, "IT", 2586, 39091, 1442066400000, 1442077200000, 0, 565, 3 ] - - [ 1442077200000, "IT", 2188, 39091, 1442070000000, 1442080800000, 0, 565, 3 ] - - [ 1442080800000, "IT", 5544, 39091, 1442073600000, 1442084400000, 0, 565, 3 ] - - [ 1442084400000, "IT", 2660, 39091, 1442077200000, 1442088000000, 0, 565, 3 ] - - [ 1442088000000, "IT", 3746, 39091, 1442080800000, 1442091600000, 0, 565, 3 ] - - [ 1442091600000, "IT", 351, 39091, 1442084400000, 1442095200000, 0, 565, 3 ] - - [ 1442095200000, "IT", 2940, 39091, 1442088000000, 1442098800000, 0, 565, 3 ] - - [ 1442098800000, "IT", 565, 39091, 1442091600000, null, 0, 565, 3 ] - - [ 1442070000000, "JM", 30, 30, null, null, 30, 30, 1 ] - - [ 1442055600000, "JO", -2, 2, null, 1442059200000, -2, 4, 1 ] - - [ 1442059200000, "JO", 0, 2, null, 1442080800000, -2, 4, 2 ] - - [ 1442080800000, "JO", 4, 2, 1442055600000, null, -2, 4, 3 ] - - [ 1442016000000, "JP", -113, 20378, null, 1442019600000, -113, -6, 1 ] - - [ 1442019600000, "JP", 2002, 20378, null, 1442023200000, -113, -6, 1 ] - - [ 1442023200000, "JP", 1959, 20378, 1442016000000, 1442026800000, -113, -6, 1 ] - - [ 1442026800000, "JP", 1035, 20378, 1442019600000, 1442030400000, -113, -6, 1 ] - - [ 1442030400000, "JP", 805, 20378, 1442023200000, 1442034000000, -113, -6, 1 ] - - [ 1442034000000, "JP", 910, 20378, 1442026800000, 1442037600000, -113, -6, 1 ] - - [ 1442037600000, "JP", 2181, 20378, 1442030400000, 1442041200000, -113, -6, 1 ] - - [ 1442041200000, "JP", 1373, 20378, 1442034000000, 1442044800000, -113, -6, 1 ] - - [ 1442044800000, "JP", 1569, 20378, 1442037600000, 1442048400000, -113, -6, 2 ] - - [ 1442048400000, "JP", 1981, 20378, 1442041200000, 1442052000000, -113, -6, 2 ] - - [ 1442052000000, "JP", 2789, 20378, 1442044800000, 1442055600000, -113, -6, 2 ] - - [ 1442055600000, "JP", 998, 20378, 1442048400000, 1442059200000, -113, -6, 2 ] - - [ 1442059200000, "JP", -85, 20378, 1442052000000, 1442062800000, -113, -6, 2 ] - - [ 1442062800000, "JP", 803, 20378, 1442055600000, 1442066400000, -113, -6, 2 ] - - [ 1442066400000, "JP", 167, 20378, 1442059200000, 1442070000000, -113, -6, 2 ] - - [ 1442070000000, "JP", 79, 20378, 1442062800000, 1442073600000, -113, -6, 2 ] - - [ 1442073600000, "JP", 1162, 20378, 1442066400000, 1442077200000, -113, -6, 3 ] - - [ 1442077200000, "JP", 51, 20378, 1442070000000, 1442080800000, -113, -6, 3 ] - - [ 1442080800000, "JP", 420, 20378, 1442073600000, 1442084400000, -113, -6, 3 ] - - [ 1442084400000, "JP", 13, 20378, 1442077200000, 1442088000000, -113, -6, 3 ] - - [ 1442088000000, "JP", 57, 20378, 1442080800000, 1442091600000, -113, -6, 3 ] - - [ 1442091600000, "JP", 228, 20378, 1442084400000, 1442095200000, -113, -6, 3 ] - - [ 1442095200000, "JP", 0, 20378, 1442088000000, 1442098800000, -113, -6, 3 ] - - [ 1442098800000, "JP", -6, 20378, 1442091600000, null, -113, -6, 3 ] - - [ 1442044800000, "KE", -1, -1, null, null, -1, -1, 1 ] - - [ 1442073600000, "KG", 6, 6, null, null, 6, 6, 1 ] - - [ 1442016000000, "KR", 1024, 13597, null, 1442019600000, 1024, -36, 1 ] - - [ 1442019600000, "KR", 445, 13597, null, 1442023200000, 1024, -36, 1 ] - - [ 1442023200000, "KR", 319, 13597, 1442016000000, 1442026800000, 1024, -36, 1 ] - - [ 1442026800000, "KR", -179, 13597, 1442019600000, 1442030400000, 1024, -36, 1 ] - - [ 1442030400000, "KR", 1035, 13597, 1442023200000, 1442034000000, 1024, -36, 1 ] - - [ 1442034000000, "KR", 434, 13597, 1442026800000, 1442037600000, 1024, -36, 1 ] - - [ 1442037600000, "KR", 26, 13597, 1442030400000, 1442041200000, 1024, -36, 1 ] - - [ 1442041200000, "KR", 20, 13597, 1442034000000, 1442044800000, 1024, -36, 1 ] - - [ 1442044800000, "KR", 829, 13597, 1442037600000, 1442048400000, 1024, -36, 2 ] - - [ 1442048400000, "KR", -374, 13597, 1442041200000, 1442052000000, 1024, -36, 2 ] - - [ 1442052000000, "KR", -3, 13597, 1442044800000, 1442055600000, 1024, -36, 2 ] - - [ 1442055600000, "KR", 3640, 13597, 1442048400000, 1442059200000, 1024, -36, 2 ] - - [ 1442059200000, "KR", 208, 13597, 1442052000000, 1442062800000, 1024, -36, 2 ] - - [ 1442062800000, "KR", 1096, 13597, 1442055600000, 1442066400000, 1024, -36, 2 ] - - [ 1442066400000, "KR", 3299, 13597, 1442059200000, 1442070000000, 1024, -36, 2 ] - - [ 1442070000000, "KR", 222, 13597, 1442062800000, 1442077200000, 1024, -36, 3 ] - - [ 1442077200000, "KR", -40, 13597, 1442066400000, 1442080800000, 1024, -36, 3 ] - - [ 1442080800000, "KR", -33, 13597, 1442070000000, 1442084400000, 1024, -36, 3 ] - - [ 1442084400000, "KR", 314, 13597, 1442077200000, 1442088000000, 1024, -36, 3 ] - - [ 1442088000000, "KR", 524, 13597, 1442080800000, 1442095200000, 1024, -36, 3 ] - - [ 1442095200000, "KR", 827, 13597, 1442084400000, 1442098800000, 1024, -36, 3 ] - - [ 1442098800000, "KR", -36, 13597, 1442088000000, null, 1024, -36, 3 ] - - [ 1442055600000, "KW", -2, 1778, null, 1442070000000, -2, -33, 1 ] - - [ 1442070000000, "KW", 1815, 1778, null, 1442077200000, -2, -33, 1 ] - - [ 1442077200000, "KW", -2, 1778, 1442055600000, 1442080800000, -2, -33, 2 ] - - [ 1442080800000, "KW", -33, 1778, 1442070000000, null, -2, -33, 3 ] - - [ 1442034000000, "KZ", 161, 1261, null, 1442044800000, 161, 91, 1 ] - - [ 1442044800000, "KZ", 401, 1261, null, 1442048400000, 161, 91, 1 ] - - [ 1442048400000, "KZ", 439, 1261, 1442034000000, 1442052000000, 161, 91, 1 ] - - [ 1442052000000, "KZ", 412, 1261, 1442044800000, 1442055600000, 161, 91, 1 ] - - [ 1442055600000, "KZ", 63, 1261, 1442048400000, 1442059200000, 161, 91, 2 ] - - [ 1442059200000, "KZ", 33, 1261, 1442052000000, 1442062800000, 161, 91, 2 ] - - [ 1442062800000, "KZ", 0, 1261, 1442055600000, 1442066400000, 161, 91, 2 ] - - [ 1442066400000, "KZ", 0, 1261, 1442059200000, 1442077200000, 161, 91, 2 ] - - [ 1442077200000, "KZ", -317, 1261, 1442062800000, 1442084400000, 161, 91, 3 ] - - [ 1442084400000, "KZ", -22, 1261, 1442066400000, 1442095200000, 161, 91, 3 ] - - [ 1442095200000, "KZ", 91, 1261, 1442077200000, null, 161, 91, 3 ] - - [ 1442055600000, "LB", -67, -67, null, null, -67, -67, 1 ] - - [ 1442026800000, "LK", 79, 131, null, 1442048400000, 79, -3, 1 ] - - [ 1442048400000, "LK", 8, 131, null, 1442052000000, 79, -3, 1 ] - - [ 1442052000000, "LK", 47, 131, 1442026800000, 1442084400000, 79, -3, 2 ] - - [ 1442084400000, "LK", -3, 131, 1442048400000, null, 79, -3, 3 ] - - [ 1442080800000, "LT", 12, -12, null, 1442098800000, 12, -24, 1 ] - - [ 1442098800000, "LT", -24, -12, null, null, 12, -24, 2 ] - - [ 1442059200000, "LU", 79, 606, null, 1442066400000, 79, 2, 1 ] - - [ 1442066400000, "LU", 0, 606, null, 1442077200000, 79, 2, 1 ] - - [ 1442077200000, "LU", 525, 606, 1442059200000, 1442095200000, 79, 2, 2 ] - - [ 1442095200000, "LU", 2, 606, 1442066400000, null, 79, 2, 3 ] - - [ 1442095200000, "LV", 0, 0, null, null, 0, 0, 1 ] - - [ 1442019600000, "MA", -1, 229, null, 1442055600000, -1, 8, 1 ] - - [ 1442055600000, "MA", 23, 229, null, 1442059200000, -1, 8, 1 ] - - [ 1442059200000, "MA", -56, 229, 1442019600000, 1442062800000, -1, 8, 1 ] - - [ 1442062800000, "MA", 0, 229, 1442055600000, 1442077200000, -1, 8, 2 ] - - [ 1442077200000, "MA", 250, 229, 1442059200000, 1442080800000, -1, 8, 2 ] - - [ 1442080800000, "MA", 5, 229, 1442062800000, 1442098800000, -1, 8, 3 ] - - [ 1442098800000, "MA", 8, 229, 1442077200000, null, -1, 8, 3 ] - - [ 1442077200000, "MD", 6916, 6916, null, null, 6916, 6916, 1 ] - - [ 1442073600000, "ME", 0, 0, null, null, 0, 0, 1 ] - - [ 1442052000000, "MH", 40, 40, null, null, 40, 40, 1 ] - - [ 1442077200000, "MK", -72, -72, null, null, -72, -72, 1 ] - - [ 1442070000000, "MM", 3, 28, null, 1442073600000, 3, 25, 1 ] - - [ 1442073600000, "MM", 25, 28, null, null, 3, 25, 2 ] - - [ 1442034000000, "MO", 30, 48, null, 1442070000000, 30, 18, 1 ] - - [ 1442070000000, "MO", 18, 48, null, null, 30, 18, 2 ] - - [ 1442080800000, "MR", 10, 10, null, null, 10, 10, 1 ] - - [ 1442048400000, "MT", -1, -1, null, null, -1, -1, 1 ] - - [ 1442073600000, "MV", -3, -3, null, null, -3, -3, 1 ] - - [ 1442016000000, "MX", -67, 10472, null, 1442023200000, -67, 28, 1 ] - - [ 1442023200000, "MX", 549, 10472, null, 1442026800000, -67, 28, 1 ] - - [ 1442026800000, "MX", 3642, 10472, 1442016000000, 1442030400000, -67, 28, 1 ] - - [ 1442030400000, "MX", 373, 10472, 1442023200000, 1442034000000, -67, 28, 1 ] - - [ 1442034000000, "MX", 944, 10472, 1442026800000, 1442037600000, -67, 28, 1 ] - - [ 1442037600000, "MX", 4, 10472, 1442030400000, 1442041200000, -67, 28, 1 ] - - [ 1442041200000, "MX", -294, 10472, 1442034000000, 1442066400000, -67, 28, 2 ] - - [ 1442066400000, "MX", -1, 10472, 1442037600000, 1442070000000, -67, 28, 2 ] - - [ 1442070000000, "MX", -1, 10472, 1442041200000, 1442073600000, -67, 28, 2 ] - - [ 1442073600000, "MX", -21, 10472, 1442066400000, 1442077200000, -67, 28, 2 ] - - [ 1442077200000, "MX", 3874, 10472, 1442070000000, 1442080800000, -67, 28, 2 ] - - [ 1442080800000, "MX", -376, 10472, 1442073600000, 1442084400000, -67, 28, 2 ] - - [ 1442084400000, "MX", 981, 10472, 1442077200000, 1442088000000, -67, 28, 3 ] - - [ 1442088000000, "MX", 494, 10472, 1442080800000, 1442091600000, -67, 28, 3 ] - - [ 1442091600000, "MX", 799, 10472, 1442084400000, 1442095200000, -67, 28, 3 ] - - [ 1442095200000, "MX", -456, 10472, 1442088000000, 1442098800000, -67, 28, 3 ] - - [ 1442098800000, "MX", 28, 10472, 1442091600000, null, -67, 28, 3 ] - - [ 1442019600000, "MY", -7, 3207, null, 1442030400000, -7, 739, 1 ] - - [ 1442030400000, "MY", -3, 3207, null, 1442034000000, -7, 739, 1 ] - - [ 1442034000000, "MY", 1028, 3207, 1442019600000, 1442041200000, -7, 739, 1 ] - - [ 1442041200000, "MY", 935, 3207, 1442030400000, 1442044800000, -7, 739, 1 ] - - [ 1442044800000, "MY", -127, 3207, 1442034000000, 1442048400000, -7, 739, 2 ] - - [ 1442048400000, "MY", 649, 3207, 1442041200000, 1442055600000, -7, 739, 2 ] - - [ 1442055600000, "MY", 1, 3207, 1442044800000, 1442059200000, -7, 739, 2 ] - - [ 1442059200000, "MY", 0, 3207, 1442048400000, 1442066400000, -7, 739, 2 ] - - [ 1442066400000, "MY", 1, 3207, 1442055600000, 1442073600000, -7, 739, 3 ] - - [ 1442073600000, "MY", 1, 3207, 1442059200000, 1442077200000, -7, 739, 3 ] - - [ 1442077200000, "MY", -10, 3207, 1442066400000, 1442098800000, -7, 739, 3 ] - - [ 1442098800000, "MY", 739, 3207, 1442073600000, null, -7, 739, 3 ] - - [ 1442052000000, "NG", 208, 214, null, 1442070000000, 208, 6, 1 ] - - [ 1442070000000, "NG", 6, 214, null, null, 208, 6, 2 ] - - [ 1442034000000, "NL", 0, 12162, null, 1442044800000, 0, 4, 1 ] - - [ 1442044800000, "NL", 16, 12162, null, 1442048400000, 0, 4, 1 ] - - [ 1442048400000, "NL", 1303, 12162, 1442034000000, 1442052000000, 0, 4, 1 ] - - [ 1442052000000, "NL", 53, 12162, 1442044800000, 1442055600000, 0, 4, 1 ] - - [ 1442055600000, "NL", 105, 12162, 1442048400000, 1442059200000, 0, 4, 1 ] - - [ 1442059200000, "NL", 206, 12162, 1442052000000, 1442062800000, 0, 4, 1 ] - - [ 1442062800000, "NL", -30, 12162, 1442055600000, 1442066400000, 0, 4, 2 ] - - [ 1442066400000, "NL", 61, 12162, 1442059200000, 1442070000000, 0, 4, 2 ] - - [ 1442070000000, "NL", -84, 12162, 1442062800000, 1442073600000, 0, 4, 2 ] - - [ 1442073600000, "NL", 166, 12162, 1442066400000, 1442077200000, 0, 4, 2 ] - - [ 1442077200000, "NL", 878, 12162, 1442070000000, 1442080800000, 0, 4, 2 ] - - [ 1442080800000, "NL", 8947, 12162, 1442073600000, 1442084400000, 0, 4, 2 ] - - [ 1442084400000, "NL", 436, 12162, 1442077200000, 1442088000000, 0, 4, 3 ] - - [ 1442088000000, "NL", 12, 12162, 1442080800000, 1442091600000, 0, 4, 3 ] - - [ 1442091600000, "NL", 19, 12162, 1442084400000, 1442095200000, 0, 4, 3 ] - - [ 1442095200000, "NL", 70, 12162, 1442088000000, 1442098800000, 0, 4, 3 ] - - [ 1442098800000, "NL", 4, 12162, 1442091600000, null, 0, 4, 3 ] - - [ 1442019600000, "NO", 48, 432, null, 1442048400000, 48, 2, 1 ] - - [ 1442048400000, "NO", -447, 432, null, 1442052000000, 48, 2, 1 ] - - [ 1442052000000, "NO", 447, 432, 1442019600000, 1442055600000, 48, 2, 1 ] - - [ 1442055600000, "NO", 29, 432, 1442048400000, 1442066400000, 48, 2, 1 ] - - [ 1442066400000, "NO", 71, 432, 1442052000000, 1442073600000, 48, 2, 2 ] - - [ 1442073600000, "NO", 222, 432, 1442055600000, 1442080800000, 48, 2, 2 ] - - [ 1442080800000, "NO", 31, 432, 1442066400000, 1442088000000, 48, 2, 2 ] - - [ 1442088000000, "NO", 15, 432, 1442073600000, 1442091600000, 48, 2, 2 ] - - [ 1442091600000, "NO", 15, 432, 1442080800000, 1442095200000, 48, 2, 3 ] - - [ 1442095200000, "NO", -1, 432, 1442088000000, 1442098800000, 48, 2, 3 ] - - [ 1442098800000, "NO", 2, 432, 1442091600000, null, 48, 2, 3 ] - - [ 1442048400000, "NP", 61, 61, null, null, 61, 61, 1 ] - - [ 1442019600000, "NZ", 28, 1693, null, 1442026800000, 28, -2, 1 ] - - [ 1442026800000, "NZ", 635, 1693, null, 1442037600000, 28, -2, 1 ] - - [ 1442037600000, "NZ", 66, 1693, 1442019600000, 1442048400000, 28, -2, 1 ] - - [ 1442048400000, "NZ", 189, 1693, 1442026800000, 1442059200000, 28, -2, 2 ] - - [ 1442059200000, "NZ", 428, 1693, 1442037600000, 1442084400000, 28, -2, 2 ] - - [ 1442084400000, "NZ", -52, 1693, 1442048400000, 1442088000000, 28, -2, 2 ] - - [ 1442088000000, "NZ", 405, 1693, 1442059200000, 1442095200000, 28, -2, 3 ] - - [ 1442095200000, "NZ", -4, 1693, 1442084400000, 1442098800000, 28, -2, 3 ] - - [ 1442098800000, "NZ", -2, 1693, 1442088000000, null, 28, -2, 3 ] - - [ 1442052000000, "OM", 0, 0, null, null, 0, 0, 1 ] - - [ 1442026800000, "PA", 0, 0, null, null, 0, 0, 1 ] - - [ 1442019600000, "PE", 523, 2134, null, 1442023200000, 523, 1861, 1 ] - - [ 1442023200000, "PE", 26, 2134, null, 1442026800000, 523, 1861, 1 ] - - [ 1442026800000, "PE", -12, 2134, 1442019600000, 1442062800000, 523, 1861, 1 ] - - [ 1442062800000, "PE", -12, 2134, 1442023200000, 1442077200000, 523, 1861, 2 ] - - [ 1442077200000, "PE", -163, 2134, 1442026800000, 1442080800000, 523, 1861, 2 ] - - [ 1442080800000, "PE", -2, 2134, 1442062800000, 1442084400000, 523, 1861, 2 ] - - [ 1442084400000, "PE", -68, 2134, 1442077200000, 1442095200000, 523, 1861, 3 ] - - [ 1442095200000, "PE", -19, 2134, 1442080800000, 1442098800000, 523, 1861, 3 ] - - [ 1442098800000, "PE", 1861, 2134, 1442084400000, null, 523, 1861, 3 ] - - [ 1442019600000, "PH", 6, 6613, null, 1442023200000, 6, 8, 1 ] - - [ 1442023200000, "PH", 459, 6613, null, 1442026800000, 6, 8, 1 ] - - [ 1442026800000, "PH", 910, 6613, 1442019600000, 1442030400000, 6, 8, 1 ] - - [ 1442030400000, "PH", 26, 6613, 1442023200000, 1442034000000, 6, 8, 1 ] - - [ 1442034000000, "PH", 59, 6613, 1442026800000, 1442037600000, 6, 8, 1 ] - - [ 1442037600000, "PH", 17, 6613, 1442030400000, 1442041200000, 6, 8, 1 ] - - [ 1442041200000, "PH", 0, 6613, 1442034000000, 1442044800000, 6, 8, 1 ] - - [ 1442044800000, "PH", 55, 6613, 1442037600000, 1442048400000, 6, 8, 2 ] - - [ 1442048400000, "PH", 62, 6613, 1442041200000, 1442052000000, 6, 8, 2 ] - - [ 1442052000000, "PH", 22, 6613, 1442044800000, 1442055600000, 6, 8, 2 ] - - [ 1442055600000, "PH", 1969, 6613, 1442048400000, 1442059200000, 6, 8, 2 ] - - [ 1442059200000, "PH", 273, 6613, 1442052000000, 1442062800000, 6, 8, 2 ] - - [ 1442062800000, "PH", 171, 6613, 1442055600000, 1442066400000, 6, 8, 2 ] - - [ 1442066400000, "PH", 1880, 6613, 1442059200000, 1442070000000, 6, 8, 2 ] - - [ 1442070000000, "PH", 34, 6613, 1442062800000, 1442073600000, 6, 8, 3 ] - - [ 1442073600000, "PH", -227, 6613, 1442066400000, 1442077200000, 6, 8, 3 ] - - [ 1442077200000, "PH", 2, 6613, 1442070000000, 1442080800000, 6, 8, 3 ] - - [ 1442080800000, "PH", 32, 6613, 1442073600000, 1442084400000, 6, 8, 3 ] - - [ 1442084400000, "PH", 39, 6613, 1442077200000, 1442091600000, 6, 8, 3 ] - - [ 1442091600000, "PH", 816, 6613, 1442080800000, 1442098800000, 6, 8, 3 ] - - [ 1442098800000, "PH", 8, 6613, 1442084400000, null, 6, 8, 3 ] - - [ 1442019600000, "PK", 335, 641, null, 1442026800000, 335, 43, 1 ] - - [ 1442026800000, "PK", 101, 641, null, 1442037600000, 335, 43, 1 ] - - [ 1442037600000, "PK", 100, 641, 1442019600000, 1442041200000, 335, 43, 1 ] - - [ 1442041200000, "PK", 24, 641, 1442026800000, 1442048400000, 335, 43, 2 ] - - [ 1442048400000, "PK", 15, 641, 1442037600000, 1442062800000, 335, 43, 2 ] - - [ 1442062800000, "PK", 23, 641, 1442041200000, 1442070000000, 335, 43, 3 ] - - [ 1442070000000, "PK", 43, 641, 1442048400000, null, 335, 43, 3 ] - - [ 1442037600000, "PL", 95, 9815, null, 1442041200000, 95, -9, 1 ] - - [ 1442041200000, "PL", 281, 9815, null, 1442044800000, 95, -9, 1 ] - - [ 1442044800000, "PL", 319, 9815, 1442037600000, 1442048400000, 95, -9, 1 ] - - [ 1442048400000, "PL", 366, 9815, 1442041200000, 1442052000000, 95, -9, 1 ] - - [ 1442052000000, "PL", 330, 9815, 1442044800000, 1442055600000, 95, -9, 1 ] - - [ 1442055600000, "PL", 410, 9815, 1442048400000, 1442059200000, 95, -9, 1 ] - - [ 1442059200000, "PL", 199, 9815, 1442052000000, 1442062800000, 95, -9, 2 ] - - [ 1442062800000, "PL", 4171, 9815, 1442055600000, 1442066400000, 95, -9, 2 ] - - [ 1442066400000, "PL", 34, 9815, 1442059200000, 1442070000000, 95, -9, 2 ] - - [ 1442070000000, "PL", 146, 9815, 1442062800000, 1442073600000, 95, -9, 2 ] - - [ 1442073600000, "PL", 30, 9815, 1442066400000, 1442077200000, 95, -9, 2 ] - - [ 1442077200000, "PL", 324, 9815, 1442070000000, 1442080800000, 95, -9, 2 ] - - [ 1442080800000, "PL", 7, 9815, 1442073600000, 1442084400000, 95, -9, 3 ] - - [ 1442084400000, "PL", 13, 9815, 1442077200000, 1442088000000, 95, -9, 3 ] - - [ 1442088000000, "PL", 346, 9815, 1442080800000, 1442091600000, 95, -9, 3 ] - - [ 1442091600000, "PL", 902, 9815, 1442084400000, 1442095200000, 95, -9, 3 ] - - [ 1442095200000, "PL", 1851, 9815, 1442088000000, 1442098800000, 95, -9, 3 ] - - [ 1442098800000, "PL", -9, 9815, 1442091600000, null, 95, -9, 3 ] - - [ 1442026800000, "PR", 22, 23, null, 1442030400000, 22, 29, 1 ] - - [ 1442030400000, "PR", 2, 23, null, 1442059200000, 22, 29, 1 ] - - [ 1442059200000, "PR", -35, 23, 1442026800000, 1442077200000, 22, 29, 2 ] - - [ 1442077200000, "PR", 5, 23, 1442030400000, 1442095200000, 22, 29, 2 ] - - [ 1442095200000, "PR", 29, 23, 1442059200000, null, 22, 29, 3 ] - - [ 1442019600000, "PT", 172, 4037, null, 1442044800000, 172, 2, 1 ] - - [ 1442044800000, "PT", 11, 4037, null, 1442052000000, 172, 2, 1 ] - - [ 1442052000000, "PT", 102, 4037, 1442019600000, 1442066400000, 172, 2, 1 ] - - [ 1442066400000, "PT", 12, 4037, 1442044800000, 1442070000000, 172, 2, 1 ] - - [ 1442070000000, "PT", 3470, 4037, 1442052000000, 1442077200000, 172, 2, 2 ] - - [ 1442077200000, "PT", -75, 4037, 1442066400000, 1442080800000, 172, 2, 2 ] - - [ 1442080800000, "PT", -79, 4037, 1442070000000, 1442088000000, 172, 2, 2 ] - - [ 1442088000000, "PT", 403, 4037, 1442077200000, 1442095200000, 172, 2, 3 ] - - [ 1442095200000, "PT", 19, 4037, 1442080800000, 1442098800000, 172, 2, 3 ] - - [ 1442098800000, "PT", 2, 4037, 1442088000000, null, 172, 2, 3 ] - - [ 1442019600000, "PY", 1, 634, null, 1442080800000, 1, 628, 1 ] - - [ 1442080800000, "PY", 5, 634, null, 1442084400000, 1, 628, 2 ] - - [ 1442084400000, "PY", 628, 634, 1442019600000, null, 1, 628, 3 ] - - [ 1442041200000, "QA", 13, 13, null, null, 13, 13, 1 ] - - [ 1442034000000, "RO", 68, 2893, null, 1442041200000, 68, 824, 1 ] - - [ 1442041200000, "RO", 845, 2893, null, 1442044800000, 68, 824, 1 ] - - [ 1442044800000, "RO", 284, 2893, 1442034000000, 1442052000000, 68, 824, 1 ] - - [ 1442052000000, "RO", 319, 2893, 1442041200000, 1442055600000, 68, 824, 1 ] - - [ 1442055600000, "RO", 26, 2893, 1442044800000, 1442062800000, 68, 824, 2 ] - - [ 1442062800000, "RO", 541, 2893, 1442052000000, 1442070000000, 68, 824, 2 ] - - [ 1442070000000, "RO", -29, 2893, 1442055600000, 1442073600000, 68, 824, 2 ] - - [ 1442073600000, "RO", 15, 2893, 1442062800000, 1442091600000, 68, 824, 3 ] - - [ 1442091600000, "RO", 0, 2893, 1442070000000, 1442095200000, 68, 824, 3 ] - - [ 1442095200000, "RO", 824, 2893, 1442073600000, null, 68, 824, 3 ] - - [ 1442019600000, "RS", 6, 906, null, 1442062800000, 6, -15, 1 ] - - [ 1442062800000, "RS", 13, 906, null, 1442066400000, 6, -15, 1 ] - - [ 1442066400000, "RS", 0, 906, 1442019600000, 1442073600000, 6, -15, 1 ] - - [ 1442073600000, "RS", 813, 906, 1442062800000, 1442080800000, 6, -15, 2 ] - - [ 1442080800000, "RS", 0, 906, 1442066400000, 1442084400000, 6, -15, 2 ] - - [ 1442084400000, "RS", 89, 906, 1442073600000, 1442091600000, 6, -15, 3 ] - - [ 1442091600000, "RS", -15, 906, 1442080800000, null, 6, -15, 3 ] - - [ 1442019600000, "RU", 2214, 48104, null, 1442023200000, 2214, 12098, 1 ] - - [ 1442023200000, "RU", 299, 48104, null, 1442026800000, 2214, 12098, 1 ] - - [ 1442026800000, "RU", 0, 48104, 1442019600000, 1442030400000, 2214, 12098, 1 ] - - [ 1442030400000, "RU", 76, 48104, 1442023200000, 1442034000000, 2214, 12098, 1 ] - - [ 1442034000000, "RU", 658, 48104, 1442026800000, 1442037600000, 2214, 12098, 1 ] - - [ 1442037600000, "RU", -324, 48104, 1442030400000, 1442041200000, 2214, 12098, 1 ] - - [ 1442041200000, "RU", 580, 48104, 1442034000000, 1442044800000, 2214, 12098, 1 ] - - [ 1442044800000, "RU", 2564, 48104, 1442037600000, 1442048400000, 2214, 12098, 1 ] - - [ 1442048400000, "RU", 1027, 48104, 1442041200000, 1442052000000, 2214, 12098, 2 ] - - [ 1442052000000, "RU", 1214, 48104, 1442044800000, 1442055600000, 2214, 12098, 2 ] - - [ 1442055600000, "RU", 499, 48104, 1442048400000, 1442059200000, 2214, 12098, 2 ] - - [ 1442059200000, "RU", 3902, 48104, 1442052000000, 1442062800000, 2214, 12098, 2 ] - - [ 1442062800000, "RU", 168, 48104, 1442055600000, 1442066400000, 2214, 12098, 2 ] - - [ 1442066400000, "RU", 2047, 48104, 1442059200000, 1442070000000, 2214, 12098, 2 ] - - [ 1442070000000, "RU", 4706, 48104, 1442062800000, 1442073600000, 2214, 12098, 2 ] - - [ 1442073600000, "RU", 1618, 48104, 1442066400000, 1442077200000, 2214, 12098, 2 ] - - [ 1442077200000, "RU", 1162, 48104, 1442070000000, 1442080800000, 2214, 12098, 3 ] - - [ 1442080800000, "RU", 655, 48104, 1442073600000, 1442084400000, 2214, 12098, 3 ] - - [ 1442084400000, "RU", 6461, 48104, 1442077200000, 1442088000000, 2214, 12098, 3 ] - - [ 1442088000000, "RU", 2596, 48104, 1442080800000, 1442091600000, 2214, 12098, 3 ] - - [ 1442091600000, "RU", 3449, 48104, 1442084400000, 1442095200000, 2214, 12098, 3 ] - - [ 1442095200000, "RU", 435, 48104, 1442088000000, 1442098800000, 2214, 12098, 3 ] - - [ 1442098800000, "RU", 12098, 48104, 1442091600000, null, 2214, 12098, 3 ] - - [ 1442037600000, "SA", -97, 1614, null, 1442048400000, -97, 458, 1 ] - - [ 1442048400000, "SA", 14, 1614, null, 1442055600000, -97, 458, 1 ] - - [ 1442055600000, "SA", 11, 1614, 1442037600000, 1442059200000, -97, 458, 1 ] - - [ 1442059200000, "SA", 0, 1614, 1442048400000, 1442066400000, -97, 458, 2 ] - - [ 1442066400000, "SA", 1276, 1614, 1442055600000, 1442073600000, -97, 458, 2 ] - - [ 1442073600000, "SA", 2, 1614, 1442059200000, 1442077200000, -97, 458, 2 ] - - [ 1442077200000, "SA", -50, 1614, 1442066400000, 1442084400000, -97, 458, 3 ] - - [ 1442084400000, "SA", 458, 1614, 1442073600000, null, -97, 458, 3 ] - - [ 1442019600000, "SE", 109, 1838, null, 1442023200000, 109, 0, 1 ] - - [ 1442023200000, "SE", 3, 1838, null, 1442030400000, 109, 0, 1 ] - - [ 1442030400000, "SE", 30, 1838, 1442019600000, 1442041200000, 109, 0, 1 ] - - [ 1442041200000, "SE", 91, 1838, 1442023200000, 1442048400000, 109, 0, 1 ] - - [ 1442048400000, "SE", -145, 1838, 1442030400000, 1442052000000, 109, 0, 1 ] - - [ 1442052000000, "SE", 1, 1838, 1442041200000, 1442055600000, 109, 0, 2 ] - - [ 1442055600000, "SE", -5, 1838, 1442048400000, 1442059200000, 109, 0, 2 ] - - [ 1442059200000, "SE", 1476, 1838, 1442052000000, 1442066400000, 109, 0, 2 ] - - [ 1442066400000, "SE", 14, 1838, 1442055600000, 1442070000000, 109, 0, 2 ] - - [ 1442070000000, "SE", 78, 1838, 1442059200000, 1442080800000, 109, 0, 2 ] - - [ 1442080800000, "SE", 89, 1838, 1442066400000, 1442084400000, 109, 0, 3 ] - - [ 1442084400000, "SE", 37, 1838, 1442070000000, 1442091600000, 109, 0, 3 ] - - [ 1442091600000, "SE", -1, 1838, 1442080800000, 1442095200000, 109, 0, 3 ] - - [ 1442095200000, "SE", 61, 1838, 1442084400000, 1442098800000, 109, 0, 3 ] - - [ 1442098800000, "SE", 0, 1838, 1442091600000, null, 109, 0, 3 ] - - [ 1442026800000, "SG", 2758, 3338, null, 1442030400000, 2758, 0, 1 ] - - [ 1442030400000, "SG", 1, 3338, null, 1442037600000, 2758, 0, 1 ] - - [ 1442037600000, "SG", 3, 3338, 1442026800000, 1442041200000, 2758, 0, 1 ] - - [ 1442041200000, "SG", 59, 3338, 1442030400000, 1442044800000, 2758, 0, 2 ] - - [ 1442044800000, "SG", 77, 3338, 1442037600000, 1442048400000, 2758, 0, 2 ] - - [ 1442048400000, "SG", 52, 3338, 1442041200000, 1442062800000, 2758, 0, 2 ] - - [ 1442062800000, "SG", 388, 3338, 1442044800000, 1442066400000, 2758, 0, 3 ] - - [ 1442066400000, "SG", 0, 3338, 1442048400000, null, 2758, 0, 3 ] - - [ 1442080800000, "SI", -45, -36, null, 1442091600000, -45, 9, 1 ] - - [ 1442091600000, "SI", 9, -36, null, null, -45, 9, 2 ] - - [ 1442037600000, "SK", -1, 379, null, 1442052000000, -1, 7, 1 ] - - [ 1442052000000, "SK", 13, 379, null, 1442062800000, -1, 7, 1 ] - - [ 1442062800000, "SK", 6, 379, 1442037600000, 1442073600000, -1, 7, 2 ] - - [ 1442073600000, "SK", 446, 379, 1442052000000, 1442084400000, -1, 7, 2 ] - - [ 1442084400000, "SK", -92, 379, 1442062800000, 1442098800000, -1, 7, 3 ] - - [ 1442098800000, "SK", 7, 379, 1442073600000, null, -1, 7, 3 ] - - [ 1442019600000, "SV", -1, 114, null, 1442084400000, -1, 9, 1 ] - - [ 1442084400000, "SV", 106, 114, null, 1442088000000, -1, 9, 2 ] - - [ 1442088000000, "SV", 9, 114, 1442019600000, null, -1, 9, 3 ] - - [ 1442034000000, "TH", 0, 24, null, 1442041200000, 0, 13, 1 ] - - [ 1442041200000, "TH", 3, 24, null, 1442044800000, 0, 13, 1 ] - - [ 1442044800000, "TH", 110, 24, 1442034000000, 1442052000000, 0, 13, 1 ] - - [ 1442052000000, "TH", -22, 24, 1442041200000, 1442055600000, 0, 13, 2 ] - - [ 1442055600000, "TH", 0, 24, 1442044800000, 1442062800000, 0, 13, 2 ] - - [ 1442062800000, "TH", -46, 24, 1442052000000, 1442066400000, 0, 13, 2 ] - - [ 1442066400000, "TH", -34, 24, 1442055600000, 1442070000000, 0, 13, 3 ] - - [ 1442070000000, "TH", 0, 24, 1442062800000, 1442084400000, 0, 13, 3 ] - - [ 1442084400000, "TH", 13, 24, 1442066400000, null, 0, 13, 3 ] - - [ 1442048400000, "TJ", 1471, 1471, null, null, 1471, 1471, 1 ] - - [ 1442098800000, "TN", -9, -9, null, null, -9, -9, 1 ] - - [ 1442023200000, "TR", 306, 7078, null, 1442041200000, 306, -29, 1 ] - - [ 1442041200000, "TR", 1, 7078, null, 1442044800000, 306, -29, 1 ] - - [ 1442044800000, "TR", 41, 7078, 1442023200000, 1442048400000, 306, -29, 1 ] - - [ 1442048400000, "TR", 88, 7078, 1442041200000, 1442052000000, 306, -29, 1 ] - - [ 1442052000000, "TR", 41, 7078, 1442044800000, 1442055600000, 306, -29, 1 ] - - [ 1442055600000, "TR", 299, 7078, 1442048400000, 1442062800000, 306, -29, 2 ] - - [ 1442062800000, "TR", 315, 7078, 1442052000000, 1442066400000, 306, -29, 2 ] - - [ 1442066400000, "TR", 85, 7078, 1442055600000, 1442070000000, 306, -29, 2 ] - - [ 1442070000000, "TR", 236, 7078, 1442062800000, 1442077200000, 306, -29, 2 ] - - [ 1442077200000, "TR", 89, 7078, 1442066400000, 1442080800000, 306, -29, 2 ] - - [ 1442080800000, "TR", -1, 7078, 1442070000000, 1442084400000, 306, -29, 3 ] - - [ 1442084400000, "TR", 170, 7078, 1442077200000, 1442088000000, 306, -29, 3 ] - - [ 1442088000000, "TR", 2389, 7078, 1442080800000, 1442091600000, 306, -29, 3 ] - - [ 1442091600000, "TR", 3048, 7078, 1442084400000, 1442095200000, 306, -29, 3 ] - - [ 1442095200000, "TR", -29, 7078, 1442088000000, null, 306, -29, 3 ] - - [ 1442088000000, "TT", 9, 9, null, null, 9, 9, 1 ] - - [ 1442016000000, "TW", 92, 3656, null, 1442019600000, 92, -60, 1 ] - - [ 1442019600000, "TW", 0, 3656, null, 1442023200000, 92, -60, 1 ] - - [ 1442023200000, "TW", 97, 3656, 1442016000000, 1442026800000, 92, -60, 1 ] - - [ 1442026800000, "TW", 680, 3656, 1442019600000, 1442030400000, 92, -60, 1 ] - - [ 1442030400000, "TW", 0, 3656, 1442023200000, 1442034000000, 92, -60, 1 ] - - [ 1442034000000, "TW", 143, 3656, 1442026800000, 1442037600000, 92, -60, 1 ] - - [ 1442037600000, "TW", 266, 3656, 1442030400000, 1442041200000, 92, -60, 1 ] - - [ 1442041200000, "TW", 366, 3656, 1442034000000, 1442044800000, 92, -60, 1 ] - - [ 1442044800000, "TW", 24, 3656, 1442037600000, 1442048400000, 92, -60, 2 ] - - [ 1442048400000, "TW", 75, 3656, 1442041200000, 1442052000000, 92, -60, 2 ] - - [ 1442052000000, "TW", 24, 3656, 1442044800000, 1442055600000, 92, -60, 2 ] - - [ 1442055600000, "TW", 48, 3656, 1442048400000, 1442059200000, 92, -60, 2 ] - - [ 1442059200000, "TW", -157, 3656, 1442052000000, 1442062800000, 92, -60, 2 ] - - [ 1442062800000, "TW", -272, 3656, 1442055600000, 1442066400000, 92, -60, 2 ] - - [ 1442066400000, "TW", 624, 3656, 1442059200000, 1442070000000, 92, -60, 2 ] - - [ 1442070000000, "TW", 485, 3656, 1442062800000, 1442073600000, 92, -60, 3 ] - - [ 1442073600000, "TW", 772, 3656, 1442066400000, 1442077200000, 92, -60, 3 ] - - [ 1442077200000, "TW", 502, 3656, 1442070000000, 1442080800000, 92, -60, 3 ] - - [ 1442080800000, "TW", 24, 3656, 1442073600000, 1442084400000, 92, -60, 3 ] - - [ 1442084400000, "TW", 0, 3656, 1442077200000, 1442095200000, 92, -60, 3 ] - - [ 1442095200000, "TW", -77, 3656, 1442080800000, 1442098800000, 92, -60, 3 ] - - [ 1442098800000, "TW", -60, 3656, 1442084400000, null, 92, -60, 3 ] - - [ 1442034000000, "UA", 3468, 24898, null, 1442037600000, 3468, 38, 1 ] - - [ 1442037600000, "UA", -1, 24898, null, 1442041200000, 3468, 38, 1 ] - - [ 1442041200000, "UA", 74, 24898, 1442034000000, 1442044800000, 3468, 38, 1 ] - - [ 1442044800000, "UA", 280, 24898, 1442037600000, 1442048400000, 3468, 38, 1 ] - - [ 1442048400000, "UA", 2, 24898, 1442041200000, 1442052000000, 3468, 38, 1 ] - - [ 1442052000000, "UA", 410, 24898, 1442044800000, 1442055600000, 3468, 38, 1 ] - - [ 1442055600000, "UA", 14202, 24898, 1442048400000, 1442059200000, 3468, 38, 1 ] - - [ 1442059200000, "UA", -2, 24898, 1442052000000, 1442062800000, 3468, 38, 2 ] - - [ 1442062800000, "UA", 773, 24898, 1442055600000, 1442066400000, 3468, 38, 2 ] - - [ 1442066400000, "UA", 296, 24898, 1442059200000, 1442070000000, 3468, 38, 2 ] - - [ 1442070000000, "UA", 1733, 24898, 1442062800000, 1442073600000, 3468, 38, 2 ] - - [ 1442073600000, "UA", 4241, 24898, 1442066400000, 1442077200000, 3468, 38, 2 ] - - [ 1442077200000, "UA", -181, 24898, 1442070000000, 1442080800000, 3468, 38, 2 ] - - [ 1442080800000, "UA", -1, 24898, 1442073600000, 1442084400000, 3468, 38, 3 ] - - [ 1442084400000, "UA", 5, 24898, 1442077200000, 1442088000000, 3468, 38, 3 ] - - [ 1442088000000, "UA", -21, 24898, 1442080800000, 1442091600000, 3468, 38, 3 ] - - [ 1442091600000, "UA", -388, 24898, 1442084400000, 1442095200000, 3468, 38, 3 ] - - [ 1442095200000, "UA", -30, 24898, 1442088000000, 1442098800000, 3468, 38, 3 ] - - [ 1442098800000, "UA", 38, 24898, 1442091600000, null, 3468, 38, 3 ] - - [ 1442070000000, "UG", 1, 1, null, null, 1, 1, 1 ] - - [ 1442016000000, "US", 0, 38882, null, 1442019600000, 0, 3575, 1 ] - - [ 1442019600000, "US", 1043, 38882, null, 1442023200000, 0, 3575, 1 ] - - [ 1442023200000, "US", 2844, 38882, 1442016000000, 1442026800000, 0, 3575, 1 ] - - [ 1442026800000, "US", 1512, 38882, 1442019600000, 1442030400000, 0, 3575, 1 ] - - [ 1442030400000, "US", 2023, 38882, 1442023200000, 1442034000000, 0, 3575, 1 ] - - [ 1442034000000, "US", 3648, 38882, 1442026800000, 1442037600000, 0, 3575, 1 ] - - [ 1442037600000, "US", 3675, 38882, 1442030400000, 1442041200000, 0, 3575, 1 ] - - [ 1442041200000, "US", 1999, 38882, 1442034000000, 1442044800000, 0, 3575, 1 ] - - [ 1442044800000, "US", 139, 38882, 1442037600000, 1442048400000, 0, 3575, 2 ] - - [ 1442048400000, "US", -466, 38882, 1442041200000, 1442052000000, 0, 3575, 2 ] - - [ 1442052000000, "US", -2, 38882, 1442044800000, 1442055600000, 0, 3575, 2 ] - - [ 1442055600000, "US", 156, 38882, 1442048400000, 1442059200000, 0, 3575, 2 ] - - [ 1442059200000, "US", 11, 38882, 1442052000000, 1442062800000, 0, 3575, 2 ] - - [ 1442062800000, "US", 47, 38882, 1442055600000, 1442066400000, 0, 3575, 2 ] - - [ 1442066400000, "US", 772, 38882, 1442059200000, 1442070000000, 0, 3575, 2 ] - - [ 1442070000000, "US", 3505, 38882, 1442062800000, 1442073600000, 0, 3575, 2 ] - - [ 1442073600000, "US", 1100, 38882, 1442066400000, 1442077200000, 0, 3575, 3 ] - - [ 1442077200000, "US", 2168, 38882, 1442070000000, 1442080800000, 0, 3575, 3 ] - - [ 1442080800000, "US", 4001, 38882, 1442073600000, 1442084400000, 0, 3575, 3 ] - - [ 1442084400000, "US", 2523, 38882, 1442077200000, 1442088000000, 0, 3575, 3 ] - - [ 1442088000000, "US", 1691, 38882, 1442080800000, 1442091600000, 0, 3575, 3 ] - - [ 1442091600000, "US", 2502, 38882, 1442084400000, 1442095200000, 0, 3575, 3 ] - - [ 1442095200000, "US", 416, 38882, 1442088000000, 1442098800000, 0, 3575, 3 ] - - [ 1442098800000, "US", 3575, 38882, 1442091600000, null, 0, 3575, 3 ] - - [ 1442019600000, "UY", 77, 936, null, 1442023200000, 77, 23, 1 ] - - [ 1442023200000, "UY", 517, 936, null, 1442026800000, 77, 23, 1 ] - - [ 1442026800000, "UY", 76, 936, 1442019600000, 1442037600000, 77, 23, 1 ] - - [ 1442037600000, "UY", 1, 936, 1442023200000, 1442070000000, 77, 23, 2 ] - - [ 1442070000000, "UY", 284, 936, 1442026800000, 1442073600000, 77, 23, 2 ] - - [ 1442073600000, "UY", -42, 936, 1442037600000, 1442077200000, 77, 23, 3 ] - - [ 1442077200000, "UY", 23, 936, 1442070000000, null, 77, 23, 3 ] - - [ 1442044800000, "UZ", 1369, 1369, null, null, 1369, 1369, 1 ] - - [ 1442023200000, "VE", 115, 1101, null, 1442026800000, 115, 9, 1 ] - - [ 1442026800000, "VE", -17, 1101, null, 1442030400000, 115, 9, 1 ] - - [ 1442030400000, "VE", 51, 1101, 1442023200000, 1442034000000, 115, 9, 1 ] - - [ 1442034000000, "VE", -2, 1101, 1442026800000, 1442066400000, 115, 9, 1 ] - - [ 1442066400000, "VE", 18, 1101, 1442030400000, 1442070000000, 115, 9, 2 ] - - [ 1442070000000, "VE", 420, 1101, 1442034000000, 1442077200000, 115, 9, 2 ] - - [ 1442077200000, "VE", 412, 1101, 1442066400000, 1442084400000, 115, 9, 2 ] - - [ 1442084400000, "VE", 60, 1101, 1442070000000, 1442095200000, 115, 9, 3 ] - - [ 1442095200000, "VE", 35, 1101, 1442077200000, 1442098800000, 115, 9, 3 ] - - [ 1442098800000, "VE", 9, 1101, 1442084400000, null, 115, 9, 3 ] - - [ 1442062800000, "VG", -238, -238, null, null, -238, -238, 1 ] - - [ 1442023200000, "VN", -9, 1560, null, 1442026800000, -9, -10, 1 ] - - [ 1442026800000, "VN", 63, 1560, null, 1442034000000, -9, -10, 1 ] - - [ 1442034000000, "VN", -29, 1560, 1442023200000, 1442037600000, -9, -10, 1 ] - - [ 1442037600000, "VN", -11, 1560, 1442026800000, 1442041200000, -9, -10, 1 ] - - [ 1442041200000, "VN", 0, 1560, 1442034000000, 1442048400000, -9, -10, 1 ] - - [ 1442048400000, "VN", -15, 1560, 1442037600000, 1442052000000, -9, -10, 2 ] - - [ 1442052000000, "VN", 90, 1560, 1442041200000, 1442055600000, -9, -10, 2 ] - - [ 1442055600000, "VN", 37, 1560, 1442048400000, 1442059200000, -9, -10, 2 ] - - [ 1442059200000, "VN", 8, 1560, 1442052000000, 1442062800000, -9, -10, 2 ] - - [ 1442062800000, "VN", 146, 1560, 1442055600000, 1442066400000, -9, -10, 3 ] - - [ 1442066400000, "VN", 811, 1560, 1442059200000, 1442070000000, -9, -10, 3 ] - - [ 1442070000000, "VN", 479, 1560, 1442062800000, 1442084400000, -9, -10, 3 ] - - [ 1442084400000, "VN", -10, 1560, 1442066400000, null, -9, -10, 3 ] - - [ 1442034000000, "ZA", -3, 127, null, 1442048400000, -3, 1, 1 ] - - [ 1442048400000, "ZA", 79, 127, null, 1442059200000, -3, 1, 1 ] - - [ 1442059200000, "ZA", 50, 127, 1442034000000, 1442070000000, -3, 1, 2 ] - - [ 1442070000000, "ZA", 0, 127, 1442048400000, 1442091600000, -3, 1, 2 ] - - [ 1442091600000, "ZA", 1, 127, 1442059200000, null, -3, 1, 3 ] - - [ 1442041200000, "ZM", 133, 133, null, null, 133, 133, 1 ] - - [ 1442044800000, "ZW", 0, 254, null, 1442048400000, 0, 254, 1 ] - - [ 1442048400000, "ZW", 254, 254, null, null, 0, 254, 2 ] \ No newline at end of file + - [1442016000000,null,29873,8414700,null,1442019600000,29873,276159,1] + - [1442019600000,null,173892,8414700,null,1442023200000,29873,276159,1] + - [1442023200000,null,399636,8414700,1442016000000,1442026800000,29873,276159,1] + - [1442026800000,null,252626,8414700,1442019600000,1442030400000,29873,276159,1] + - [1442030400000,null,166672,8414700,1442023200000,1442034000000,29873,276159,1] + - [1442034000000,null,330957,8414700,1442026800000,1442037600000,29873,276159,1] + - [1442037600000,null,200605,8414700,1442030400000,1442041200000,29873,276159,1] + - [1442041200000,null,543450,8414700,1442034000000,1442044800000,29873,276159,1] + - [1442044800000,null,316002,8414700,1442037600000,1442048400000,29873,276159,2] + - [1442048400000,null,308316,8414700,1442041200000,1442052000000,29873,276159,2] + - [1442052000000,null,787370,8414700,1442044800000,1442055600000,29873,276159,2] + - [1442055600000,null,283958,8414700,1442048400000,1442059200000,29873,276159,2] + - [1442059200000,null,459297,8414700,1442052000000,1442062800000,29873,276159,2] + - [1442062800000,null,389465,8414700,1442055600000,1442066400000,29873,276159,2] + - [1442066400000,null,351584,8414700,1442059200000,1442070000000,29873,276159,2] + - [1442070000000,null,358515,8414700,1442062800000,1442073600000,29873,276159,2] + - [1442073600000,null,375394,8414700,1442066400000,1442077200000,29873,276159,3] + - [1442077200000,null,392483,8414700,1442070000000,1442080800000,29873,276159,3] + - [1442080800000,null,453077,8414700,1442073600000,1442084400000,29873,276159,3] + - [1442084400000,null,372569,8414700,1442077200000,1442088000000,29873,276159,3] + - [1442088000000,null,303872,8414700,1442080800000,1442091600000,29873,276159,3] + - [1442091600000,null,514427,8414700,1442084400000,1442095200000,29873,276159,3] + - [1442095200000,null,374501,8414700,1442088000000,1442098800000,29873,276159,3] + - [1442098800000,null,276159,8414700,1442091600000,null,29873,276159,3] + - [1442030400000,"AE",118,6547,null,1442044800000,118,42,1] + - [1442044800000,"AE",-7,6547,null,1442048400000,118,42,1] + - [1442048400000,"AE",39,6547,1442030400000,1442052000000,118,42,1] + - [1442052000000,"AE",-3,6547,1442044800000,1442059200000,118,42,2] + - [1442059200000,"AE",-11,6547,1442048400000,1442070000000,118,42,2] + - [1442070000000,"AE",46,6547,1442052000000,1442077200000,118,42,2] + - [1442077200000,"AE",6323,6547,1442059200000,1442080800000,118,42,3] + - [1442080800000,"AE",42,6547,1442070000000,null,118,42,3] + - [1442077200000,"AL",26,80,null,1442091600000,26,54,1] + - [1442091600000,"AL",54,80,null,null,26,54,2] + - [1442041200000,"AO",-26,740,null,1442052000000,-26,722,1] + - [1442052000000,"AO",-18,740,null,1442088000000,-26,722,1] + - [1442088000000,"AO",62,740,1442041200000,1442098800000,-26,722,2] + - [1442098800000,"AO",722,740,1442052000000,null,-26,722,3] + - [1442019600000,"AR",1,4450,null,1442023200000,1,64,1] + - [1442023200000,"AR",2514,4450,null,1442026800000,1,64,1] + - [1442026800000,"AR",644,4450,1442019600000,1442030400000,1,64,1] + - [1442030400000,"AR",-3,4450,1442023200000,1442034000000,1,64,1] + - [1442034000000,"AR",212,4450,1442026800000,1442037600000,1,64,1] + - [1442037600000,"AR",81,4450,1442030400000,1442055600000,1,64,1] + - [1442055600000,"AR",-54,4450,1442034000000,1442059200000,1,64,2] + - [1442059200000,"AR",210,4450,1442037600000,1442062800000,1,64,2] + - [1442062800000,"AR",29,4450,1442055600000,1442066400000,1,64,2] + - [1442066400000,"AR",0,4450,1442059200000,1442070000000,1,64,2] + - [1442070000000,"AR",377,4450,1442062800000,1442077200000,1,64,2] + - [1442077200000,"AR",-591,4450,1442066400000,1442080800000,1,64,2] + - [1442080800000,"AR",1,4450,1442070000000,1442084400000,1,64,3] + - [1442084400000,"AR",-5,4450,1442077200000,1442091600000,1,64,3] + - [1442091600000,"AR",340,4450,1442080800000,1442095200000,1,64,3] + - [1442095200000,"AR",630,4450,1442084400000,1442098800000,1,64,3] + - [1442098800000,"AR",64,4450,1442091600000,null,1,64,3] + - [1442052000000,"AT",4793,12047,null,1442062800000,4793,89,1] + - [1442062800000,"AT",-155,12047,null,1442066400000,4793,89,1] + - [1442066400000,"AT",0,12047,1442052000000,1442070000000,4793,89,1] + - [1442070000000,"AT",272,12047,1442062800000,1442084400000,4793,89,2] + - [1442084400000,"AT",-2,12047,1442066400000,1442088000000,4793,89,2] + - [1442088000000,"AT",7050,12047,1442070000000,1442091600000,4793,89,3] + - [1442091600000,"AT",89,12047,1442084400000,null,4793,89,3] + - [1442016000000,"AU",0,2700,null,1442019600000,0,518,1] + - [1442019600000,"AU",253,2700,null,1442023200000,0,518,1] + - [1442023200000,"AU",52,2700,1442016000000,1442026800000,0,518,1] + - [1442026800000,"AU",188,2700,1442019600000,1442030400000,0,518,1] + - [1442030400000,"AU",-377,2700,1442023200000,1442034000000,0,518,1] + - [1442034000000,"AU",283,2700,1442026800000,1442037600000,0,518,1] + - [1442037600000,"AU",3,2700,1442030400000,1442041200000,0,518,1] + - [1442041200000,"AU",194,2700,1442034000000,1442044800000,0,518,2] + - [1442044800000,"AU",373,2700,1442037600000,1442048400000,0,518,2] + - [1442048400000,"AU",135,2700,1442041200000,1442052000000,0,518,2] + - [1442052000000,"AU",-643,2700,1442044800000,1442055600000,0,518,2] + - [1442055600000,"AU",182,2700,1442048400000,1442059200000,0,518,2] + - [1442059200000,"AU",38,2700,1442052000000,1442066400000,0,518,2] + - [1442066400000,"AU",-21,2700,1442055600000,1442070000000,0,518,3] + - [1442070000000,"AU",-12,2700,1442059200000,1442077200000,0,518,3] + - [1442077200000,"AU",1,2700,1442066400000,1442091600000,0,518,3] + - [1442091600000,"AU",1138,2700,1442070000000,1442095200000,0,518,3] + - [1442095200000,"AU",395,2700,1442077200000,1442098800000,0,518,3] + - [1442098800000,"AU",518,2700,1442091600000,null,0,518,3] + - [1442048400000,"BA",-13,-178,null,1442052000000,-13,-1,1] + - [1442052000000,"BA",38,-178,null,1442055600000,-13,-1,1] + - [1442055600000,"BA",-202,-178,1442048400000,1442084400000,-13,-1,2] + - [1442084400000,"BA",-1,-178,1442052000000,null,-13,-1,3] + - [1442019600000,"BD",0,1106,null,1442041200000,0,-2,1] + - [1442041200000,"BD",854,1106,null,1442066400000,0,-2,1] + - [1442066400000,"BD",76,1106,1442019600000,1442073600000,0,-2,2] + - [1442073600000,"BD",103,1106,1442041200000,1442077200000,0,-2,2] + - [1442077200000,"BD",75,1106,1442066400000,1442091600000,0,-2,3] + - [1442091600000,"BD",-2,1106,1442073600000,null,0,-2,3] + - [1442030400000,"BE",-103,795,null,1442048400000,-103,9,1] + - [1442048400000,"BE",59,795,null,1442052000000,-103,9,1] + - [1442052000000,"BE",-1,795,1442030400000,1442055600000,-103,9,1] + - [1442055600000,"BE",233,795,1442048400000,1442062800000,-103,9,1] + - [1442062800000,"BE",91,795,1442052000000,1442066400000,-103,9,2] + - [1442066400000,"BE",136,795,1442055600000,1442073600000,-103,9,2] + - [1442073600000,"BE",19,795,1442062800000,1442080800000,-103,9,2] + - [1442080800000,"BE",1,795,1442066400000,1442084400000,-103,9,2] + - [1442084400000,"BE",183,795,1442073600000,1442088000000,-103,9,3] + - [1442088000000,"BE",67,795,1442080800000,1442091600000,-103,9,3] + - [1442091600000,"BE",101,795,1442084400000,1442098800000,-103,9,3] + - [1442098800000,"BE",9,795,1442088000000,null,-103,9,3] + - [1442041200000,"BG",9,19592,null,1442052000000,9,401,1] + - [1442052000000,"BG",18936,19592,null,1442059200000,9,401,1] + - [1442059200000,"BG",191,19592,1442041200000,1442070000000,9,401,2] + - [1442070000000,"BG",55,19592,1442052000000,1442084400000,9,401,2] + - [1442084400000,"BG",401,19592,1442059200000,null,9,401,3] + - [1442052000000,"BH",44,44,null,null,44,44,1] + - [1442080800000,"BO",4,4,null,1442088000000,4,-4,1] + - [1442088000000,"BO",4,4,null,1442095200000,4,-4,2] + - [1442095200000,"BO",-4,4,1442080800000,null,4,-4,3] + - [1442016000000,"BR",-248,8550,null,1442019600000,-248,-645,1] + - [1442019600000,"BR",372,8550,null,1442023200000,-248,-645,1] + - [1442023200000,"BR",879,8550,1442016000000,1442026800000,-248,-645,1] + - [1442026800000,"BR",51,8550,1442019600000,1442030400000,-248,-645,1] + - [1442030400000,"BR",30,8550,1442023200000,1442034000000,-248,-645,1] + - [1442034000000,"BR",21,8550,1442026800000,1442037600000,-248,-645,1] + - [1442037600000,"BR",267,8550,1442030400000,1442041200000,-248,-645,1] + - [1442041200000,"BR",3,8550,1442034000000,1442044800000,-248,-645,1] + - [1442044800000,"BR",71,8550,1442037600000,1442052000000,-248,-645,2] + - [1442052000000,"BR",232,8550,1442041200000,1442055600000,-248,-645,2] + - [1442055600000,"BR",242,8550,1442044800000,1442059200000,-248,-645,2] + - [1442059200000,"BR",73,8550,1442052000000,1442062800000,-248,-645,2] + - [1442062800000,"BR",93,8550,1442055600000,1442066400000,-248,-645,2] + - [1442066400000,"BR",1034,8550,1442059200000,1442070000000,-248,-645,2] + - [1442070000000,"BR",536,8550,1442062800000,1442073600000,-248,-645,2] + - [1442073600000,"BR",2087,8550,1442066400000,1442077200000,-248,-645,2] + - [1442077200000,"BR",2253,8550,1442070000000,1442080800000,-248,-645,3] + - [1442080800000,"BR",-267,8550,1442073600000,1442084400000,-248,-645,3] + - [1442084400000,"BR",492,8550,1442077200000,1442088000000,-248,-645,3] + - [1442088000000,"BR",215,8550,1442080800000,1442091600000,-248,-645,3] + - [1442091600000,"BR",11,8550,1442084400000,1442095200000,-248,-645,3] + - [1442095200000,"BR",748,8550,1442088000000,1442098800000,-248,-645,3] + - [1442098800000,"BR",-645,8550,1442091600000,null,-248,-645,3] + - [1442055600000,"BY",1,2153,null,1442059200000,1,33,1] + - [1442059200000,"BY",1464,2153,null,1442073600000,1,33,1] + - [1442073600000,"BY",596,2153,1442055600000,1442077200000,1,33,1] + - [1442077200000,"BY",30,2153,1442059200000,1442080800000,1,33,2] + - [1442080800000,"BY",28,2153,1442073600000,1442084400000,1,33,2] + - [1442084400000,"BY",1,2153,1442077200000,1442088000000,1,33,3] + - [1442088000000,"BY",33,2153,1442080800000,null,1,33,3] + - [1442016000000,"CA",-371,8544,null,1442019600000,-371,164,1] + - [1442019600000,"CA",2184,8544,null,1442023200000,-371,164,1] + - [1442023200000,"CA",286,8544,1442016000000,1442026800000,-371,164,1] + - [1442026800000,"CA",2216,8544,1442019600000,1442030400000,-371,164,1] + - [1442030400000,"CA",-47,8544,1442023200000,1442034000000,-371,164,1] + - [1442034000000,"CA",178,8544,1442026800000,1442037600000,-371,164,1] + - [1442037600000,"CA",-132,8544,1442030400000,1442041200000,-371,164,1] + - [1442041200000,"CA",5,8544,1442034000000,1442044800000,-371,164,1] + - [1442044800000,"CA",1,8544,1442037600000,1442052000000,-371,164,2] + - [1442052000000,"CA",38,8544,1442041200000,1442059200000,-371,164,2] + - [1442059200000,"CA",1036,8544,1442044800000,1442062800000,-371,164,2] + - [1442062800000,"CA",-367,8544,1442052000000,1442066400000,-371,164,2] + - [1442066400000,"CA",307,8544,1442059200000,1442070000000,-371,164,2] + - [1442070000000,"CA",185,8544,1442062800000,1442073600000,-371,164,2] + - [1442073600000,"CA",86,8544,1442066400000,1442077200000,-371,164,2] + - [1442077200000,"CA",-282,8544,1442070000000,1442080800000,-371,164,3] + - [1442080800000,"CA",481,8544,1442073600000,1442084400000,-371,164,3] + - [1442084400000,"CA",44,8544,1442077200000,1442088000000,-371,164,3] + - [1442088000000,"CA",35,8544,1442080800000,1442091600000,-371,164,3] + - [1442091600000,"CA",2858,8544,1442084400000,1442095200000,-371,164,3] + - [1442095200000,"CA",-361,8544,1442088000000,1442098800000,-371,164,3] + - [1442098800000,"CA",164,8544,1442091600000,null,-371,164,3] + - [1442037600000,"CH",59,753,null,1442041200000,59,67,1] + - [1442041200000,"CH",198,753,null,1442044800000,59,67,1] + - [1442044800000,"CH",-54,753,1442037600000,1442048400000,59,67,1] + - [1442048400000,"CH",24,753,1442041200000,1442052000000,59,67,1] + - [1442052000000,"CH",47,753,1442044800000,1442055600000,59,67,2] + - [1442055600000,"CH",0,753,1442048400000,1442062800000,59,67,2] + - [1442062800000,"CH",22,753,1442052000000,1442070000000,59,67,2] + - [1442070000000,"CH",11,753,1442055600000,1442073600000,59,67,2] + - [1442073600000,"CH",360,753,1442062800000,1442077200000,59,67,3] + - [1442077200000,"CH",6,753,1442070000000,1442084400000,59,67,3] + - [1442084400000,"CH",13,753,1442073600000,1442091600000,59,67,3] + - [1442091600000,"CH",67,753,1442077200000,null,59,67,3] + - [1442016000000,"CL",161,533,null,1442019600000,161,9,1] + - [1442019600000,"CL",-370,533,null,1442023200000,161,9,1] + - [1442023200000,"CL",15,533,1442016000000,1442030400000,161,9,1] + - [1442030400000,"CL",40,533,1442019600000,1442034000000,161,9,1] + - [1442034000000,"CL",-1,533,1442023200000,1442037600000,161,9,1] + - [1442037600000,"CL",2,533,1442030400000,1442041200000,161,9,1] + - [1442041200000,"CL",-1,533,1442034000000,1442052000000,161,9,1] + - [1442052000000,"CL",390,533,1442037600000,1442059200000,161,9,2] + - [1442059200000,"CL",-12,533,1442041200000,1442062800000,161,9,2] + - [1442062800000,"CL",17,533,1442052000000,1442066400000,161,9,2] + - [1442066400000,"CL",-41,533,1442059200000,1442070000000,161,9,2] + - [1442070000000,"CL",13,533,1442062800000,1442073600000,161,9,2] + - [1442073600000,"CL",153,533,1442066400000,1442077200000,161,9,2] + - [1442077200000,"CL",-15,533,1442070000000,1442080800000,161,9,2] + - [1442080800000,"CL",17,533,1442073600000,1442084400000,161,9,3] + - [1442084400000,"CL",126,533,1442077200000,1442088000000,161,9,3] + - [1442088000000,"CL",286,533,1442080800000,1442091600000,161,9,3] + - [1442091600000,"CL",20,533,1442084400000,1442095200000,161,9,3] + - [1442095200000,"CL",-276,533,1442088000000,1442098800000,161,9,3] + - [1442098800000,"CL",9,533,1442091600000,null,161,9,3] + - [1442023200000,"CN",-13,583,null,1442026800000,-13,-1,1] + - [1442026800000,"CN",154,583,null,1442037600000,-13,-1,1] + - [1442037600000,"CN",98,583,1442023200000,1442048400000,-13,-1,1] + - [1442048400000,"CN",293,583,1442026800000,1442052000000,-13,-1,1] + - [1442052000000,"CN",0,583,1442037600000,1442055600000,-13,-1,2] + - [1442055600000,"CN",69,583,1442048400000,1442059200000,-13,-1,2] + - [1442059200000,"CN",8,583,1442052000000,1442066400000,-13,-1,2] + - [1442066400000,"CN",-15,583,1442055600000,1442080800000,-13,-1,3] + - [1442080800000,"CN",-10,583,1442059200000,1442084400000,-13,-1,3] + - [1442084400000,"CN",-1,583,1442066400000,null,-13,-1,3] + - [1442016000000,"CO",16,59611,null,1442019600000,16,83,1] + - [1442019600000,"CO",12,59611,null,1442023200000,16,83,1] + - [1442023200000,"CO",9,59611,1442016000000,1442030400000,16,83,1] + - [1442030400000,"CO",441,59611,1442019600000,1442059200000,16,83,1] + - [1442059200000,"CO",473,59611,1442023200000,1442066400000,16,83,1] + - [1442066400000,"CO",288,59611,1442030400000,1442070000000,16,83,2] + - [1442070000000,"CO",-45,59611,1442059200000,1442073600000,16,83,2] + - [1442073600000,"CO",39860,59611,1442066400000,1442077200000,16,83,2] + - [1442077200000,"CO",581,59611,1442070000000,1442080800000,16,83,2] + - [1442080800000,"CO",25,59611,1442073600000,1442084400000,16,83,2] + - [1442084400000,"CO",51,59611,1442077200000,1442088000000,16,83,3] + - [1442088000000,"CO",17150,59611,1442080800000,1442091600000,16,83,3] + - [1442091600000,"CO",377,59611,1442084400000,1442095200000,16,83,3] + - [1442095200000,"CO",290,59611,1442088000000,1442098800000,16,83,3] + - [1442098800000,"CO",83,59611,1442091600000,null,16,83,3] + - [1442019600000,"CR",62,3241,null,1442023200000,62,72,1] + - [1442023200000,"CR",62,3241,null,1442026800000,62,72,1] + - [1442026800000,"CR",140,3241,1442019600000,1442030400000,62,72,1] + - [1442030400000,"CR",2497,3241,1442023200000,1442041200000,62,72,2] + - [1442041200000,"CR",51,3241,1442026800000,1442044800000,62,72,2] + - [1442044800000,"CR",194,3241,1442030400000,1442048400000,62,72,2] + - [1442048400000,"CR",163,3241,1442041200000,1442088000000,62,72,3] + - [1442088000000,"CR",72,3241,1442044800000,null,62,72,3] + - [1442026800000,"CZ",-19,3479,null,1442034000000,-19,2,1] + - [1442034000000,"CZ",78,3479,null,1442037600000,-19,2,1] + - [1442037600000,"CZ",18,3479,1442026800000,1442055600000,-19,2,1] + - [1442055600000,"CZ",1073,3479,1442034000000,1442059200000,-19,2,1] + - [1442059200000,"CZ",21,3479,1442037600000,1442062800000,-19,2,2] + - [1442062800000,"CZ",0,3479,1442055600000,1442070000000,-19,2,2] + - [1442070000000,"CZ",168,3479,1442059200000,1442073600000,-19,2,2] + - [1442073600000,"CZ",2051,3479,1442062800000,1442077200000,-19,2,2] + - [1442077200000,"CZ",115,3479,1442070000000,1442080800000,-19,2,3] + - [1442080800000,"CZ",-28,3479,1442073600000,1442098800000,-19,2,3] + - [1442098800000,"CZ",2,3479,1442077200000,null,-19,2,3] + - [1442016000000,"DE",167,25583,null,1442019600000,167,329,1] + - [1442019600000,"DE",0,25583,null,1442023200000,167,329,1] + - [1442023200000,"DE",64,25583,1442016000000,1442030400000,167,329,1] + - [1442030400000,"DE",373,25583,1442019600000,1442034000000,167,329,1] + - [1442034000000,"DE",358,25583,1442023200000,1442037600000,167,329,1] + - [1442037600000,"DE",544,25583,1442030400000,1442041200000,167,329,1] + - [1442041200000,"DE",197,25583,1442034000000,1442044800000,167,329,1] + - [1442044800000,"DE",979,25583,1442037600000,1442048400000,167,329,1] + - [1442048400000,"DE",811,25583,1442041200000,1442052000000,167,329,2] + - [1442052000000,"DE",1600,25583,1442044800000,1442055600000,167,329,2] + - [1442055600000,"DE",1523,25583,1442048400000,1442059200000,167,329,2] + - [1442059200000,"DE",289,25583,1442052000000,1442062800000,167,329,2] + - [1442062800000,"DE",283,25583,1442055600000,1442066400000,167,329,2] + - [1442066400000,"DE",1577,25583,1442059200000,1442070000000,167,329,2] + - [1442070000000,"DE",1666,25583,1442062800000,1442073600000,167,329,2] + - [1442073600000,"DE",6075,25583,1442066400000,1442077200000,167,329,2] + - [1442077200000,"DE",2188,25583,1442070000000,1442080800000,167,329,3] + - [1442080800000,"DE",1133,25583,1442073600000,1442084400000,167,329,3] + - [1442084400000,"DE",-125,25583,1442077200000,1442088000000,167,329,3] + - [1442088000000,"DE",190,25583,1442080800000,1442091600000,167,329,3] + - [1442091600000,"DE",4355,25583,1442084400000,1442095200000,167,329,3] + - [1442095200000,"DE",1007,25583,1442088000000,1442098800000,167,329,3] + - [1442098800000,"DE",329,25583,1442091600000,null,167,329,3] + - [1442037600000,"DK",10,594,null,1442044800000,10,0,1] + - [1442044800000,"DK",36,594,null,1442048400000,10,0,1] + - [1442048400000,"DK",-5,594,1442037600000,1442055600000,10,0,1] + - [1442055600000,"DK",42,594,1442044800000,1442059200000,10,0,1] + - [1442059200000,"DK",0,594,1442048400000,1442062800000,10,0,2] + - [1442062800000,"DK",1,594,1442055600000,1442066400000,10,0,2] + - [1442066400000,"DK",416,594,1442059200000,1442077200000,10,0,2] + - [1442077200000,"DK",-9,594,1442062800000,1442080800000,10,0,2] + - [1442080800000,"DK",61,594,1442066400000,1442084400000,10,0,3] + - [1442084400000,"DK",-97,594,1442077200000,1442091600000,10,0,3] + - [1442091600000,"DK",139,594,1442080800000,1442095200000,10,0,3] + - [1442095200000,"DK",0,594,1442084400000,null,10,0,3] + - [1442023200000,"DO",8,264,null,1442066400000,8,13,1] + - [1442066400000,"DO",35,264,null,1442073600000,8,13,1] + - [1442073600000,"DO",200,264,1442023200000,1442084400000,8,13,2] + - [1442084400000,"DO",8,264,1442066400000,1442095200000,8,13,2] + - [1442095200000,"DO",13,264,1442073600000,null,8,13,3] + - [1442077200000,"DZ",-1,-1,null,null,-1,-1,1] + - [1442019600000,"EC",29,232,null,1442023200000,29,10,1] + - [1442023200000,"EC",-9,232,null,1442030400000,29,10,1] + - [1442030400000,"EC",0,232,1442019600000,1442077200000,29,10,2] + - [1442077200000,"EC",-366,232,1442023200000,1442084400000,29,10,2] + - [1442084400000,"EC",568,232,1442030400000,1442095200000,29,10,3] + - [1442095200000,"EC",10,232,1442077200000,null,29,10,3] + - [1442041200000,"EE",37,18,null,1442044800000,37,-19,1] + - [1442044800000,"EE",-19,18,null,null,37,-19,2] + - [1442026800000,"EG",16,170,null,1442055600000,16,27,1] + - [1442055600000,"EG",14,170,null,1442062800000,16,27,1] + - [1442062800000,"EG",112,170,1442026800000,1442073600000,16,27,2] + - [1442073600000,"EG",1,170,1442055600000,1442091600000,16,27,2] + - [1442091600000,"EG",27,170,1442062800000,null,16,27,3] + - [1442019600000,"ES",103,7449,null,1442023200000,103,458,1] + - [1442023200000,"ES",-5,7449,null,1442034000000,103,458,1] + - [1442034000000,"ES",-52,7449,1442019600000,1442037600000,103,458,1] + - [1442037600000,"ES",3,7449,1442023200000,1442041200000,103,458,1] + - [1442041200000,"ES",118,7449,1442034000000,1442044800000,103,458,1] + - [1442044800000,"ES",-169,7449,1442037600000,1442048400000,103,458,1] + - [1442048400000,"ES",158,7449,1442041200000,1442052000000,103,458,1] + - [1442052000000,"ES",-4,7449,1442044800000,1442055600000,103,458,2] + - [1442055600000,"ES",495,7449,1442048400000,1442059200000,103,458,2] + - [1442059200000,"ES",1086,7449,1442052000000,1442062800000,103,458,2] + - [1442062800000,"ES",-71,7449,1442055600000,1442066400000,103,458,2] + - [1442066400000,"ES",461,7449,1442059200000,1442070000000,103,458,2] + - [1442070000000,"ES",61,7449,1442062800000,1442073600000,103,458,2] + - [1442073600000,"ES",154,7449,1442066400000,1442077200000,103,458,2] + - [1442077200000,"ES",1240,7449,1442070000000,1442084400000,103,458,3] + - [1442084400000,"ES",337,7449,1442073600000,1442088000000,103,458,3] + - [1442088000000,"ES",-130,7449,1442077200000,1442091600000,103,458,3] + - [1442091600000,"ES",700,7449,1442084400000,1442095200000,103,458,3] + - [1442095200000,"ES",2506,7449,1442088000000,1442098800000,103,458,3] + - [1442098800000,"ES",458,7449,1442091600000,null,103,458,3] + - [1442030400000,"FI",1491,3579,null,1442037600000,1491,69,1] + - [1442037600000,"FI",14,3579,null,1442048400000,1491,69,1] + - [1442048400000,"FI",12,3579,1442030400000,1442052000000,1491,69,1] + - [1442052000000,"FI",186,3579,1442037600000,1442059200000,1491,69,1] + - [1442059200000,"FI",407,3579,1442048400000,1442062800000,1491,69,2] + - [1442062800000,"FI",19,3579,1442052000000,1442066400000,1491,69,2] + - [1442066400000,"FI",183,3579,1442059200000,1442073600000,1491,69,2] + - [1442073600000,"FI",-1,3579,1442062800000,1442077200000,1491,69,2] + - [1442077200000,"FI",200,3579,1442066400000,1442080800000,1491,69,3] + - [1442080800000,"FI",104,3579,1442073600000,1442084400000,1491,69,3] + - [1442084400000,"FI",895,3579,1442077200000,1442095200000,1491,69,3] + - [1442095200000,"FI",69,3579,1442080800000,null,1491,69,3] + - [1442016000000,"FR",-1,37281,null,1442019600000,-1,136,1] + - [1442019600000,"FR",585,37281,null,1442023200000,-1,136,1] + - [1442023200000,"FR",628,37281,1442016000000,1442026800000,-1,136,1] + - [1442026800000,"FR",86,37281,1442019600000,1442034000000,-1,136,1] + - [1442034000000,"FR",476,37281,1442023200000,1442037600000,-1,136,1] + - [1442037600000,"FR",4174,37281,1442026800000,1442041200000,-1,136,1] + - [1442041200000,"FR",604,37281,1442034000000,1442044800000,-1,136,1] + - [1442044800000,"FR",172,37281,1442037600000,1442048400000,-1,136,1] + - [1442048400000,"FR",3027,37281,1442041200000,1442052000000,-1,136,2] + - [1442052000000,"FR",637,37281,1442044800000,1442055600000,-1,136,2] + - [1442055600000,"FR",463,37281,1442048400000,1442059200000,-1,136,2] + - [1442059200000,"FR",4650,37281,1442052000000,1442062800000,-1,136,2] + - [1442062800000,"FR",5676,37281,1442055600000,1442066400000,-1,136,2] + - [1442066400000,"FR",2516,37281,1442059200000,1442070000000,-1,136,2] + - [1442070000000,"FR",474,37281,1442062800000,1442073600000,-1,136,2] + - [1442073600000,"FR",3522,37281,1442066400000,1442077200000,-1,136,2] + - [1442077200000,"FR",-444,37281,1442070000000,1442080800000,-1,136,3] + - [1442080800000,"FR",557,37281,1442073600000,1442084400000,-1,136,3] + - [1442084400000,"FR",6643,37281,1442077200000,1442088000000,-1,136,3] + - [1442088000000,"FR",1872,37281,1442080800000,1442091600000,-1,136,3] + - [1442091600000,"FR",741,37281,1442084400000,1442095200000,-1,136,3] + - [1442095200000,"FR",87,37281,1442088000000,1442098800000,-1,136,3] + - [1442098800000,"FR",136,37281,1442091600000,null,-1,136,3] + - [1442016000000,"GB",-44,35857,null,1442019600000,-44,49,1] + - [1442019600000,"GB",54,35857,null,1442023200000,-44,49,1] + - [1442023200000,"GB",1816,35857,1442016000000,1442026800000,-44,49,1] + - [1442026800000,"GB",339,35857,1442019600000,1442030400000,-44,49,1] + - [1442030400000,"GB",2524,35857,1442023200000,1442034000000,-44,49,1] + - [1442034000000,"GB",-12,35857,1442026800000,1442037600000,-44,49,1] + - [1442037600000,"GB",544,35857,1442030400000,1442041200000,-44,49,1] + - [1442041200000,"GB",42,35857,1442034000000,1442044800000,-44,49,1] + - [1442044800000,"GB",32,35857,1442037600000,1442048400000,-44,49,2] + - [1442048400000,"GB",740,35857,1442041200000,1442052000000,-44,49,2] + - [1442052000000,"GB",168,35857,1442044800000,1442055600000,-44,49,2] + - [1442055600000,"GB",453,35857,1442048400000,1442059200000,-44,49,2] + - [1442059200000,"GB",16111,35857,1442052000000,1442062800000,-44,49,2] + - [1442062800000,"GB",5743,35857,1442055600000,1442066400000,-44,49,2] + - [1442066400000,"GB",671,35857,1442059200000,1442070000000,-44,49,2] + - [1442070000000,"GB",374,35857,1442062800000,1442073600000,-44,49,2] + - [1442073600000,"GB",648,35857,1442066400000,1442077200000,-44,49,3] + - [1442077200000,"GB",1135,35857,1442070000000,1442080800000,-44,49,3] + - [1442080800000,"GB",1444,35857,1442073600000,1442084400000,-44,49,3] + - [1442084400000,"GB",384,35857,1442077200000,1442088000000,-44,49,3] + - [1442088000000,"GB",1593,35857,1442080800000,1442091600000,-44,49,3] + - [1442091600000,"GB",811,35857,1442084400000,1442095200000,-44,49,3] + - [1442095200000,"GB",238,35857,1442088000000,1442098800000,-44,49,3] + - [1442098800000,"GB",49,35857,1442091600000,null,-44,49,3] + - [1442044800000,"GE",-21,-140,null,1442052000000,-21,-27,1] + - [1442052000000,"GE",-108,-140,null,1442062800000,-21,-27,1] + - [1442062800000,"GE",16,-140,1442044800000,1442080800000,-21,-27,2] + - [1442080800000,"GE",-27,-140,1442052000000,null,-21,-27,3] + - [1442088000000,"GH",0,0,null,null,0,0,1] + - [1442019600000,"GR",82,149,null,1442034000000,82,123,1] + - [1442034000000,"GR",0,149,null,1442041200000,82,123,1] + - [1442041200000,"GR",7,149,1442019600000,1442048400000,82,123,1] + - [1442048400000,"GR",-26,149,1442034000000,1442062800000,82,123,1] + - [1442062800000,"GR",8,149,1442041200000,1442070000000,82,123,2] + - [1442070000000,"GR",2,149,1442048400000,1442073600000,82,123,2] + - [1442073600000,"GR",-314,149,1442062800000,1442080800000,82,123,2] + - [1442080800000,"GR",88,149,1442070000000,1442084400000,82,123,3] + - [1442084400000,"GR",179,149,1442073600000,1442091600000,82,123,3] + - [1442091600000,"GR",123,149,1442080800000,null,82,123,3] + - [1442023200000,"GT",-167,7,null,1442026800000,-167,1,1] + - [1442026800000,"GT",173,7,null,1442098800000,-167,1,2] + - [1442098800000,"GT",1,7,1442023200000,null,-167,1,3] + - [1442019600000,"HK",-113,10743,null,1442023200000,-113,-1,1] + - [1442023200000,"HK",2414,10743,null,1442026800000,-113,-1,1] + - [1442026800000,"HK",-211,10743,1442019600000,1442030400000,-113,-1,1] + - [1442030400000,"HK",157,10743,1442023200000,1442034000000,-113,-1,1] + - [1442034000000,"HK",1137,10743,1442026800000,1442037600000,-113,-1,1] + - [1442037600000,"HK",636,10743,1442030400000,1442041200000,-113,-1,1] + - [1442041200000,"HK",-15,10743,1442034000000,1442044800000,-113,-1,1] + - [1442044800000,"HK",21,10743,1442037600000,1442048400000,-113,-1,2] + - [1442048400000,"HK",1,10743,1442041200000,1442052000000,-113,-1,2] + - [1442052000000,"HK",15,10743,1442044800000,1442055600000,-113,-1,2] + - [1442055600000,"HK",804,10743,1442048400000,1442059200000,-113,-1,2] + - [1442059200000,"HK",2,10743,1442052000000,1442062800000,-113,-1,2] + - [1442062800000,"HK",1,10743,1442055600000,1442066400000,-113,-1,2] + - [1442066400000,"HK",39,10743,1442059200000,1442070000000,-113,-1,3] + - [1442070000000,"HK",314,10743,1442062800000,1442073600000,-113,-1,3] + - [1442073600000,"HK",5545,10743,1442066400000,1442080800000,-113,-1,3] + - [1442080800000,"HK",0,10743,1442070000000,1442091600000,-113,-1,3] + - [1442091600000,"HK",-3,10743,1442073600000,1442095200000,-113,-1,3] + - [1442095200000,"HK",-1,10743,1442080800000,null,-113,-1,3] + - [1442026800000,"HN",-1,-1,null,null,-1,-1,1] + - [1442070000000,"HR",32,382,null,1442073600000,32,82,1] + - [1442073600000,"HR",0,382,null,1442077200000,32,82,1] + - [1442077200000,"HR",58,382,1442070000000,1442080800000,32,82,2] + - [1442080800000,"HR",220,382,1442073600000,1442084400000,32,82,2] + - [1442084400000,"HR",-10,382,1442077200000,1442088000000,32,82,3] + - [1442088000000,"HR",82,382,1442080800000,null,32,82,3] + - [1442019600000,"HU",46,2116,null,1442037600000,46,110,1] + - [1442037600000,"HU",197,2116,null,1442041200000,46,110,1] + - [1442041200000,"HU",91,2116,1442019600000,1442044800000,46,110,1] + - [1442044800000,"HU",547,2116,1442037600000,1442048400000,46,110,1] + - [1442048400000,"HU",499,2116,1442041200000,1442055600000,46,110,1] + - [1442055600000,"HU",-2,2116,1442044800000,1442062800000,46,110,2] + - [1442062800000,"HU",50,2116,1442048400000,1442080800000,46,110,2] + - [1442080800000,"HU",242,2116,1442055600000,1442084400000,46,110,2] + - [1442084400000,"HU",141,2116,1442062800000,1442088000000,46,110,2] + - [1442088000000,"HU",-71,2116,1442080800000,1442091600000,46,110,3] + - [1442091600000,"HU",-5,2116,1442084400000,1442095200000,46,110,3] + - [1442095200000,"HU",271,2116,1442088000000,1442098800000,46,110,3] + - [1442098800000,"HU",110,2116,1442091600000,null,46,110,3] + - [1442023200000,"ID",106,-255,null,1442026800000,106,13,1] + - [1442026800000,"ID",-416,-255,null,1442030400000,106,13,1] + - [1442030400000,"ID",279,-255,1442023200000,1442034000000,106,13,1] + - [1442034000000,"ID",19,-255,1442026800000,1442037600000,106,13,1] + - [1442037600000,"ID",14,-255,1442030400000,1442041200000,106,13,1] + - [1442041200000,"ID",2,-255,1442034000000,1442044800000,106,13,2] + - [1442044800000,"ID",-388,-255,1442037600000,1442055600000,106,13,2] + - [1442055600000,"ID",16,-255,1442041200000,1442059200000,106,13,2] + - [1442059200000,"ID",17,-255,1442044800000,1442070000000,106,13,2] + - [1442070000000,"ID",42,-255,1442055600000,1442091600000,106,13,3] + - [1442091600000,"ID",21,-255,1442059200000,1442095200000,106,13,3] + - [1442095200000,"ID",20,-255,1442070000000,1442098800000,106,13,3] + - [1442098800000,"ID",13,-255,1442091600000,null,106,13,3] + - [1442026800000,"IE",1,2142,null,1442030400000,1,-71,1] + - [1442030400000,"IE",1,2142,null,1442048400000,1,-71,1] + - [1442048400000,"IE",27,2142,1442026800000,1442066400000,1,-71,1] + - [1442066400000,"IE",1062,2142,1442030400000,1442070000000,1,-71,2] + - [1442070000000,"IE",-100,2142,1442048400000,1442077200000,1,-71,2] + - [1442077200000,"IE",403,2142,1442066400000,1442084400000,1,-71,2] + - [1442084400000,"IE",819,2142,1442070000000,1442091600000,1,-71,3] + - [1442091600000,"IE",-71,2142,1442077200000,null,1,-71,3] + - [1442041200000,"IL",35,6617,null,1442044800000,35,3,1] + - [1442044800000,"IL",218,6617,null,1442048400000,35,3,1] + - [1442048400000,"IL",25,6617,1442041200000,1442052000000,35,3,1] + - [1442052000000,"IL",2745,6617,1442044800000,1442055600000,35,3,1] + - [1442055600000,"IL",4,6617,1442048400000,1442059200000,35,3,1] + - [1442059200000,"IL",1205,6617,1442052000000,1442062800000,35,3,1] + - [1442062800000,"IL",180,6617,1442055600000,1442066400000,35,3,2] + - [1442066400000,"IL",3,6617,1442059200000,1442070000000,35,3,2] + - [1442070000000,"IL",49,6617,1442062800000,1442073600000,35,3,2] + - [1442073600000,"IL",31,6617,1442066400000,1442077200000,35,3,2] + - [1442077200000,"IL",187,6617,1442070000000,1442080800000,35,3,2] + - [1442080800000,"IL",88,6617,1442073600000,1442084400000,35,3,3] + - [1442084400000,"IL",1137,6617,1442077200000,1442091600000,35,3,3] + - [1442091600000,"IL",707,6617,1442080800000,1442095200000,35,3,3] + - [1442095200000,"IL",0,6617,1442084400000,1442098800000,35,3,3] + - [1442098800000,"IL",3,6617,1442091600000,null,35,3,3] + - [1442016000000,"IN",1,29166,null,1442019600000,1,4,1] + - [1442019600000,"IN",38,29166,null,1442023200000,1,4,1] + - [1442023200000,"IN",-142,29166,1442016000000,1442026800000,1,4,1] + - [1442026800000,"IN",974,29166,1442019600000,1442030400000,1,4,1] + - [1442030400000,"IN",1448,29166,1442023200000,1442034000000,1,4,1] + - [1442034000000,"IN",1350,29166,1442026800000,1442037600000,1,4,1] + - [1442037600000,"IN",135,29166,1442030400000,1442041200000,1,4,1] + - [1442041200000,"IN",80,29166,1442034000000,1442044800000,1,4,1] + - [1442044800000,"IN",2677,29166,1442037600000,1442048400000,1,4,2] + - [1442048400000,"IN",262,29166,1442041200000,1442052000000,1,4,2] + - [1442052000000,"IN",534,29166,1442044800000,1442055600000,1,4,2] + - [1442055600000,"IN",166,29166,1442048400000,1442059200000,1,4,2] + - [1442059200000,"IN",708,29166,1442052000000,1442062800000,1,4,2] + - [1442062800000,"IN",1547,29166,1442055600000,1442066400000,1,4,2] + - [1442066400000,"IN",116,29166,1442059200000,1442070000000,1,4,2] + - [1442070000000,"IN",12091,29166,1442062800000,1442073600000,1,4,3] + - [1442073600000,"IN",1170,29166,1442066400000,1442077200000,1,4,3] + - [1442077200000,"IN",5699,29166,1442070000000,1442080800000,1,4,3] + - [1442080800000,"IN",0,29166,1442073600000,1442084400000,1,4,3] + - [1442084400000,"IN",187,29166,1442077200000,1442088000000,1,4,3] + - [1442088000000,"IN",121,29166,1442080800000,1442095200000,1,4,3] + - [1442095200000,"IN",4,29166,1442084400000,null,1,4,3] + - [1442041200000,"IQ",-1,3,null,1442044800000,-1,-2,1] + - [1442044800000,"IQ",6,3,null,1442052000000,-1,-2,1] + - [1442052000000,"IQ",0,3,1442041200000,1442095200000,-1,-2,2] + - [1442095200000,"IQ",-2,3,1442044800000,null,-1,-2,3] + - [1442026800000,"IR",0,2698,null,1442030400000,0,0,1] + - [1442030400000,"IR",375,2698,null,1442034000000,0,0,1] + - [1442034000000,"IR",-8,2698,1442026800000,1442041200000,0,0,1] + - [1442041200000,"IR",-79,2698,1442030400000,1442044800000,0,0,1] + - [1442044800000,"IR",306,2698,1442034000000,1442052000000,0,0,1] + - [1442052000000,"IR",155,2698,1442041200000,1442055600000,0,0,2] + - [1442055600000,"IR",-124,2698,1442044800000,1442059200000,0,0,2] + - [1442059200000,"IR",1455,2698,1442052000000,1442073600000,0,0,2] + - [1442073600000,"IR",-193,2698,1442055600000,1442077200000,0,0,2] + - [1442077200000,"IR",-34,2698,1442059200000,1442080800000,0,0,3] + - [1442080800000,"IR",131,2698,1442073600000,1442088000000,0,0,3] + - [1442088000000,"IR",714,2698,1442077200000,1442091600000,0,0,3] + - [1442091600000,"IR",0,2698,1442080800000,null,0,0,3] + - [1442016000000,"IT",0,39091,null,1442019600000,0,565,1] + - [1442019600000,"IT",183,39091,null,1442023200000,0,565,1] + - [1442023200000,"IT",111,39091,1442016000000,1442026800000,0,565,1] + - [1442026800000,"IT",222,39091,1442019600000,1442030400000,0,565,1] + - [1442030400000,"IT",-17,39091,1442023200000,1442034000000,0,565,1] + - [1442034000000,"IT",1006,39091,1442026800000,1442037600000,0,565,1] + - [1442037600000,"IT",-9,39091,1442030400000,1442041200000,0,565,1] + - [1442041200000,"IT",20,39091,1442034000000,1442044800000,0,565,1] + - [1442044800000,"IT",1483,39091,1442037600000,1442048400000,0,565,2] + - [1442048400000,"IT",676,39091,1442041200000,1442052000000,0,565,2] + - [1442052000000,"IT",1880,39091,1442044800000,1442055600000,0,565,2] + - [1442055600000,"IT",6240,39091,1442048400000,1442059200000,0,565,2] + - [1442059200000,"IT",542,39091,1442052000000,1442062800000,0,565,2] + - [1442062800000,"IT",1938,39091,1442055600000,1442066400000,0,565,2] + - [1442066400000,"IT",4155,39091,1442059200000,1442070000000,0,565,2] + - [1442070000000,"IT",81,39091,1442062800000,1442073600000,0,565,2] + - [1442073600000,"IT",2586,39091,1442066400000,1442077200000,0,565,3] + - [1442077200000,"IT",2188,39091,1442070000000,1442080800000,0,565,3] + - [1442080800000,"IT",5544,39091,1442073600000,1442084400000,0,565,3] + - [1442084400000,"IT",2660,39091,1442077200000,1442088000000,0,565,3] + - [1442088000000,"IT",3746,39091,1442080800000,1442091600000,0,565,3] + - [1442091600000,"IT",351,39091,1442084400000,1442095200000,0,565,3] + - [1442095200000,"IT",2940,39091,1442088000000,1442098800000,0,565,3] + - [1442098800000,"IT",565,39091,1442091600000,null,0,565,3] + - [1442070000000,"JM",30,30,null,null,30,30,1] + - [1442055600000,"JO",-2,2,null,1442059200000,-2,4,1] + - [1442059200000,"JO",0,2,null,1442080800000,-2,4,2] + - [1442080800000,"JO",4,2,1442055600000,null,-2,4,3] + - [1442016000000,"JP",-113,20378,null,1442019600000,-113,-6,1] + - [1442019600000,"JP",2002,20378,null,1442023200000,-113,-6,1] + - [1442023200000,"JP",1959,20378,1442016000000,1442026800000,-113,-6,1] + - [1442026800000,"JP",1035,20378,1442019600000,1442030400000,-113,-6,1] + - [1442030400000,"JP",805,20378,1442023200000,1442034000000,-113,-6,1] + - [1442034000000,"JP",910,20378,1442026800000,1442037600000,-113,-6,1] + - [1442037600000,"JP",2181,20378,1442030400000,1442041200000,-113,-6,1] + - [1442041200000,"JP",1373,20378,1442034000000,1442044800000,-113,-6,1] + - [1442044800000,"JP",1569,20378,1442037600000,1442048400000,-113,-6,2] + - [1442048400000,"JP",1981,20378,1442041200000,1442052000000,-113,-6,2] + - [1442052000000,"JP",2789,20378,1442044800000,1442055600000,-113,-6,2] + - [1442055600000,"JP",998,20378,1442048400000,1442059200000,-113,-6,2] + - [1442059200000,"JP",-85,20378,1442052000000,1442062800000,-113,-6,2] + - [1442062800000,"JP",803,20378,1442055600000,1442066400000,-113,-6,2] + - [1442066400000,"JP",167,20378,1442059200000,1442070000000,-113,-6,2] + - [1442070000000,"JP",79,20378,1442062800000,1442073600000,-113,-6,2] + - [1442073600000,"JP",1162,20378,1442066400000,1442077200000,-113,-6,3] + - [1442077200000,"JP",51,20378,1442070000000,1442080800000,-113,-6,3] + - [1442080800000,"JP",420,20378,1442073600000,1442084400000,-113,-6,3] + - [1442084400000,"JP",13,20378,1442077200000,1442088000000,-113,-6,3] + - [1442088000000,"JP",57,20378,1442080800000,1442091600000,-113,-6,3] + - [1442091600000,"JP",228,20378,1442084400000,1442095200000,-113,-6,3] + - [1442095200000,"JP",0,20378,1442088000000,1442098800000,-113,-6,3] + - [1442098800000,"JP",-6,20378,1442091600000,null,-113,-6,3] + - [1442044800000,"KE",-1,-1,null,null,-1,-1,1] + - [1442073600000,"KG",6,6,null,null,6,6,1] + - [1442016000000,"KR",1024,13597,null,1442019600000,1024,-36,1] + - [1442019600000,"KR",445,13597,null,1442023200000,1024,-36,1] + - [1442023200000,"KR",319,13597,1442016000000,1442026800000,1024,-36,1] + - [1442026800000,"KR",-179,13597,1442019600000,1442030400000,1024,-36,1] + - [1442030400000,"KR",1035,13597,1442023200000,1442034000000,1024,-36,1] + - [1442034000000,"KR",434,13597,1442026800000,1442037600000,1024,-36,1] + - [1442037600000,"KR",26,13597,1442030400000,1442041200000,1024,-36,1] + - [1442041200000,"KR",20,13597,1442034000000,1442044800000,1024,-36,1] + - [1442044800000,"KR",829,13597,1442037600000,1442048400000,1024,-36,2] + - [1442048400000,"KR",-374,13597,1442041200000,1442052000000,1024,-36,2] + - [1442052000000,"KR",-3,13597,1442044800000,1442055600000,1024,-36,2] + - [1442055600000,"KR",3640,13597,1442048400000,1442059200000,1024,-36,2] + - [1442059200000,"KR",208,13597,1442052000000,1442062800000,1024,-36,2] + - [1442062800000,"KR",1096,13597,1442055600000,1442066400000,1024,-36,2] + - [1442066400000,"KR",3299,13597,1442059200000,1442070000000,1024,-36,2] + - [1442070000000,"KR",222,13597,1442062800000,1442077200000,1024,-36,3] + - [1442077200000,"KR",-40,13597,1442066400000,1442080800000,1024,-36,3] + - [1442080800000,"KR",-33,13597,1442070000000,1442084400000,1024,-36,3] + - [1442084400000,"KR",314,13597,1442077200000,1442088000000,1024,-36,3] + - [1442088000000,"KR",524,13597,1442080800000,1442095200000,1024,-36,3] + - [1442095200000,"KR",827,13597,1442084400000,1442098800000,1024,-36,3] + - [1442098800000,"KR",-36,13597,1442088000000,null,1024,-36,3] + - [1442055600000,"KW",-2,1778,null,1442070000000,-2,-33,1] + - [1442070000000,"KW",1815,1778,null,1442077200000,-2,-33,1] + - [1442077200000,"KW",-2,1778,1442055600000,1442080800000,-2,-33,2] + - [1442080800000,"KW",-33,1778,1442070000000,null,-2,-33,3] + - [1442034000000,"KZ",161,1261,null,1442044800000,161,91,1] + - [1442044800000,"KZ",401,1261,null,1442048400000,161,91,1] + - [1442048400000,"KZ",439,1261,1442034000000,1442052000000,161,91,1] + - [1442052000000,"KZ",412,1261,1442044800000,1442055600000,161,91,1] + - [1442055600000,"KZ",63,1261,1442048400000,1442059200000,161,91,2] + - [1442059200000,"KZ",33,1261,1442052000000,1442062800000,161,91,2] + - [1442062800000,"KZ",0,1261,1442055600000,1442066400000,161,91,2] + - [1442066400000,"KZ",0,1261,1442059200000,1442077200000,161,91,2] + - [1442077200000,"KZ",-317,1261,1442062800000,1442084400000,161,91,3] + - [1442084400000,"KZ",-22,1261,1442066400000,1442095200000,161,91,3] + - [1442095200000,"KZ",91,1261,1442077200000,null,161,91,3] + - [1442055600000,"LB",-67,-67,null,null,-67,-67,1] + - [1442026800000,"LK",79,131,null,1442048400000,79,-3,1] + - [1442048400000,"LK",8,131,null,1442052000000,79,-3,1] + - [1442052000000,"LK",47,131,1442026800000,1442084400000,79,-3,2] + - [1442084400000,"LK",-3,131,1442048400000,null,79,-3,3] + - [1442080800000,"LT",12,-12,null,1442098800000,12,-24,1] + - [1442098800000,"LT",-24,-12,null,null,12,-24,2] + - [1442059200000,"LU",79,606,null,1442066400000,79,2,1] + - [1442066400000,"LU",0,606,null,1442077200000,79,2,1] + - [1442077200000,"LU",525,606,1442059200000,1442095200000,79,2,2] + - [1442095200000,"LU",2,606,1442066400000,null,79,2,3] + - [1442095200000,"LV",0,0,null,null,0,0,1] + - [1442019600000,"MA",-1,229,null,1442055600000,-1,8,1] + - [1442055600000,"MA",23,229,null,1442059200000,-1,8,1] + - [1442059200000,"MA",-56,229,1442019600000,1442062800000,-1,8,1] + - [1442062800000,"MA",0,229,1442055600000,1442077200000,-1,8,2] + - [1442077200000,"MA",250,229,1442059200000,1442080800000,-1,8,2] + - [1442080800000,"MA",5,229,1442062800000,1442098800000,-1,8,3] + - [1442098800000,"MA",8,229,1442077200000,null,-1,8,3] + - [1442077200000,"MD",6916,6916,null,null,6916,6916,1] + - [1442073600000,"ME",0,0,null,null,0,0,1] + - [1442052000000,"MH",40,40,null,null,40,40,1] + - [1442077200000,"MK",-72,-72,null,null,-72,-72,1] + - [1442070000000,"MM",3,28,null,1442073600000,3,25,1] + - [1442073600000,"MM",25,28,null,null,3,25,2] + - [1442034000000,"MO",30,48,null,1442070000000,30,18,1] + - [1442070000000,"MO",18,48,null,null,30,18,2] + - [1442080800000,"MR",10,10,null,null,10,10,1] + - [1442048400000,"MT",-1,-1,null,null,-1,-1,1] + - [1442073600000,"MV",-3,-3,null,null,-3,-3,1] + - [1442016000000,"MX",-67,10472,null,1442023200000,-67,28,1] + - [1442023200000,"MX",549,10472,null,1442026800000,-67,28,1] + - [1442026800000,"MX",3642,10472,1442016000000,1442030400000,-67,28,1] + - [1442030400000,"MX",373,10472,1442023200000,1442034000000,-67,28,1] + - [1442034000000,"MX",944,10472,1442026800000,1442037600000,-67,28,1] + - [1442037600000,"MX",4,10472,1442030400000,1442041200000,-67,28,1] + - [1442041200000,"MX",-294,10472,1442034000000,1442066400000,-67,28,2] + - [1442066400000,"MX",-1,10472,1442037600000,1442070000000,-67,28,2] + - [1442070000000,"MX",-1,10472,1442041200000,1442073600000,-67,28,2] + - [1442073600000,"MX",-21,10472,1442066400000,1442077200000,-67,28,2] + - [1442077200000,"MX",3874,10472,1442070000000,1442080800000,-67,28,2] + - [1442080800000,"MX",-376,10472,1442073600000,1442084400000,-67,28,2] + - [1442084400000,"MX",981,10472,1442077200000,1442088000000,-67,28,3] + - [1442088000000,"MX",494,10472,1442080800000,1442091600000,-67,28,3] + - [1442091600000,"MX",799,10472,1442084400000,1442095200000,-67,28,3] + - [1442095200000,"MX",-456,10472,1442088000000,1442098800000,-67,28,3] + - [1442098800000,"MX",28,10472,1442091600000,null,-67,28,3] + - [1442019600000,"MY",-7,3207,null,1442030400000,-7,739,1] + - [1442030400000,"MY",-3,3207,null,1442034000000,-7,739,1] + - [1442034000000,"MY",1028,3207,1442019600000,1442041200000,-7,739,1] + - [1442041200000,"MY",935,3207,1442030400000,1442044800000,-7,739,1] + - [1442044800000,"MY",-127,3207,1442034000000,1442048400000,-7,739,2] + - [1442048400000,"MY",649,3207,1442041200000,1442055600000,-7,739,2] + - [1442055600000,"MY",1,3207,1442044800000,1442059200000,-7,739,2] + - [1442059200000,"MY",0,3207,1442048400000,1442066400000,-7,739,2] + - [1442066400000,"MY",1,3207,1442055600000,1442073600000,-7,739,3] + - [1442073600000,"MY",1,3207,1442059200000,1442077200000,-7,739,3] + - [1442077200000,"MY",-10,3207,1442066400000,1442098800000,-7,739,3] + - [1442098800000,"MY",739,3207,1442073600000,null,-7,739,3] + - [1442052000000,"NG",208,214,null,1442070000000,208,6,1] + - [1442070000000,"NG",6,214,null,null,208,6,2] + - [1442034000000,"NL",0,12162,null,1442044800000,0,4,1] + - [1442044800000,"NL",16,12162,null,1442048400000,0,4,1] + - [1442048400000,"NL",1303,12162,1442034000000,1442052000000,0,4,1] + - [1442052000000,"NL",53,12162,1442044800000,1442055600000,0,4,1] + - [1442055600000,"NL",105,12162,1442048400000,1442059200000,0,4,1] + - [1442059200000,"NL",206,12162,1442052000000,1442062800000,0,4,1] + - [1442062800000,"NL",-30,12162,1442055600000,1442066400000,0,4,2] + - [1442066400000,"NL",61,12162,1442059200000,1442070000000,0,4,2] + - [1442070000000,"NL",-84,12162,1442062800000,1442073600000,0,4,2] + - [1442073600000,"NL",166,12162,1442066400000,1442077200000,0,4,2] + - [1442077200000,"NL",878,12162,1442070000000,1442080800000,0,4,2] + - [1442080800000,"NL",8947,12162,1442073600000,1442084400000,0,4,2] + - [1442084400000,"NL",436,12162,1442077200000,1442088000000,0,4,3] + - [1442088000000,"NL",12,12162,1442080800000,1442091600000,0,4,3] + - [1442091600000,"NL",19,12162,1442084400000,1442095200000,0,4,3] + - [1442095200000,"NL",70,12162,1442088000000,1442098800000,0,4,3] + - [1442098800000,"NL",4,12162,1442091600000,null,0,4,3] + - [1442019600000,"NO",48,432,null,1442048400000,48,2,1] + - [1442048400000,"NO",-447,432,null,1442052000000,48,2,1] + - [1442052000000,"NO",447,432,1442019600000,1442055600000,48,2,1] + - [1442055600000,"NO",29,432,1442048400000,1442066400000,48,2,1] + - [1442066400000,"NO",71,432,1442052000000,1442073600000,48,2,2] + - [1442073600000,"NO",222,432,1442055600000,1442080800000,48,2,2] + - [1442080800000,"NO",31,432,1442066400000,1442088000000,48,2,2] + - [1442088000000,"NO",15,432,1442073600000,1442091600000,48,2,2] + - [1442091600000,"NO",15,432,1442080800000,1442095200000,48,2,3] + - [1442095200000,"NO",-1,432,1442088000000,1442098800000,48,2,3] + - [1442098800000,"NO",2,432,1442091600000,null,48,2,3] + - [1442048400000,"NP",61,61,null,null,61,61,1] + - [1442019600000,"NZ",28,1693,null,1442026800000,28,-2,1] + - [1442026800000,"NZ",635,1693,null,1442037600000,28,-2,1] + - [1442037600000,"NZ",66,1693,1442019600000,1442048400000,28,-2,1] + - [1442048400000,"NZ",189,1693,1442026800000,1442059200000,28,-2,2] + - [1442059200000,"NZ",428,1693,1442037600000,1442084400000,28,-2,2] + - [1442084400000,"NZ",-52,1693,1442048400000,1442088000000,28,-2,2] + - [1442088000000,"NZ",405,1693,1442059200000,1442095200000,28,-2,3] + - [1442095200000,"NZ",-4,1693,1442084400000,1442098800000,28,-2,3] + - [1442098800000,"NZ",-2,1693,1442088000000,null,28,-2,3] + - [1442052000000,"OM",0,0,null,null,0,0,1] + - [1442026800000,"PA",0,0,null,null,0,0,1] + - [1442019600000,"PE",523,2134,null,1442023200000,523,1861,1] + - [1442023200000,"PE",26,2134,null,1442026800000,523,1861,1] + - [1442026800000,"PE",-12,2134,1442019600000,1442062800000,523,1861,1] + - [1442062800000,"PE",-12,2134,1442023200000,1442077200000,523,1861,2] + - [1442077200000,"PE",-163,2134,1442026800000,1442080800000,523,1861,2] + - [1442080800000,"PE",-2,2134,1442062800000,1442084400000,523,1861,2] + - [1442084400000,"PE",-68,2134,1442077200000,1442095200000,523,1861,3] + - [1442095200000,"PE",-19,2134,1442080800000,1442098800000,523,1861,3] + - [1442098800000,"PE",1861,2134,1442084400000,null,523,1861,3] + - [1442019600000,"PH",6,6613,null,1442023200000,6,8,1] + - [1442023200000,"PH",459,6613,null,1442026800000,6,8,1] + - [1442026800000,"PH",910,6613,1442019600000,1442030400000,6,8,1] + - [1442030400000,"PH",26,6613,1442023200000,1442034000000,6,8,1] + - [1442034000000,"PH",59,6613,1442026800000,1442037600000,6,8,1] + - [1442037600000,"PH",17,6613,1442030400000,1442041200000,6,8,1] + - [1442041200000,"PH",0,6613,1442034000000,1442044800000,6,8,1] + - [1442044800000,"PH",55,6613,1442037600000,1442048400000,6,8,2] + - [1442048400000,"PH",62,6613,1442041200000,1442052000000,6,8,2] + - [1442052000000,"PH",22,6613,1442044800000,1442055600000,6,8,2] + - [1442055600000,"PH",1969,6613,1442048400000,1442059200000,6,8,2] + - [1442059200000,"PH",273,6613,1442052000000,1442062800000,6,8,2] + - [1442062800000,"PH",171,6613,1442055600000,1442066400000,6,8,2] + - [1442066400000,"PH",1880,6613,1442059200000,1442070000000,6,8,2] + - [1442070000000,"PH",34,6613,1442062800000,1442073600000,6,8,3] + - [1442073600000,"PH",-227,6613,1442066400000,1442077200000,6,8,3] + - [1442077200000,"PH",2,6613,1442070000000,1442080800000,6,8,3] + - [1442080800000,"PH",32,6613,1442073600000,1442084400000,6,8,3] + - [1442084400000,"PH",39,6613,1442077200000,1442091600000,6,8,3] + - [1442091600000,"PH",816,6613,1442080800000,1442098800000,6,8,3] + - [1442098800000,"PH",8,6613,1442084400000,null,6,8,3] + - [1442019600000,"PK",335,641,null,1442026800000,335,43,1] + - [1442026800000,"PK",101,641,null,1442037600000,335,43,1] + - [1442037600000,"PK",100,641,1442019600000,1442041200000,335,43,1] + - [1442041200000,"PK",24,641,1442026800000,1442048400000,335,43,2] + - [1442048400000,"PK",15,641,1442037600000,1442062800000,335,43,2] + - [1442062800000,"PK",23,641,1442041200000,1442070000000,335,43,3] + - [1442070000000,"PK",43,641,1442048400000,null,335,43,3] + - [1442037600000,"PL",95,9815,null,1442041200000,95,-9,1] + - [1442041200000,"PL",281,9815,null,1442044800000,95,-9,1] + - [1442044800000,"PL",319,9815,1442037600000,1442048400000,95,-9,1] + - [1442048400000,"PL",366,9815,1442041200000,1442052000000,95,-9,1] + - [1442052000000,"PL",330,9815,1442044800000,1442055600000,95,-9,1] + - [1442055600000,"PL",410,9815,1442048400000,1442059200000,95,-9,1] + - [1442059200000,"PL",199,9815,1442052000000,1442062800000,95,-9,2] + - [1442062800000,"PL",4171,9815,1442055600000,1442066400000,95,-9,2] + - [1442066400000,"PL",34,9815,1442059200000,1442070000000,95,-9,2] + - [1442070000000,"PL",146,9815,1442062800000,1442073600000,95,-9,2] + - [1442073600000,"PL",30,9815,1442066400000,1442077200000,95,-9,2] + - [1442077200000,"PL",324,9815,1442070000000,1442080800000,95,-9,2] + - [1442080800000,"PL",7,9815,1442073600000,1442084400000,95,-9,3] + - [1442084400000,"PL",13,9815,1442077200000,1442088000000,95,-9,3] + - [1442088000000,"PL",346,9815,1442080800000,1442091600000,95,-9,3] + - [1442091600000,"PL",902,9815,1442084400000,1442095200000,95,-9,3] + - [1442095200000,"PL",1851,9815,1442088000000,1442098800000,95,-9,3] + - [1442098800000,"PL",-9,9815,1442091600000,null,95,-9,3] + - [1442026800000,"PR",22,23,null,1442030400000,22,29,1] + - [1442030400000,"PR",2,23,null,1442059200000,22,29,1] + - [1442059200000,"PR",-35,23,1442026800000,1442077200000,22,29,2] + - [1442077200000,"PR",5,23,1442030400000,1442095200000,22,29,2] + - [1442095200000,"PR",29,23,1442059200000,null,22,29,3] + - [1442019600000,"PT",172,4037,null,1442044800000,172,2,1] + - [1442044800000,"PT",11,4037,null,1442052000000,172,2,1] + - [1442052000000,"PT",102,4037,1442019600000,1442066400000,172,2,1] + - [1442066400000,"PT",12,4037,1442044800000,1442070000000,172,2,1] + - [1442070000000,"PT",3470,4037,1442052000000,1442077200000,172,2,2] + - [1442077200000,"PT",-75,4037,1442066400000,1442080800000,172,2,2] + - [1442080800000,"PT",-79,4037,1442070000000,1442088000000,172,2,2] + - [1442088000000,"PT",403,4037,1442077200000,1442095200000,172,2,3] + - [1442095200000,"PT",19,4037,1442080800000,1442098800000,172,2,3] + - [1442098800000,"PT",2,4037,1442088000000,null,172,2,3] + - [1442019600000,"PY",1,634,null,1442080800000,1,628,1] + - [1442080800000,"PY",5,634,null,1442084400000,1,628,2] + - [1442084400000,"PY",628,634,1442019600000,null,1,628,3] + - [1442041200000,"QA",13,13,null,null,13,13,1] + - [1442034000000,"RO",68,2893,null,1442041200000,68,824,1] + - [1442041200000,"RO",845,2893,null,1442044800000,68,824,1] + - [1442044800000,"RO",284,2893,1442034000000,1442052000000,68,824,1] + - [1442052000000,"RO",319,2893,1442041200000,1442055600000,68,824,1] + - [1442055600000,"RO",26,2893,1442044800000,1442062800000,68,824,2] + - [1442062800000,"RO",541,2893,1442052000000,1442070000000,68,824,2] + - [1442070000000,"RO",-29,2893,1442055600000,1442073600000,68,824,2] + - [1442073600000,"RO",15,2893,1442062800000,1442091600000,68,824,3] + - [1442091600000,"RO",0,2893,1442070000000,1442095200000,68,824,3] + - [1442095200000,"RO",824,2893,1442073600000,null,68,824,3] + - [1442019600000,"RS",6,906,null,1442062800000,6,-15,1] + - [1442062800000,"RS",13,906,null,1442066400000,6,-15,1] + - [1442066400000,"RS",0,906,1442019600000,1442073600000,6,-15,1] + - [1442073600000,"RS",813,906,1442062800000,1442080800000,6,-15,2] + - [1442080800000,"RS",0,906,1442066400000,1442084400000,6,-15,2] + - [1442084400000,"RS",89,906,1442073600000,1442091600000,6,-15,3] + - [1442091600000,"RS",-15,906,1442080800000,null,6,-15,3] + - [1442019600000,"RU",2214,48104,null,1442023200000,2214,12098,1] + - [1442023200000,"RU",299,48104,null,1442026800000,2214,12098,1] + - [1442026800000,"RU",0,48104,1442019600000,1442030400000,2214,12098,1] + - [1442030400000,"RU",76,48104,1442023200000,1442034000000,2214,12098,1] + - [1442034000000,"RU",658,48104,1442026800000,1442037600000,2214,12098,1] + - [1442037600000,"RU",-324,48104,1442030400000,1442041200000,2214,12098,1] + - [1442041200000,"RU",580,48104,1442034000000,1442044800000,2214,12098,1] + - [1442044800000,"RU",2564,48104,1442037600000,1442048400000,2214,12098,1] + - [1442048400000,"RU",1027,48104,1442041200000,1442052000000,2214,12098,2] + - [1442052000000,"RU",1214,48104,1442044800000,1442055600000,2214,12098,2] + - [1442055600000,"RU",499,48104,1442048400000,1442059200000,2214,12098,2] + - [1442059200000,"RU",3902,48104,1442052000000,1442062800000,2214,12098,2] + - [1442062800000,"RU",168,48104,1442055600000,1442066400000,2214,12098,2] + - [1442066400000,"RU",2047,48104,1442059200000,1442070000000,2214,12098,2] + - [1442070000000,"RU",4706,48104,1442062800000,1442073600000,2214,12098,2] + - [1442073600000,"RU",1618,48104,1442066400000,1442077200000,2214,12098,2] + - [1442077200000,"RU",1162,48104,1442070000000,1442080800000,2214,12098,3] + - [1442080800000,"RU",655,48104,1442073600000,1442084400000,2214,12098,3] + - [1442084400000,"RU",6461,48104,1442077200000,1442088000000,2214,12098,3] + - [1442088000000,"RU",2596,48104,1442080800000,1442091600000,2214,12098,3] + - [1442091600000,"RU",3449,48104,1442084400000,1442095200000,2214,12098,3] + - [1442095200000,"RU",435,48104,1442088000000,1442098800000,2214,12098,3] + - [1442098800000,"RU",12098,48104,1442091600000,null,2214,12098,3] + - [1442037600000,"SA",-97,1614,null,1442048400000,-97,458,1] + - [1442048400000,"SA",14,1614,null,1442055600000,-97,458,1] + - [1442055600000,"SA",11,1614,1442037600000,1442059200000,-97,458,1] + - [1442059200000,"SA",0,1614,1442048400000,1442066400000,-97,458,2] + - [1442066400000,"SA",1276,1614,1442055600000,1442073600000,-97,458,2] + - [1442073600000,"SA",2,1614,1442059200000,1442077200000,-97,458,2] + - [1442077200000,"SA",-50,1614,1442066400000,1442084400000,-97,458,3] + - [1442084400000,"SA",458,1614,1442073600000,null,-97,458,3] + - [1442019600000,"SE",109,1838,null,1442023200000,109,0,1] + - [1442023200000,"SE",3,1838,null,1442030400000,109,0,1] + - [1442030400000,"SE",30,1838,1442019600000,1442041200000,109,0,1] + - [1442041200000,"SE",91,1838,1442023200000,1442048400000,109,0,1] + - [1442048400000,"SE",-145,1838,1442030400000,1442052000000,109,0,1] + - [1442052000000,"SE",1,1838,1442041200000,1442055600000,109,0,2] + - [1442055600000,"SE",-5,1838,1442048400000,1442059200000,109,0,2] + - [1442059200000,"SE",1476,1838,1442052000000,1442066400000,109,0,2] + - [1442066400000,"SE",14,1838,1442055600000,1442070000000,109,0,2] + - [1442070000000,"SE",78,1838,1442059200000,1442080800000,109,0,2] + - [1442080800000,"SE",89,1838,1442066400000,1442084400000,109,0,3] + - [1442084400000,"SE",37,1838,1442070000000,1442091600000,109,0,3] + - [1442091600000,"SE",-1,1838,1442080800000,1442095200000,109,0,3] + - [1442095200000,"SE",61,1838,1442084400000,1442098800000,109,0,3] + - [1442098800000,"SE",0,1838,1442091600000,null,109,0,3] + - [1442026800000,"SG",2758,3338,null,1442030400000,2758,0,1] + - [1442030400000,"SG",1,3338,null,1442037600000,2758,0,1] + - [1442037600000,"SG",3,3338,1442026800000,1442041200000,2758,0,1] + - [1442041200000,"SG",59,3338,1442030400000,1442044800000,2758,0,2] + - [1442044800000,"SG",77,3338,1442037600000,1442048400000,2758,0,2] + - [1442048400000,"SG",52,3338,1442041200000,1442062800000,2758,0,2] + - [1442062800000,"SG",388,3338,1442044800000,1442066400000,2758,0,3] + - [1442066400000,"SG",0,3338,1442048400000,null,2758,0,3] + - [1442080800000,"SI",-45,-36,null,1442091600000,-45,9,1] + - [1442091600000,"SI",9,-36,null,null,-45,9,2] + - [1442037600000,"SK",-1,379,null,1442052000000,-1,7,1] + - [1442052000000,"SK",13,379,null,1442062800000,-1,7,1] + - [1442062800000,"SK",6,379,1442037600000,1442073600000,-1,7,2] + - [1442073600000,"SK",446,379,1442052000000,1442084400000,-1,7,2] + - [1442084400000,"SK",-92,379,1442062800000,1442098800000,-1,7,3] + - [1442098800000,"SK",7,379,1442073600000,null,-1,7,3] + - [1442019600000,"SV",-1,114,null,1442084400000,-1,9,1] + - [1442084400000,"SV",106,114,null,1442088000000,-1,9,2] + - [1442088000000,"SV",9,114,1442019600000,null,-1,9,3] + - [1442034000000,"TH",0,24,null,1442041200000,0,13,1] + - [1442041200000,"TH",3,24,null,1442044800000,0,13,1] + - [1442044800000,"TH",110,24,1442034000000,1442052000000,0,13,1] + - [1442052000000,"TH",-22,24,1442041200000,1442055600000,0,13,2] + - [1442055600000,"TH",0,24,1442044800000,1442062800000,0,13,2] + - [1442062800000,"TH",-46,24,1442052000000,1442066400000,0,13,2] + - [1442066400000,"TH",-34,24,1442055600000,1442070000000,0,13,3] + - [1442070000000,"TH",0,24,1442062800000,1442084400000,0,13,3] + - [1442084400000,"TH",13,24,1442066400000,null,0,13,3] + - [1442048400000,"TJ",1471,1471,null,null,1471,1471,1] + - [1442098800000,"TN",-9,-9,null,null,-9,-9,1] + - [1442023200000,"TR",306,7078,null,1442041200000,306,-29,1] + - [1442041200000,"TR",1,7078,null,1442044800000,306,-29,1] + - [1442044800000,"TR",41,7078,1442023200000,1442048400000,306,-29,1] + - [1442048400000,"TR",88,7078,1442041200000,1442052000000,306,-29,1] + - [1442052000000,"TR",41,7078,1442044800000,1442055600000,306,-29,1] + - [1442055600000,"TR",299,7078,1442048400000,1442062800000,306,-29,2] + - [1442062800000,"TR",315,7078,1442052000000,1442066400000,306,-29,2] + - [1442066400000,"TR",85,7078,1442055600000,1442070000000,306,-29,2] + - [1442070000000,"TR",236,7078,1442062800000,1442077200000,306,-29,2] + - [1442077200000,"TR",89,7078,1442066400000,1442080800000,306,-29,2] + - [1442080800000,"TR",-1,7078,1442070000000,1442084400000,306,-29,3] + - [1442084400000,"TR",170,7078,1442077200000,1442088000000,306,-29,3] + - [1442088000000,"TR",2389,7078,1442080800000,1442091600000,306,-29,3] + - [1442091600000,"TR",3048,7078,1442084400000,1442095200000,306,-29,3] + - [1442095200000,"TR",-29,7078,1442088000000,null,306,-29,3] + - [1442088000000,"TT",9,9,null,null,9,9,1] + - [1442016000000,"TW",92,3656,null,1442019600000,92,-60,1] + - [1442019600000,"TW",0,3656,null,1442023200000,92,-60,1] + - [1442023200000,"TW",97,3656,1442016000000,1442026800000,92,-60,1] + - [1442026800000,"TW",680,3656,1442019600000,1442030400000,92,-60,1] + - [1442030400000,"TW",0,3656,1442023200000,1442034000000,92,-60,1] + - [1442034000000,"TW",143,3656,1442026800000,1442037600000,92,-60,1] + - [1442037600000,"TW",266,3656,1442030400000,1442041200000,92,-60,1] + - [1442041200000,"TW",366,3656,1442034000000,1442044800000,92,-60,1] + - [1442044800000,"TW",24,3656,1442037600000,1442048400000,92,-60,2] + - [1442048400000,"TW",75,3656,1442041200000,1442052000000,92,-60,2] + - [1442052000000,"TW",24,3656,1442044800000,1442055600000,92,-60,2] + - [1442055600000,"TW",48,3656,1442048400000,1442059200000,92,-60,2] + - [1442059200000,"TW",-157,3656,1442052000000,1442062800000,92,-60,2] + - [1442062800000,"TW",-272,3656,1442055600000,1442066400000,92,-60,2] + - [1442066400000,"TW",624,3656,1442059200000,1442070000000,92,-60,2] + - [1442070000000,"TW",485,3656,1442062800000,1442073600000,92,-60,3] + - [1442073600000,"TW",772,3656,1442066400000,1442077200000,92,-60,3] + - [1442077200000,"TW",502,3656,1442070000000,1442080800000,92,-60,3] + - [1442080800000,"TW",24,3656,1442073600000,1442084400000,92,-60,3] + - [1442084400000,"TW",0,3656,1442077200000,1442095200000,92,-60,3] + - [1442095200000,"TW",-77,3656,1442080800000,1442098800000,92,-60,3] + - [1442098800000,"TW",-60,3656,1442084400000,null,92,-60,3] + - [1442034000000,"UA",3468,24898,null,1442037600000,3468,38,1] + - [1442037600000,"UA",-1,24898,null,1442041200000,3468,38,1] + - [1442041200000,"UA",74,24898,1442034000000,1442044800000,3468,38,1] + - [1442044800000,"UA",280,24898,1442037600000,1442048400000,3468,38,1] + - [1442048400000,"UA",2,24898,1442041200000,1442052000000,3468,38,1] + - [1442052000000,"UA",410,24898,1442044800000,1442055600000,3468,38,1] + - [1442055600000,"UA",14202,24898,1442048400000,1442059200000,3468,38,1] + - [1442059200000,"UA",-2,24898,1442052000000,1442062800000,3468,38,2] + - [1442062800000,"UA",773,24898,1442055600000,1442066400000,3468,38,2] + - [1442066400000,"UA",296,24898,1442059200000,1442070000000,3468,38,2] + - [1442070000000,"UA",1733,24898,1442062800000,1442073600000,3468,38,2] + - [1442073600000,"UA",4241,24898,1442066400000,1442077200000,3468,38,2] + - [1442077200000,"UA",-181,24898,1442070000000,1442080800000,3468,38,2] + - [1442080800000,"UA",-1,24898,1442073600000,1442084400000,3468,38,3] + - [1442084400000,"UA",5,24898,1442077200000,1442088000000,3468,38,3] + - [1442088000000,"UA",-21,24898,1442080800000,1442091600000,3468,38,3] + - [1442091600000,"UA",-388,24898,1442084400000,1442095200000,3468,38,3] + - [1442095200000,"UA",-30,24898,1442088000000,1442098800000,3468,38,3] + - [1442098800000,"UA",38,24898,1442091600000,null,3468,38,3] + - [1442070000000,"UG",1,1,null,null,1,1,1] + - [1442016000000,"US",0,38882,null,1442019600000,0,3575,1] + - [1442019600000,"US",1043,38882,null,1442023200000,0,3575,1] + - [1442023200000,"US",2844,38882,1442016000000,1442026800000,0,3575,1] + - [1442026800000,"US",1512,38882,1442019600000,1442030400000,0,3575,1] + - [1442030400000,"US",2023,38882,1442023200000,1442034000000,0,3575,1] + - [1442034000000,"US",3648,38882,1442026800000,1442037600000,0,3575,1] + - [1442037600000,"US",3675,38882,1442030400000,1442041200000,0,3575,1] + - [1442041200000,"US",1999,38882,1442034000000,1442044800000,0,3575,1] + - [1442044800000,"US",139,38882,1442037600000,1442048400000,0,3575,2] + - [1442048400000,"US",-466,38882,1442041200000,1442052000000,0,3575,2] + - [1442052000000,"US",-2,38882,1442044800000,1442055600000,0,3575,2] + - [1442055600000,"US",156,38882,1442048400000,1442059200000,0,3575,2] + - [1442059200000,"US",11,38882,1442052000000,1442062800000,0,3575,2] + - [1442062800000,"US",47,38882,1442055600000,1442066400000,0,3575,2] + - [1442066400000,"US",772,38882,1442059200000,1442070000000,0,3575,2] + - [1442070000000,"US",3505,38882,1442062800000,1442073600000,0,3575,2] + - [1442073600000,"US",1100,38882,1442066400000,1442077200000,0,3575,3] + - [1442077200000,"US",2168,38882,1442070000000,1442080800000,0,3575,3] + - [1442080800000,"US",4001,38882,1442073600000,1442084400000,0,3575,3] + - [1442084400000,"US",2523,38882,1442077200000,1442088000000,0,3575,3] + - [1442088000000,"US",1691,38882,1442080800000,1442091600000,0,3575,3] + - [1442091600000,"US",2502,38882,1442084400000,1442095200000,0,3575,3] + - [1442095200000,"US",416,38882,1442088000000,1442098800000,0,3575,3] + - [1442098800000,"US",3575,38882,1442091600000,null,0,3575,3] + - [1442019600000,"UY",77,936,null,1442023200000,77,23,1] + - [1442023200000,"UY",517,936,null,1442026800000,77,23,1] + - [1442026800000,"UY",76,936,1442019600000,1442037600000,77,23,1] + - [1442037600000,"UY",1,936,1442023200000,1442070000000,77,23,2] + - [1442070000000,"UY",284,936,1442026800000,1442073600000,77,23,2] + - [1442073600000,"UY",-42,936,1442037600000,1442077200000,77,23,3] + - [1442077200000,"UY",23,936,1442070000000,null,77,23,3] + - [1442044800000,"UZ",1369,1369,null,null,1369,1369,1] + - [1442023200000,"VE",115,1101,null,1442026800000,115,9,1] + - [1442026800000,"VE",-17,1101,null,1442030400000,115,9,1] + - [1442030400000,"VE",51,1101,1442023200000,1442034000000,115,9,1] + - [1442034000000,"VE",-2,1101,1442026800000,1442066400000,115,9,1] + - [1442066400000,"VE",18,1101,1442030400000,1442070000000,115,9,2] + - [1442070000000,"VE",420,1101,1442034000000,1442077200000,115,9,2] + - [1442077200000,"VE",412,1101,1442066400000,1442084400000,115,9,2] + - [1442084400000,"VE",60,1101,1442070000000,1442095200000,115,9,3] + - [1442095200000,"VE",35,1101,1442077200000,1442098800000,115,9,3] + - [1442098800000,"VE",9,1101,1442084400000,null,115,9,3] + - [1442062800000,"VG",-238,-238,null,null,-238,-238,1] + - [1442023200000,"VN",-9,1560,null,1442026800000,-9,-10,1] + - [1442026800000,"VN",63,1560,null,1442034000000,-9,-10,1] + - [1442034000000,"VN",-29,1560,1442023200000,1442037600000,-9,-10,1] + - [1442037600000,"VN",-11,1560,1442026800000,1442041200000,-9,-10,1] + - [1442041200000,"VN",0,1560,1442034000000,1442048400000,-9,-10,1] + - [1442048400000,"VN",-15,1560,1442037600000,1442052000000,-9,-10,2] + - [1442052000000,"VN",90,1560,1442041200000,1442055600000,-9,-10,2] + - [1442055600000,"VN",37,1560,1442048400000,1442059200000,-9,-10,2] + - [1442059200000,"VN",8,1560,1442052000000,1442062800000,-9,-10,2] + - [1442062800000,"VN",146,1560,1442055600000,1442066400000,-9,-10,3] + - [1442066400000,"VN",811,1560,1442059200000,1442070000000,-9,-10,3] + - [1442070000000,"VN",479,1560,1442062800000,1442084400000,-9,-10,3] + - [1442084400000,"VN",-10,1560,1442066400000,null,-9,-10,3] + - [1442034000000,"ZA",-3,127,null,1442048400000,-3,1,1] + - [1442048400000,"ZA",79,127,null,1442059200000,-3,1,1] + - [1442059200000,"ZA",50,127,1442034000000,1442070000000,-3,1,2] + - [1442070000000,"ZA",0,127,1442048400000,1442091600000,-3,1,2] + - [1442091600000,"ZA",1,127,1442059200000,null,-3,1,3] + - [1442041200000,"ZM",133,133,null,null,133,133,1] + - [1442044800000,"ZW",0,254,null,1442048400000,0,254,1] + - [1442048400000,"ZW",254,254,null,null,0,254,2] From 02aac9dd276f487832798d28831492b42f28b2fb Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 4 Oct 2023 11:04:15 +0000 Subject: [PATCH 007/100] some stuff --- .../sql/calcite/CalciteWindowQueryTest.java | 50 ++++++++++++++++--- .../calcite/tests/window/lead_lag.sqlTest | 17 +++---- 2 files changed, 51 insertions(+), 16 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index 08ed99c7d0d3..4d22025a2817 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -89,18 +89,56 @@ public static Object parametersForWindowQueryTest() throws Exception } private final String filename; + private final TestCase testCase; - public CalciteWindowQueryTest( - String filename - ) + public CalciteWindowQueryTest(String filename) throws Exception { + this.testCase= new TestCase(filename); this.filename = filename; } + class TestCase { + private WindowQueryTestInputClass input; + + public TestCase(String filename) throws Exception { + final URL systemResource = ClassLoader.getSystemResource("calcite/tests/window/" + filename); + + final Object objectFromYaml = YAML_JACKSON.readValue(systemResource, Object.class); + + final ObjectMapper queryJackson = queryFramework().queryJsonMapper(); + input = queryJackson.convertValue(objectFromYaml, WindowQueryTestInputClass.class); + + Function jacksonToString = value -> { + try { + return queryJackson.writeValueAsString(value); + } + catch (JsonProcessingException e) { + throw new RE(e); + } + }; + +} + + public TestType getType() + { + return input.type; + } + + public String getSql() + { + return input.sql + ; + + } + + } + @Test @SuppressWarnings("unchecked") public void windowQueryTest() throws IOException { + +// TestCase tc = new TestCase(); final URL systemResource = ClassLoader.getSystemResource("calcite/tests/window/" + filename); final Object objectFromYaml = YAML_JACKSON.readValue(systemResource, Object.class); @@ -117,12 +155,12 @@ public void windowQueryTest() throws IOException } }; - assumeThat(input.type, Matchers.not(TestType.failingTest)); + assumeThat(testCase.getType(), Matchers.not(TestType.failingTest)); - if (input.type == TestType.operatorValidation) { + if (testCase.getType() == TestType.operatorValidation) { testBuilder() .skipVectorize(true) - .sql(input.sql) + .sql(testCase.getSql()) .queryContext(ImmutableMap.of(PlannerContext.CTX_ENABLE_WINDOW_FNS, true, QueryContexts.ENABLE_DEBUG, true)) .addCustomVerification(QueryVerification.ofResults(results -> { diff --git a/sql/src/test/resources/calcite/tests/window/lead_lag.sqlTest b/sql/src/test/resources/calcite/tests/window/lead_lag.sqlTest index f26d6ce8f50b..9f8b900a7c17 100644 --- a/sql/src/test/resources/calcite/tests/window/lead_lag.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/lead_lag.sqlTest @@ -2,11 +2,11 @@ type: "operatorValidation" sql: | SELECT - dim1, dim2, - LAG(dim1,111) OVER () + LAG(dim2,1) OVER () FROM foo - GROUP BY dim1,dim2 + WHERE dim2 is null or length(dim2)>0 + GROUP BY dim2 expectedOperators: - type: "naivePartition" @@ -16,11 +16,8 @@ expectedOperators: type: "offset" inputColumn: "d0" outputColumn: "w0" - offset: -111 + offset: -1 expectedResults: - - ["","a",null] - - ["1","a",null] - - ["10.1",null,null] - - ["2","",null] - - ["abc",null,null] - - ["def","abc",null] + - [null,null] + - ["a",null] + - ["abc","a"] From a9877c45f0c2c420cfada34ac543017b8368ec7b Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 4 Oct 2023 11:05:36 +0000 Subject: [PATCH 008/100] move validator --- .../sql/calcite/CalciteWindowQueryTest.java | 174 +++++++++--------- 1 file changed, 83 insertions(+), 91 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index 4d22025a2817..2b177e090366 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -35,6 +35,8 @@ import org.apache.druid.segment.column.ColumnType; import org.apache.druid.segment.column.RowSignature; import org.apache.druid.sql.calcite.CalciteWindowQueryTest.WindowQueryTestInputClass.TestType; +import org.apache.druid.sql.calcite.QueryTestRunner.QueryResults; +import org.apache.druid.sql.calcite.QueryVerification.QueryResultsVerifier; import org.apache.druid.sql.calcite.planner.PlannerContext; import org.hamcrest.Matchers; import org.junit.Assert; @@ -97,18 +99,20 @@ public CalciteWindowQueryTest(String filename) throws Exception this.filename = filename; } - class TestCase { + class TestCase implements QueryResultsVerifier { private WindowQueryTestInputClass input; + private ObjectMapper queryJackson; + private Function jacksonToString; public TestCase(String filename) throws Exception { final URL systemResource = ClassLoader.getSystemResource("calcite/tests/window/" + filename); final Object objectFromYaml = YAML_JACKSON.readValue(systemResource, Object.class); - final ObjectMapper queryJackson = queryFramework().queryJsonMapper(); + queryJackson = queryFramework().queryJsonMapper(); input = queryJackson.convertValue(objectFromYaml, WindowQueryTestInputClass.class); - Function jacksonToString = value -> { + jacksonToString = value -> { try { return queryJackson.writeValueAsString(value); } @@ -131,30 +135,87 @@ public String getSql() } + @Override + public void verifyResults(QueryResults results) + { + { + if (results.exception != null) { + throw new RE(results.exception, "Failed to execute because of exception."); + } + + Assert.assertEquals(1, results.recordedQueries.size()); + // 2 tests are failing at this moment on this check + // They are wikipediaFramedAggregations.sqlTest and wikipediaAggregationsMultipleOrdering.sqlTest + // Calcite 1.35 plans them as an external scan over a windowOperator + // with an additional COUNT(*) to replace intervals with no data + // and then adding a virtual column to filter it out + // For example, ExpressionVirtualColumn{name='v0', expression='case_searched(("w0" > 0),"w1",null + // and aggregations=[CountAggregatorFactory{name='w0'}, LongSumAggregatorFactory{fieldName='a0', expression='null', name='w1'}]}}]} + // These 2 tests are marked as failingTests to unblock testing at this moment + + final WindowOperatorQuery query = getWindowOperatorQuery(results.recordedQueries); + for (int i = 0; i < input.expectedOperators.size(); ++i) { + final OperatorFactory expectedOperator = input.expectedOperators.get(i); + final OperatorFactory actualOperator = query.getOperators().get(i); + if (!expectedOperator.validateEquivalent(actualOperator)) { + // This assertion always fails because the validate equivalent failed, but we do it anyway + // so that we get values in the output of the failed test to make it easier to + // debug what happened. Note, we use the Jackson representation when showing the diff. There is + // a chance that this representation is exactly equivalent, but the validation call is still failing + // this is probably indicative of a bug where something that needs to be serialized by Jackson + // currently is not. Check your getters. + + // prepend different values so that we are guaranteed that it is always different + String expected = "e " + jacksonToString.apply(expectedOperator); + String actual = "a " + jacksonToString.apply(actualOperator); + + Assert.assertEquals("Operator Mismatch, index[" + i + "]", expected, actual); + } + } + final RowSignature outputSignature = query.getRowSignature(); + ColumnType[] types = new ColumnType[outputSignature.size()]; + for (int i = 0; i < outputSignature.size(); ++i) { + types[i] = outputSignature.getColumnType(i).get(); + Assert.assertEquals(types[i], results.signature.getColumnType(i).get()); + } + + maybeDumpActualResults(jacksonToString, results.results); + for (Object[] result : input.expectedResults) { + for (int i = 0; i < result.length; i++) { + // Jackson deserializes numbers as the minimum size required to store the value. This means that + // Longs can become Integer objects and then they fail equality checks. We read the expected + // results using Jackson, so, we coerce the expected results to the type expected. + if (result[i] != null) { + if (result[i] instanceof Number) { + switch (types[i].getType()) { + case LONG: + result[i] = ((Number) result[i]).longValue(); + break; + case DOUBLE: + result[i] = ((Number) result[i]).doubleValue(); + break; + case FLOAT: + result[i] = ((Number) result[i]).floatValue(); + break; + default: + throw new ISE("result[%s] was type[%s]!? Expected it to be numerical", i, types[i].getType()); + } + } + } else { + result[i] = NullHandling.defaultValueForType(types[i].getType()); + } + } + } + assertResultsEquals(filename, input.expectedResults, results.results); + } + } + } @Test @SuppressWarnings("unchecked") public void windowQueryTest() throws IOException { - -// TestCase tc = new TestCase(); - final URL systemResource = ClassLoader.getSystemResource("calcite/tests/window/" + filename); - - final Object objectFromYaml = YAML_JACKSON.readValue(systemResource, Object.class); - - final ObjectMapper queryJackson = queryFramework().queryJsonMapper(); - final WindowQueryTestInputClass input = queryJackson.convertValue(objectFromYaml, WindowQueryTestInputClass.class); - - Function jacksonToString = value -> { - try { - return queryJackson.writeValueAsString(value); - } - catch (JsonProcessingException e) { - throw new RE(e); - } - }; - assumeThat(testCase.getType(), Matchers.not(TestType.failingTest)); if (testCase.getType() == TestType.operatorValidation) { @@ -163,76 +224,7 @@ public void windowQueryTest() throws IOException .sql(testCase.getSql()) .queryContext(ImmutableMap.of(PlannerContext.CTX_ENABLE_WINDOW_FNS, true, QueryContexts.ENABLE_DEBUG, true)) - .addCustomVerification(QueryVerification.ofResults(results -> { - if (results.exception != null) { - throw new RE(results.exception, "Failed to execute because of exception."); - } - - Assert.assertEquals(1, results.recordedQueries.size()); - // 2 tests are failing at this moment on this check - // They are wikipediaFramedAggregations.sqlTest and wikipediaAggregationsMultipleOrdering.sqlTest - // Calcite 1.35 plans them as an external scan over a windowOperator - // with an additional COUNT(*) to replace intervals with no data - // and then adding a virtual column to filter it out - // For example, ExpressionVirtualColumn{name='v0', expression='case_searched(("w0" > 0),"w1",null - // and aggregations=[CountAggregatorFactory{name='w0'}, LongSumAggregatorFactory{fieldName='a0', expression='null', name='w1'}]}}]} - // These 2 tests are marked as failingTests to unblock testing at this moment - - final WindowOperatorQuery query = getWindowOperatorQuery(results.recordedQueries); - for (int i = 0; i < input.expectedOperators.size(); ++i) { - final OperatorFactory expectedOperator = input.expectedOperators.get(i); - final OperatorFactory actualOperator = query.getOperators().get(i); - if (!expectedOperator.validateEquivalent(actualOperator)) { - // This assertion always fails because the validate equivalent failed, but we do it anyway - // so that we get values in the output of the failed test to make it easier to - // debug what happened. Note, we use the Jackson representation when showing the diff. There is - // a chance that this representation is exactly equivalent, but the validation call is still failing - // this is probably indicative of a bug where something that needs to be serialized by Jackson - // currently is not. Check your getters. - - // prepend different values so that we are guaranteed that it is always different - String expected = "e " + jacksonToString.apply(expectedOperator); - String actual = "a " + jacksonToString.apply(actualOperator); - - Assert.assertEquals("Operator Mismatch, index[" + i + "]", expected, actual); - } - } - final RowSignature outputSignature = query.getRowSignature(); - ColumnType[] types = new ColumnType[outputSignature.size()]; - for (int i = 0; i < outputSignature.size(); ++i) { - types[i] = outputSignature.getColumnType(i).get(); - Assert.assertEquals(types[i], results.signature.getColumnType(i).get()); - } - - maybeDumpActualResults(jacksonToString, results.results); - for (Object[] result : input.expectedResults) { - for (int i = 0; i < result.length; i++) { - // Jackson deserializes numbers as the minimum size required to store the value. This means that - // Longs can become Integer objects and then they fail equality checks. We read the expected - // results using Jackson, so, we coerce the expected results to the type expected. - if (result[i] != null) { - if (result[i] instanceof Number) { - switch (types[i].getType()) { - case LONG: - result[i] = ((Number) result[i]).longValue(); - break; - case DOUBLE: - result[i] = ((Number) result[i]).doubleValue(); - break; - case FLOAT: - result[i] = ((Number) result[i]).floatValue(); - break; - default: - throw new ISE("result[%s] was type[%s]!? Expected it to be numerical", i, types[i].getType()); - } - } - } else { - result[i] = NullHandling.defaultValueForType(types[i].getType()); - } - } - } - assertResultsEquals(filename, input.expectedResults, results.results); - })) + .addCustomVerification(QueryVerification.ofResults(testCase)) .run(); } } From f104ce46b9dd4e96819322ff58f518768b31c5c0 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 4 Oct 2023 11:09:40 +0000 Subject: [PATCH 009/100] cleanup --- .../sql/calcite/CalciteWindowQueryTest.java | 148 +++++++++--------- 1 file changed, 73 insertions(+), 75 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index 2b177e090366..d73520023d28 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -45,7 +45,6 @@ import org.junit.runners.Parameterized; import java.io.File; -import java.io.IOException; import java.net.URL; import java.util.Arrays; import java.util.List; @@ -91,20 +90,21 @@ public static Object parametersForWindowQueryTest() throws Exception } private final String filename; - private final TestCase testCase; public CalciteWindowQueryTest(String filename) throws Exception { - this.testCase= new TestCase(filename); + this.filename = filename; } - class TestCase implements QueryResultsVerifier { + class TestCase implements QueryResultsVerifier + { private WindowQueryTestInputClass input; private ObjectMapper queryJackson; private Function jacksonToString; - public TestCase(String filename) throws Exception { + public TestCase(String filename) throws Exception + { final URL systemResource = ClassLoader.getSystemResource("calcite/tests/window/" + filename); final Object objectFromYaml = YAML_JACKSON.readValue(systemResource, Object.class); @@ -115,13 +115,12 @@ public TestCase(String filename) throws Exception { jacksonToString = value -> { try { return queryJackson.writeValueAsString(value); - } - catch (JsonProcessingException e) { + } catch (JsonProcessingException e) { throw new RE(e); } }; -} + } public TestType getType() { @@ -130,92 +129,91 @@ public TestType getType() public String getSql() { - return input.sql - ; - + return input.sql; } @Override public void verifyResults(QueryResults results) { - { - if (results.exception != null) { - throw new RE(results.exception, "Failed to execute because of exception."); - } - - Assert.assertEquals(1, results.recordedQueries.size()); - // 2 tests are failing at this moment on this check - // They are wikipediaFramedAggregations.sqlTest and wikipediaAggregationsMultipleOrdering.sqlTest - // Calcite 1.35 plans them as an external scan over a windowOperator - // with an additional COUNT(*) to replace intervals with no data - // and then adding a virtual column to filter it out - // For example, ExpressionVirtualColumn{name='v0', expression='case_searched(("w0" > 0),"w1",null - // and aggregations=[CountAggregatorFactory{name='w0'}, LongSumAggregatorFactory{fieldName='a0', expression='null', name='w1'}]}}]} - // These 2 tests are marked as failingTests to unblock testing at this moment - - final WindowOperatorQuery query = getWindowOperatorQuery(results.recordedQueries); - for (int i = 0; i < input.expectedOperators.size(); ++i) { - final OperatorFactory expectedOperator = input.expectedOperators.get(i); - final OperatorFactory actualOperator = query.getOperators().get(i); - if (!expectedOperator.validateEquivalent(actualOperator)) { - // This assertion always fails because the validate equivalent failed, but we do it anyway - // so that we get values in the output of the failed test to make it easier to - // debug what happened. Note, we use the Jackson representation when showing the diff. There is - // a chance that this representation is exactly equivalent, but the validation call is still failing - // this is probably indicative of a bug where something that needs to be serialized by Jackson - // currently is not. Check your getters. - - // prepend different values so that we are guaranteed that it is always different - String expected = "e " + jacksonToString.apply(expectedOperator); - String actual = "a " + jacksonToString.apply(actualOperator); - - Assert.assertEquals("Operator Mismatch, index[" + i + "]", expected, actual); - } - } - final RowSignature outputSignature = query.getRowSignature(); - ColumnType[] types = new ColumnType[outputSignature.size()]; - for (int i = 0; i < outputSignature.size(); ++i) { - types[i] = outputSignature.getColumnType(i).get(); - Assert.assertEquals(types[i], results.signature.getColumnType(i).get()); + if (results.exception != null) { + throw new RE(results.exception, "Failed to execute because of exception."); + } + Assert.assertEquals(1, results.recordedQueries.size()); + + final WindowOperatorQuery query = getWindowOperatorQuery(results.recordedQueries); + for (int i = 0; i < input.expectedOperators.size(); ++i) { + final OperatorFactory expectedOperator = input.expectedOperators.get(i); + final OperatorFactory actualOperator = query.getOperators().get(i); + if (!expectedOperator.validateEquivalent(actualOperator)) { + // This assertion always fails because the validate equivalent + // failed, but we do it anyway + // so that we get values in the output of the failed test to make it + // easier to + // debug what happened. Note, we use the Jackson representation when + // showing the diff. There is + // a chance that this representation is exactly equivalent, but the + // validation call is still failing + // this is probably indicative of a bug where something that needs + // to be serialized by Jackson + // currently is not. Check your getters. + + // prepend different values so that we are guaranteed that it is + // always different + String expected = "e " + jacksonToString.apply(expectedOperator); + String actual = "a " + jacksonToString.apply(actualOperator); + + Assert.assertEquals("Operator Mismatch, index[" + i + "]", expected, actual); } + } + final RowSignature outputSignature = query.getRowSignature(); + ColumnType[] types = new ColumnType[outputSignature.size()]; + for (int i = 0; i < outputSignature.size(); ++i) { + types[i] = outputSignature.getColumnType(i).get(); + Assert.assertEquals(types[i], results.signature.getColumnType(i).get()); + } - maybeDumpActualResults(jacksonToString, results.results); - for (Object[] result : input.expectedResults) { - for (int i = 0; i < result.length; i++) { - // Jackson deserializes numbers as the minimum size required to store the value. This means that - // Longs can become Integer objects and then they fail equality checks. We read the expected - // results using Jackson, so, we coerce the expected results to the type expected. - if (result[i] != null) { - if (result[i] instanceof Number) { - switch (types[i].getType()) { - case LONG: - result[i] = ((Number) result[i]).longValue(); - break; - case DOUBLE: - result[i] = ((Number) result[i]).doubleValue(); - break; - case FLOAT: - result[i] = ((Number) result[i]).floatValue(); - break; - default: - throw new ISE("result[%s] was type[%s]!? Expected it to be numerical", i, types[i].getType()); - } + maybeDumpActualResults(jacksonToString, results.results); + for (Object[] result : input.expectedResults) { + for (int i = 0; i < result.length; i++) { + // Jackson deserializes numbers as the minimum size required to + // store the value. This means that + // Longs can become Integer objects and then they fail equality + // checks. We read the expected + // results using Jackson, so, we coerce the expected results to the + // type expected. + if (result[i] != null) { + if (result[i] instanceof Number) { + switch (types[i].getType()) + { + case LONG: + result[i] = ((Number) result[i]).longValue(); + break; + case DOUBLE: + result[i] = ((Number) result[i]).doubleValue(); + break; + case FLOAT: + result[i] = ((Number) result[i]).floatValue(); + break; + default: + throw new ISE("result[%s] was type[%s]!? Expected it to be numerical", i, types[i].getType()); } - } else { - result[i] = NullHandling.defaultValueForType(types[i].getType()); } + } else { + result[i] = NullHandling.defaultValueForType(types[i].getType()); } } - assertResultsEquals(filename, input.expectedResults, results.results); } + assertResultsEquals(filename, input.expectedResults, results.results); } } @Test @SuppressWarnings("unchecked") - public void windowQueryTest() throws IOException + public void windowQueryTest() throws Exception { + TestCase testCase = new TestCase(filename); + assumeThat(testCase.getType(), Matchers.not(TestType.failingTest)); if (testCase.getType() == TestType.operatorValidation) { From 145fe8215b83142a8fcebf69d59efb59af8fbca9 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 4 Oct 2023 11:27:39 +0000 Subject: [PATCH 010/100] fix --- .../sql/calcite/BaseCalciteQueryTest.java | 33 +++++++++++++++++++ .../sql/calcite/CalciteWindowQueryTest.java | 9 ++--- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index 16f642701724..fc76039982aa 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -86,6 +86,7 @@ import org.apache.druid.server.security.ForbiddenException; import org.apache.druid.server.security.ResourceAction; import org.apache.druid.sql.SqlStatementFactory; +import org.apache.druid.sql.calcite.QueryTestRunner.QueryResults; import org.apache.druid.sql.calcite.expression.DruidExpression; import org.apache.druid.sql.calcite.planner.Calcites; import org.apache.druid.sql.calcite.planner.PlannerConfig; @@ -120,6 +121,8 @@ import org.junit.rules.TemporaryFolder; import javax.annotation.Nullable; + +import static org.junit.Assert.assertEquals; import java.io.IOException; import java.io.PrintStream; import java.util.Arrays; @@ -1054,6 +1057,36 @@ public Map baseQueryContext() } } + public void assertResultsValid(String message, List expected, QueryResults queryResults) + { + + List results = queryResults.results; + int numRows = Math.min(results.size(), expected.size()); + for (int row = 0; row < numRows; row++) { + Object[] expectedRow = expected.get(row); + Object[] resultRow = results.get(row); + assertEquals("column count mismatch; at row#" + row, expectedRow.length, resultRow.length); + + for (int i = 0; i < resultRow.length; i++) { + Object resultCell = resultRow[i]; + Object expectedCell = expectedRow[i]; + + if(expectedCell == null) { + if(resultCell == null) { + continue; + } + expectedCell = NullHandling.defaultValueForType(queryResults.signature.getColumnType(i).get().getType()); + } + assertEquals( + String.format("column content mismatch at %d,%d", row, i), + expectedCell, + resultCell); + } + + } + + } + public void assertResultsEquals(String sql, List expectedResults, List results) { for (int i = 0; i < results.size(); i++) { diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index d73520023d28..464d10e93cb3 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -79,9 +79,7 @@ public static Object parametersForWindowQueryTest() throws Exception final URL windowFolderUrl = ClassLoader.getSystemResource("calcite/tests/window"); File windowFolder = new File(windowFolderUrl.toURI()); - final File[] listedFiles = windowFolder.listFiles( - pathname -> pathname.getName().toLowerCase(Locale.ROOT).endsWith(".sqltest") - ); + final File[] listedFiles = windowFolder.listFiles(pathname -> pathname.getName().toLowerCase(Locale.ROOT).endsWith(".sqltest")); return Arrays .stream(Objects.requireNonNull(listedFiles)) @@ -198,12 +196,11 @@ public void verifyResults(QueryResults results) throw new ISE("result[%s] was type[%s]!? Expected it to be numerical", i, types[i].getType()); } } - } else { - result[i] = NullHandling.defaultValueForType(types[i].getType()); } } } - assertResultsEquals(filename, input.expectedResults, results.results); + + assertResultsValid(filename, input.expectedResults, results); } } From 761cd68918afb8f1ffc39ee3f50e7b87c3ed2302 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 4 Oct 2023 11:31:26 +0000 Subject: [PATCH 011/100] change test slightly --- .../calcite/tests/window/no_grouping.sqlTest | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/sql/src/test/resources/calcite/tests/window/no_grouping.sqlTest b/sql/src/test/resources/calcite/tests/window/no_grouping.sqlTest index b30ee83bb61a..3b2bef3e965a 100644 --- a/sql/src/test/resources/calcite/tests/window/no_grouping.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/no_grouping.sqlTest @@ -2,8 +2,8 @@ type: "operatorValidation" sql: | SELECT - dim2, - COUNT(dim2) OVER () cc + m1, + SUM(m1) OVER () cc FROM druid.foo expectedOperators: @@ -14,16 +14,13 @@ expectedOperators: type: "framedAgg" frame: { peerType: "ROWS", lowUnbounded: true, lowOffset: 0, uppUnbounded: true, uppOffset: 0 } aggregations: - - type: "filtered" - aggregator: {"type":"count","name":"w0"} - filter: - type: not - field: {"type":"null","column":"dim2"} - name: null + - type: "doubleSum" + name: "w0" + fieldName: "m1" expectedResults: - - ["a",6] - - [null,6] - - ["",6] - - ["a",6] - - ["abc",6] - - [null,6] + - [1.0,21.0] + - [2.0,21.0] + - [3.0,21.0] + - [4.0,21.0] + - [5.0,21.0] + - [6.0,21.0] From a10fe7af09cf77541a747e28c91799b7216d0306 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 4 Oct 2023 11:46:24 +0000 Subject: [PATCH 012/100] add apidoc cleanup warnings --- .../sql/calcite/BaseCalciteQueryTest.java | 20 +++--- .../sql/calcite/CalciteWindowQueryTest.java | 61 +++++++------------ .../druid/sql/calcite/QueryVerification.java | 9 ++- 3 files changed, 41 insertions(+), 49 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index fc76039982aa..36615d10e994 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -120,9 +120,6 @@ import org.junit.rules.ExpectedException; import org.junit.rules.TemporaryFolder; -import javax.annotation.Nullable; - -import static org.junit.Assert.assertEquals; import java.io.IOException; import java.io.PrintStream; import java.util.Arrays; @@ -135,6 +132,10 @@ import java.util.function.Consumer; import java.util.stream.Collectors; +import javax.annotation.Nullable; + +import static org.junit.Assert.assertEquals; + /** * A base class for SQL query testing. It sets up query execution environment, provides useful helper methods, * and populates data using {@link CalciteTests#createMockWalker}. @@ -1057,9 +1058,14 @@ public Map baseQueryContext() } } + /** + * Validates the results with slight loosening in case {@link NullHandling} is not sql compatible. + * + * In case {@link NullHandling#replaceWithDefault()} an expected results of null accepts + * both null and the default value for that column as actual result. + */ public void assertResultsValid(String message, List expected, QueryResults queryResults) { - List results = queryResults.results; int numRows = Math.min(results.size(), expected.size()); for (int row = 0; row < numRows; row++) { @@ -1071,8 +1077,8 @@ public void assertResultsValid(String message, List expected, QueryRes Object resultCell = resultRow[i]; Object expectedCell = expectedRow[i]; - if(expectedCell == null) { - if(resultCell == null) { + if (expectedCell == null) { + if (resultCell == null) { continue; } expectedCell = NullHandling.defaultValueForType(queryResults.signature.getColumnType(i).get().getType()); @@ -1082,9 +1088,7 @@ public void assertResultsValid(String message, List expected, QueryRes expectedCell, resultCell); } - } - } public void assertResultsEquals(String sql, List expectedResults, List results) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index 464d10e93cb3..cc9465adbf3e 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -20,7 +20,6 @@ package org.apache.druid.sql.calcite; import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import com.google.common.collect.ImmutableMap; @@ -50,7 +49,6 @@ import java.util.List; import java.util.Locale; import java.util.Objects; -import java.util.function.Function; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -99,7 +97,6 @@ class TestCase implements QueryResultsVerifier { private WindowQueryTestInputClass input; private ObjectMapper queryJackson; - private Function jacksonToString; public TestCase(String filename) throws Exception { @@ -110,14 +107,6 @@ public TestCase(String filename) throws Exception queryJackson = queryFramework().queryJsonMapper(); input = queryJackson.convertValue(objectFromYaml, WindowQueryTestInputClass.class); - jacksonToString = value -> { - try { - return queryJackson.writeValueAsString(value); - } catch (JsonProcessingException e) { - throw new RE(e); - } - }; - } public TestType getType() @@ -131,7 +120,7 @@ public String getSql() } @Override - public void verifyResults(QueryResults results) + public void verifyResults(QueryResults results) throws Exception { if (results.exception != null) { throw new RE(results.exception, "Failed to execute because of exception."); @@ -157,8 +146,8 @@ public void verifyResults(QueryResults results) // prepend different values so that we are guaranteed that it is // always different - String expected = "e " + jacksonToString.apply(expectedOperator); - String actual = "a " + jacksonToString.apply(actualOperator); + String expected = "e " + queryJackson.writeValueAsString(expectedOperator); + String actual = "a " + queryJackson.writeValueAsString(actualOperator); Assert.assertEquals("Operator Mismatch, index[" + i + "]", expected, actual); } @@ -170,7 +159,7 @@ public void verifyResults(QueryResults results) Assert.assertEquals(types[i], results.signature.getColumnType(i).get()); } - maybeDumpActualResults(jacksonToString, results.results); + maybeDumpActualResults(results.results); for (Object[] result : input.expectedResults) { for (int i = 0; i < result.length; i++) { // Jackson deserializes numbers as the minimum size required to @@ -181,28 +170,32 @@ public void verifyResults(QueryResults results) // type expected. if (result[i] != null) { if (result[i] instanceof Number) { - switch (types[i].getType()) - { - case LONG: - result[i] = ((Number) result[i]).longValue(); - break; - case DOUBLE: - result[i] = ((Number) result[i]).doubleValue(); - break; - case FLOAT: - result[i] = ((Number) result[i]).floatValue(); - break; - default: - throw new ISE("result[%s] was type[%s]!? Expected it to be numerical", i, types[i].getType()); + switch (types[i].getType()) { + case LONG: + result[i] = ((Number) result[i]).longValue(); + break; + case DOUBLE: + result[i] = ((Number) result[i]).doubleValue(); + break; + case FLOAT: + result[i] = ((Number) result[i]).floatValue(); + break; + default: + throw new ISE("result[%s] was type[%s]!? Expected it to be numerical", i, types[i].getType()); } } } } } - assertResultsValid(filename, input.expectedResults, results); } + private void maybeDumpActualResults(List results) throws Exception + { + for (Object[] row : results) { + System.out.println(" - " + queryJackson.writeValueAsString(row)); + } + } } @Test @@ -232,16 +225,6 @@ private WindowOperatorQuery getWindowOperatorQuery(List> queries) return (WindowOperatorQuery) query; } - private void maybeDumpActualResults( - Function toStrFn, List results - ) - { - if (DUMP_ACTUAL_RESULTS) { - for (Object[] result : results) { - System.out.println(" - " + toStrFn.apply(result)); - } - } - } public static class WindowQueryTestInputClass { diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/QueryVerification.java b/sql/src/test/java/org/apache/druid/sql/calcite/QueryVerification.java index 919420b131db..ad96f35ba236 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/QueryVerification.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/QueryVerification.java @@ -28,7 +28,7 @@ public static QueryResultsVerifierFactory ofResults(QueryResultsVerifier verifie public interface QueryResultsVerifier { - void verifyResults(QueryTestRunner.QueryResults results); + void verifyResults(QueryTestRunner.QueryResults results) throws Exception; } public static class QueryResultsVerifierFactory implements QueryTestRunner.QueryVerifyStepFactory @@ -47,7 +47,12 @@ public QueryTestRunner.QueryVerifyStep make(QueryTestRunner.BaseExecuteQuery exe { return () -> { for (QueryTestRunner.QueryResults queryResults : execStep.results()) { - verifier.verifyResults(queryResults); + try { + verifier.verifyResults(queryResults); + } catch (Exception e) + { + throw new RuntimeException("Exception during verification!", e); + } } }; } From 6082df5fc23ef3290c8e0ef216ff9966513c8837 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 4 Oct 2023 11:49:27 +0000 Subject: [PATCH 013/100] cleanup/etc --- .../org/apache/druid/sql/calcite/BaseCalciteQueryTest.java | 7 ++++--- .../org/apache/druid/sql/calcite/QueryVerification.java | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index 36615d10e994..b69e928e7ffd 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -120,20 +120,21 @@ import org.junit.rules.ExpectedException; import org.junit.rules.TemporaryFolder; +import javax.annotation.Nullable; + import java.io.IOException; import java.io.PrintStream; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.function.Consumer; import java.util.stream.Collectors; -import javax.annotation.Nullable; - import static org.junit.Assert.assertEquals; /** @@ -1084,7 +1085,7 @@ public void assertResultsValid(String message, List expected, QueryRes expectedCell = NullHandling.defaultValueForType(queryResults.signature.getColumnType(i).get().getType()); } assertEquals( - String.format("column content mismatch at %d,%d", row, i), + String.format(Locale.ENGLISH, "column content mismatch at %d,%d", row, i), expectedCell, resultCell); } diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/QueryVerification.java b/sql/src/test/java/org/apache/druid/sql/calcite/QueryVerification.java index ad96f35ba236..8248c6c86065 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/QueryVerification.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/QueryVerification.java @@ -49,8 +49,8 @@ public QueryTestRunner.QueryVerifyStep make(QueryTestRunner.BaseExecuteQuery exe for (QueryTestRunner.QueryResults queryResults : execStep.results()) { try { verifier.verifyResults(queryResults); - } catch (Exception e) - { + } + catch (Exception e) { throw new RuntimeException("Exception during verification!", e); } } From 34a6aeb34f814d83dfb848dad4c811412449db6e Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 4 Oct 2023 11:58:31 +0000 Subject: [PATCH 014/100] instead of telling the story; add a fail with some reason whats the issue --- .../sql/calcite/CalciteWindowQueryTest.java | 23 ++++--------------- 1 file changed, 5 insertions(+), 18 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index cc9465adbf3e..8b532930e33f 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -52,6 +52,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import static org.junit.Assume.assumeThat; /** @@ -132,24 +133,10 @@ public void verifyResults(QueryResults results) throws Exception final OperatorFactory expectedOperator = input.expectedOperators.get(i); final OperatorFactory actualOperator = query.getOperators().get(i); if (!expectedOperator.validateEquivalent(actualOperator)) { - // This assertion always fails because the validate equivalent - // failed, but we do it anyway - // so that we get values in the output of the failed test to make it - // easier to - // debug what happened. Note, we use the Jackson representation when - // showing the diff. There is - // a chance that this representation is exactly equivalent, but the - // validation call is still failing - // this is probably indicative of a bug where something that needs - // to be serialized by Jackson - // currently is not. Check your getters. - - // prepend different values so that we are guaranteed that it is - // always different - String expected = "e " + queryJackson.writeValueAsString(expectedOperator); - String actual = "a " + queryJackson.writeValueAsString(actualOperator); - - Assert.assertEquals("Operator Mismatch, index[" + i + "]", expected, actual); + assertEquals("Operator Mismatch, index[" + i + "]", + queryJackson.writeValueAsString(expectedOperator), + queryJackson.writeValueAsString(actualOperator)); + fail("validateEquivalent failed; but textual comparision of operators didn't reported the mismatch!"); } } final RowSignature outputSignature = query.getRowSignature(); From e376ae901ca802e10253494613162c7d179b4696 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 4 Oct 2023 12:10:18 +0000 Subject: [PATCH 015/100] lead-lag fix --- .../calcite/tests/window/lead_lag.sqlTest | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/sql/src/test/resources/calcite/tests/window/lead_lag.sqlTest b/sql/src/test/resources/calcite/tests/window/lead_lag.sqlTest index 7df08f35f8d1..1ce080b08b69 100644 --- a/sql/src/test/resources/calcite/tests/window/lead_lag.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/lead_lag.sqlTest @@ -2,13 +2,6 @@ type: "operatorValidation" sql: | SELECT -<<<<<<< HEAD - dim2, - LAG(dim2,1) OVER () - FROM foo - WHERE dim2 is null or length(dim2)>0 - GROUP BY dim2 -======= dim1, LAG(dim1,2) OVER (), LAG(dim1) OVER (), @@ -19,23 +12,12 @@ sql: | FROM foo WHERE length(dim1) > 1 GROUP BY dim1 ->>>>>>> apache/master expectedOperators: - type: "naivePartition" partitionColumns: [] - type: "window" processor: -<<<<<<< HEAD - type: "offset" - inputColumn: "d0" - outputColumn: "w0" - offset: -1 -expectedResults: - - [null,null] - - ["a",null] - - ["abc","a"] -======= type: "composing" processors: - type: "offset" @@ -66,4 +48,3 @@ expectedResults: - ["10.1",null,null,"10.1","10.1","abc","def"] - ["abc",null,"10.1","abc","abc","def",null] - ["def","10.1","abc","def","def",null,null] ->>>>>>> apache/master From 1acd53b95d0ed821ed880a60ac06c936d9582ba7 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Thu, 5 Oct 2023 08:25:48 +0000 Subject: [PATCH 016/100] add test --- .../druid/common/config/NullHandlingTest.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/processing/src/test/java/org/apache/druid/common/config/NullHandlingTest.java b/processing/src/test/java/org/apache/druid/common/config/NullHandlingTest.java index db9ade70f425..a919f5b4447f 100644 --- a/processing/src/test/java/org/apache/druid/common/config/NullHandlingTest.java +++ b/processing/src/test/java/org/apache/druid/common/config/NullHandlingTest.java @@ -20,6 +20,7 @@ package org.apache.druid.common.config; import org.apache.druid.java.util.common.StringUtils; +import org.apache.druid.segment.column.ValueType; import org.apache.druid.segment.data.ListIndexed; import org.apache.druid.testing.InitializedNullHandlingTest; import org.junit.Assert; @@ -27,6 +28,8 @@ import java.util.Collections; +import static org.apache.druid.common.config.NullHandling.defaultValueForClass; +import static org.apache.druid.common.config.NullHandling.defaultValueForType; import static org.apache.druid.common.config.NullHandling.replaceWithDefault; import static org.junit.Assert.assertEquals; @@ -89,6 +92,17 @@ public void test_defaultValueForClass_object() Assert.assertNull(NullHandling.defaultValueForClass(Object.class)); } + @Test + public void test_defaultValueForType() + { + assertEquals(defaultValueForClass(Float.class), defaultValueForType(ValueType.FLOAT)); + assertEquals(defaultValueForClass(Double.class), defaultValueForType(ValueType.DOUBLE)); + assertEquals(defaultValueForClass(Long.class), defaultValueForType(ValueType.LONG)); + assertEquals(defaultValueForClass(String.class), defaultValueForType(ValueType.STRING)); + assertEquals(defaultValueForClass(Object.class), defaultValueForType(ValueType.COMPLEX)); + assertEquals(defaultValueForClass(Object.class), defaultValueForType(ValueType.ARRAY)); + } + @Test public void test_ignoreNullsStrings() { From a708ef2c31bfafafcffd80fb5e1b8edc9738c414 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Thu, 5 Oct 2023 09:24:27 +0000 Subject: [PATCH 017/100] remove unnecessary throw --- .../org/apache/druid/sql/calcite/CalciteWindowQueryTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index 8b532930e33f..43803a882634 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -88,9 +88,8 @@ public static Object parametersForWindowQueryTest() throws Exception private final String filename; - public CalciteWindowQueryTest(String filename) throws Exception + public CalciteWindowQueryTest(String filename) { - this.filename = filename; } From 8fa06644bc94e45149238053eadec5fcebeb7b28 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Thu, 5 Oct 2023 21:18:27 +0000 Subject: [PATCH 018/100] druidexception-trial --- .../apache/druid/sql/calcite/BaseCalciteQueryTest.java | 2 +- .../org/apache/druid/sql/calcite/QueryTestRunner.java | 5 +++-- .../org/apache/druid/sql/calcite/QueryVerification.java | 9 ++++++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index b69e928e7ffd..9545cfe23652 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -1104,7 +1104,7 @@ public void assertResultsEquals(String sql, List expectedResults, List Assert.assertEquals(expectedResults.size(), results.size()); } - public void testQueryThrows(final String sql, Consumer expectedExceptionInitializer) + public void testQueryThrows(final String sql, Consumer expectedExceptionInitializer) throws Exception { testBuilder() .sql(sql) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java b/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java index 963e1e0b23bc..ee0da07abc83 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java @@ -106,7 +106,7 @@ public QueryTestBuilder builder() */ public interface QueryVerifyStep { - void verify(); + void verify() throws Exception; } /** @@ -684,8 +684,9 @@ public QueryTestRunner(QueryTestBuilder builder) /** * All testQuery roads lead to this method. + * @throws Exception */ - public void run() + public void run() throws Exception { for (QueryRunStep runStep : runSteps) { runStep.run(); diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/QueryVerification.java b/sql/src/test/java/org/apache/druid/sql/calcite/QueryVerification.java index 8248c6c86065..83d817e92ee5 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/QueryVerification.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/QueryVerification.java @@ -19,6 +19,10 @@ package org.apache.druid.sql.calcite; +import org.apache.druid.error.DruidException; +import org.apache.druid.error.DruidException.Category; +import org.apache.druid.error.DruidException.Persona; + public class QueryVerification { public static QueryResultsVerifierFactory ofResults(QueryResultsVerifier verifier) @@ -51,7 +55,10 @@ public QueryTestRunner.QueryVerifyStep make(QueryTestRunner.BaseExecuteQuery exe verifier.verifyResults(queryResults); } catch (Exception e) { - throw new RuntimeException("Exception during verification!", e); + throw DruidException.forPersona(Persona.DEVELOPER) + .ofCategory(Category.UNCATEGORIZED) + .build(e, "Exception during verification!"); + // throw new RuntimeException("Exception during verification!", e); } } }; From b48460688dec9a2b61c99741d7eafdee5c7e5c44 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Thu, 5 Oct 2023 21:18:29 +0000 Subject: [PATCH 019/100] Revert "druidexception-trial" This reverts commit 8fa06644bc94e45149238053eadec5fcebeb7b28. --- .../apache/druid/sql/calcite/BaseCalciteQueryTest.java | 2 +- .../org/apache/druid/sql/calcite/QueryTestRunner.java | 5 ++--- .../org/apache/druid/sql/calcite/QueryVerification.java | 9 +-------- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index 9545cfe23652..b69e928e7ffd 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -1104,7 +1104,7 @@ public void assertResultsEquals(String sql, List expectedResults, List Assert.assertEquals(expectedResults.size(), results.size()); } - public void testQueryThrows(final String sql, Consumer expectedExceptionInitializer) throws Exception + public void testQueryThrows(final String sql, Consumer expectedExceptionInitializer) { testBuilder() .sql(sql) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java b/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java index ee0da07abc83..963e1e0b23bc 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java @@ -106,7 +106,7 @@ public QueryTestBuilder builder() */ public interface QueryVerifyStep { - void verify() throws Exception; + void verify(); } /** @@ -684,9 +684,8 @@ public QueryTestRunner(QueryTestBuilder builder) /** * All testQuery roads lead to this method. - * @throws Exception */ - public void run() throws Exception + public void run() { for (QueryRunStep runStep : runSteps) { runStep.run(); diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/QueryVerification.java b/sql/src/test/java/org/apache/druid/sql/calcite/QueryVerification.java index 83d817e92ee5..8248c6c86065 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/QueryVerification.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/QueryVerification.java @@ -19,10 +19,6 @@ package org.apache.druid.sql.calcite; -import org.apache.druid.error.DruidException; -import org.apache.druid.error.DruidException.Category; -import org.apache.druid.error.DruidException.Persona; - public class QueryVerification { public static QueryResultsVerifierFactory ofResults(QueryResultsVerifier verifier) @@ -55,10 +51,7 @@ public QueryTestRunner.QueryVerifyStep make(QueryTestRunner.BaseExecuteQuery exe verifier.verifyResults(queryResults); } catch (Exception e) { - throw DruidException.forPersona(Persona.DEVELOPER) - .ofCategory(Category.UNCATEGORIZED) - .build(e, "Exception during verification!"); - // throw new RuntimeException("Exception during verification!", e); + throw new RuntimeException("Exception during verification!", e); } } }; From 2858ff648b1d10bca58ecfbe7ef03a8d5f999e8a Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Thu, 5 Oct 2023 21:20:03 +0000 Subject: [PATCH 020/100] undo changes to no_grouping; add no_grouping2 --- .../calcite/tests/window/no_grouping.sqlTest | 25 ++++++++++-------- .../calcite/tests/window/no_grouping2.sqlTest | 26 +++++++++++++++++++ 2 files changed, 40 insertions(+), 11 deletions(-) create mode 100644 sql/src/test/resources/calcite/tests/window/no_grouping2.sqlTest diff --git a/sql/src/test/resources/calcite/tests/window/no_grouping.sqlTest b/sql/src/test/resources/calcite/tests/window/no_grouping.sqlTest index 3b2bef3e965a..7c9dae4aad39 100644 --- a/sql/src/test/resources/calcite/tests/window/no_grouping.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/no_grouping.sqlTest @@ -1,9 +1,9 @@ -type: "operatorValidation" +type: "failingTest" sql: | SELECT m1, - SUM(m1) OVER () cc + COUNT(m1) OVER () cc FROM druid.foo expectedOperators: @@ -14,13 +14,16 @@ expectedOperators: type: "framedAgg" frame: { peerType: "ROWS", lowUnbounded: true, lowOffset: 0, uppUnbounded: true, uppOffset: 0 } aggregations: - - type: "doubleSum" - name: "w0" - fieldName: "m1" + - type: "filtered" + aggregator: {"type":"count","name":"w0"} + filter: + type: not + field: {"type":"null","column":"m1"} + name: null expectedResults: - - [1.0,21.0] - - [2.0,21.0] - - [3.0,21.0] - - [4.0,21.0] - - [5.0,21.0] - - [6.0,21.0] + - [1.0,6] + - [2.0,6] + - [3.0,6] + - [4.0,6] + - [5.0,6] + - [6.0,6] diff --git a/sql/src/test/resources/calcite/tests/window/no_grouping2.sqlTest b/sql/src/test/resources/calcite/tests/window/no_grouping2.sqlTest new file mode 100644 index 000000000000..3b2bef3e965a --- /dev/null +++ b/sql/src/test/resources/calcite/tests/window/no_grouping2.sqlTest @@ -0,0 +1,26 @@ +type: "operatorValidation" + +sql: | + SELECT + m1, + SUM(m1) OVER () cc + FROM druid.foo + +expectedOperators: + - type: "naivePartition" + partitionColumns: [] + - type: "window" + processor: + type: "framedAgg" + frame: { peerType: "ROWS", lowUnbounded: true, lowOffset: 0, uppUnbounded: true, uppOffset: 0 } + aggregations: + - type: "doubleSum" + name: "w0" + fieldName: "m1" +expectedResults: + - [1.0,21.0] + - [2.0,21.0] + - [3.0,21.0] + - [4.0,21.0] + - [5.0,21.0] + - [6.0,21.0] From 9a80c89fd9c46719d8cd135c6a724633cb3241dc Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Fri, 6 Oct 2023 16:59:38 +0000 Subject: [PATCH 021/100] add missing assert on resultcount --- .../org/apache/druid/sql/calcite/BaseCalciteQueryTest.java | 5 +++-- .../org/apache/druid/sql/calcite/CalciteWindowQueryTest.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index f7dd9ef38dc2..0f83da81a73b 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -1065,10 +1065,11 @@ public Map baseQueryContext() * In case {@link NullHandling#replaceWithDefault()} an expected results of null accepts * both null and the default value for that column as actual result. */ - public void assertResultsValid(String message, List expected, QueryResults queryResults) + public void assertResultsValid(List expected, QueryResults queryResults) { List results = queryResults.results; - int numRows = Math.min(results.size(), expected.size()); + Assert.assertEquals("Result count mismatch", expected.size(), results.size()); + int numRows = results.size(); for (int row = 0; row < numRows; row++) { Object[] expectedRow = expected.get(row); Object[] resultRow = results.get(row); diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index 43803a882634..04636893af5b 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -173,7 +173,7 @@ public void verifyResults(QueryResults results) throws Exception } } } - assertResultsValid(filename, input.expectedResults, results); + assertResultsValid(input.expectedResults, results); } private void maybeDumpActualResults(List results) throws Exception From ee2b35dd5a12bf908b0eb68488c5c622b5ea0118 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 9 Oct 2023 11:12:45 +0000 Subject: [PATCH 022/100] rename method; update --- .../apache/druid/sql/calcite/BaseCalciteQueryTest.java | 4 ++-- .../apache/druid/sql/calcite/CalciteWindowQueryTest.java | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index 0f83da81a73b..f297954361e9 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -1062,10 +1062,10 @@ public Map baseQueryContext() /** * Validates the results with slight loosening in case {@link NullHandling} is not sql compatible. * - * In case {@link NullHandling#replaceWithDefault()} an expected results of null accepts + * In case {@link NullHandling#replaceWithDefault()} is true, if the expected result is null accepts * both null and the default value for that column as actual result. */ - public void assertResultsValid(List expected, QueryResults queryResults) + public void assertResultsValidRegardlessNullhandling(List expected, QueryResults queryResults) { List results = queryResults.results; Assert.assertEquals("Result count mismatch", expected.size(), results.size()); diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index 04636893af5b..975d42800191 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -173,13 +173,15 @@ public void verifyResults(QueryResults results) throws Exception } } } - assertResultsValid(input.expectedResults, results); + assertResultsValidRegardlessNullhandling(input.expectedResults, results); } private void maybeDumpActualResults(List results) throws Exception { - for (Object[] row : results) { - System.out.println(" - " + queryJackson.writeValueAsString(row)); + if(DUMP_ACTUAL_RESULTS) { + for (Object[] row : results) { + System.out.println(" - " + queryJackson.writeValueAsString(row)); + } } } } From 4e216b738e00b5f0bc207991cd6af7058bb79dff Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 9 Oct 2023 12:03:22 +0000 Subject: [PATCH 023/100] introduce enum/etc --- .../sql/calcite/BaseCalciteQueryTest.java | 57 +++++++++++++------ .../sql/calcite/CalciteArraysQueryTest.java | 4 +- .../sql/calcite/CalciteWindowQueryTest.java | 2 +- .../druid/sql/calcite/QueryTestRunner.java | 2 +- 4 files changed, 45 insertions(+), 20 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index f297954361e9..f93c9bc2858a 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -77,6 +77,7 @@ import org.apache.druid.segment.column.ColumnHolder; import org.apache.druid.segment.column.ColumnType; import org.apache.druid.segment.column.RowSignature; +import org.apache.druid.segment.column.ValueType; import org.apache.druid.segment.join.JoinType; import org.apache.druid.segment.join.JoinableFactoryWrapper; import org.apache.druid.segment.virtual.ExpressionVirtualColumn; @@ -124,6 +125,7 @@ import java.io.IOException; import java.io.PrintStream; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; @@ -1059,16 +1061,40 @@ public Map baseQueryContext() } } + enum ResultMatchMode { + EQUALS, + RELAX_NULLS; + + void validate(int row, int column, ValueType type, Object expectedCell, Object resultCell) { + if (this == RELAX_NULLS && expectedCell == null) { + if (resultCell == null) { + return; + } + expectedCell = NullHandling.defaultValueForType(type); + } + assertEquals( + String.format(Locale.ENGLISH, "column content mismatch at %d,%d", row, column), + expectedCell, + resultCell); + } + } + /** * Validates the results with slight loosening in case {@link NullHandling} is not sql compatible. * - * In case {@link NullHandling#replaceWithDefault()} is true, if the expected result is null accepts + * In case {@link NullHandling#replaceWithDefault()} is true, if the expected result is null it accepts * both null and the default value for that column as actual result. */ - public void assertResultsValidRegardlessNullhandling(List expected, QueryResults queryResults) + public void assertResultsValid(ResultMatchMode matchMode, List expected, QueryResults queryResults) { List results = queryResults.results; Assert.assertEquals("Result count mismatch", expected.size(), results.size()); + + List types = new ArrayList<>(); + for (int i = 0; i < queryResults.signature.getColumnNames().size(); i++) { + types.add(queryResults.signature.getColumnType(i).get().getType()); + } + int numRows = results.size(); for (int row = 0; row < numRows; row++) { Object[] expectedRow = expected.get(row); @@ -1079,16 +1105,14 @@ public void assertResultsValidRegardlessNullhandling(List expected, Qu Object resultCell = resultRow[i]; Object expectedCell = expectedRow[i]; - if (expectedCell == null) { - if (resultCell == null) { - continue; - } - expectedCell = NullHandling.defaultValueForType(queryResults.signature.getColumnType(i).get().getType()); - } - assertEquals( - String.format(Locale.ENGLISH, "column content mismatch at %d,%d", row, i), + ResultMatchMode cellValidator = matchMode; + cellValidator.validate( + row, + i, + types.get(i), expectedCell, - resultCell); + resultCell + ); } } } @@ -1368,7 +1392,7 @@ default void verifyRowSignature(RowSignature rowSignature) // do nothing } - void verify(String sql, List results); + void verify(String sql, QueryResults queryResults); } private ResultsVerifier defaultResultsVerifier( @@ -1400,17 +1424,18 @@ public void verifyRowSignature(RowSignature rowSignature) } @Override - public void verify(String sql, List results) + public void verify(String sql, QueryResults queryResults) { try { - Assert.assertEquals(StringUtils.format("result count: %s", sql), expectedResults.size(), results.size()); - assertResultsEquals(sql, expectedResults, results); + assertResultsValid(ResultMatchMode.EQUALS, expectedResults, queryResults); } catch (AssertionError e) { - displayResults(results); + System.out.println("sql: "+sql); + displayResults(queryResults.results); throw e; } } + } /** diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteArraysQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteArraysQueryTest.java index e6a669b9c28b..3688726b2ff4 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteArraysQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteArraysQueryTest.java @@ -1840,7 +1840,7 @@ public void testArrayAggArrays() .context(QUERY_CONTEXT_NO_STRINGIFY_ARRAY) .build() ), - (sql, results) -> { + (sql, queryResults) -> { // ordering is not stable in array_agg and array_concat_agg List expected = ImmutableList.of( useDefault ? @@ -1877,7 +1877,7 @@ public void testArrayAggArrays() ) } ); - assertResultsDeepEquals(sql, expected, results); + assertResultsDeepEquals(sql, expected, queryResults.results); } ); } diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index 975d42800191..5626d23dd7c2 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -173,7 +173,7 @@ public void verifyResults(QueryResults results) throws Exception } } } - assertResultsValidRegardlessNullhandling(input.expectedResults, results); + assertResultsValid(ResultMatchMode.RELAX_NULLS, input.expectedResults, results); } private void maybeDumpActualResults(List results) throws Exception diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java b/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java index f9d82e71dd7e..7b91813437fe 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java @@ -354,7 +354,7 @@ private void verifyResults(QueryResults queryResults) if (verifyRowSignature) { builder.expectedResultsVerifier.verifyRowSignature(queryResults.signature); } - builder.expectedResultsVerifier.verify(builder.sql, results); + builder.expectedResultsVerifier.verify(builder.sql, queryResults); } } From 5d0fcc022a9e99a2fb0c87cbcf6d92adefb4d242 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 9 Oct 2023 13:15:22 +0000 Subject: [PATCH 024/100] make resultmatchmode accessible from TestBuilder#expectedResults --- .../sql/calcite/BaseCalciteQueryTest.java | 30 ++++++++++++------- .../calcite/CalciteNestedDataQueryTest.java | 3 +- .../sql/calcite/CalciteWindowQueryTest.java | 2 +- .../druid/sql/calcite/QueryTestBuilder.java | 13 +++++++- .../druid/sql/calcite/QueryTestRunner.java | 1 + 5 files changed, 36 insertions(+), 13 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index f93c9bc2858a..1caae11e9750 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -1039,11 +1039,13 @@ public ObjectMapper jsonMapper() @Override public ResultsVerifier defaultResultsVerifier( List expectedResults, + ResultMatchMode expectedResultMatchMode, RowSignature expectedResultSignature ) { return BaseCalciteQueryTest.this.defaultResultsVerifier( expectedResults, + expectedResultMatchMode, expectedResultSignature ); } @@ -1061,11 +1063,12 @@ public Map baseQueryContext() } } - enum ResultMatchMode { - EQUALS, - RELAX_NULLS; + enum ResultMatchMode + { + EQUALS, RELAX_NULLS; - void validate(int row, int column, ValueType type, Object expectedCell, Object resultCell) { + void validate(int row, int column, ValueType type, Object expectedCell, Object resultCell) + { if (this == RELAX_NULLS && expectedCell == null) { if (resultCell == null) { return; @@ -1111,8 +1114,7 @@ public void assertResultsValid(ResultMatchMode matchMode, List expecte i, types.get(i), expectedCell, - resultCell - ); + resultCell); } } } @@ -1397,10 +1399,11 @@ default void verifyRowSignature(RowSignature rowSignature) private ResultsVerifier defaultResultsVerifier( final List expectedResults, + ResultMatchMode expectedResultMatchMode, final RowSignature expectedSignature ) { - return new DefaultResultsVerifier(expectedResults, expectedSignature); + return new DefaultResultsVerifier(expectedResults, expectedResultMatchMode, expectedSignature); } public class DefaultResultsVerifier implements ResultsVerifier @@ -1408,13 +1411,20 @@ public class DefaultResultsVerifier implements ResultsVerifier protected final List expectedResults; @Nullable protected final RowSignature expectedResultRowSignature; + protected final ResultMatchMode expectedResultMatchMode; - public DefaultResultsVerifier(List expectedResults, RowSignature expectedSignature) + public DefaultResultsVerifier(List expectedResults, ResultMatchMode expectedResultMatchMode, RowSignature expectedSignature) { this.expectedResults = expectedResults; + this.expectedResultMatchMode = expectedResultMatchMode; this.expectedResultRowSignature = expectedSignature; } + public DefaultResultsVerifier(List expectedResults, RowSignature expectedSignature) + { + this(expectedResults, ResultMatchMode.EQUALS, expectedSignature); + } + @Override public void verifyRowSignature(RowSignature rowSignature) { @@ -1427,10 +1437,10 @@ public void verifyRowSignature(RowSignature rowSignature) public void verify(String sql, QueryResults queryResults) { try { - assertResultsValid(ResultMatchMode.EQUALS, expectedResults, queryResults); + assertResultsValid(expectedResultMatchMode, expectedResults, queryResults); } catch (AssertionError e) { - System.out.println("sql: "+sql); + System.out.println("sql: " + sql); displayResults(queryResults.results); throw e; } diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteNestedDataQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteNestedDataQueryTest.java index 5098343b5389..315d6da4fd91 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteNestedDataQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteNestedDataQueryTest.java @@ -2292,8 +2292,9 @@ public void testGroupByRootSingleTypeArrayDoubleElement() ) ) .expectedResults( + ResultMatchMode.RELAX_NULLS, ImmutableList.of( - new Object[]{NullHandling.defaultDoubleValue(), 12L}, + new Object[]{null, 12L}, new Object[]{5.5, 2L} ) ) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index 5626d23dd7c2..ce5c3c90d019 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -178,7 +178,7 @@ public void verifyResults(QueryResults results) throws Exception private void maybeDumpActualResults(List results) throws Exception { - if(DUMP_ACTUAL_RESULTS) { + if (DUMP_ACTUAL_RESULTS) { for (Object[] row : results) { System.out.println(" - " + queryJackson.writeValueAsString(row)); } diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestBuilder.java b/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestBuilder.java index d5e20043adc2..bb76488ccc40 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestBuilder.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestBuilder.java @@ -27,6 +27,7 @@ import org.apache.druid.server.security.AuthenticationResult; import org.apache.druid.server.security.ResourceAction; import org.apache.druid.sql.SqlStatementFactory; +import org.apache.druid.sql.calcite.BaseCalciteQueryTest.ResultMatchMode; import org.apache.druid.sql.calcite.BaseCalciteQueryTest.ResultsVerifier; import org.apache.druid.sql.calcite.QueryTestRunner.QueryResults; import org.apache.druid.sql.calcite.planner.PlannerConfig; @@ -77,7 +78,7 @@ public interface QueryTestConfig ObjectMapper jsonMapper(); PlannerFixture plannerFixture(PlannerConfig plannerConfig, AuthConfig authConfig); - ResultsVerifier defaultResultsVerifier(List expectedResults, RowSignature expectedResultSignature); + ResultsVerifier defaultResultsVerifier(List expectedResults, ResultMatchMode expectedResultMatchMode, RowSignature expectedResultSignature); boolean isRunningMSQ(); @@ -107,6 +108,7 @@ public interface QueryTestConfig protected PlannerFixture plannerFixture; protected String expectedLogicalPlan; protected SqlSchema expectedSqlSchema; + protected ResultMatchMode expectedResultMatchMode; public QueryTestBuilder(final QueryTestConfig config) { @@ -167,6 +169,15 @@ public QueryTestBuilder expectedResults( final List expectedResults ) { + return expectedResults(ResultMatchMode.EQUALS, expectedResults); + } + + public QueryTestBuilder expectedResults( + ResultMatchMode expecteMatchMode, + final List expectedResults + ) + { + this.expectedResultMatchMode = expecteMatchMode; this.expectedResults = expectedResults; return this; } diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java b/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java index 7b91813437fe..0bd1f1305eb9 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java @@ -631,6 +631,7 @@ public QueryTestRunner(QueryTestBuilder builder) if (builder.expectedResultsVerifier == null && builder.expectedResults != null) { builder.expectedResultsVerifier = config.defaultResultsVerifier( builder.expectedResults, + builder.expectedResultMatchMode, builder.expectedResultSignature ); } From 0ddd3be64722dcf6fa29637aebb73bab031b1cf5 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 9 Oct 2023 13:18:16 +0000 Subject: [PATCH 025/100] fix dump results to use log --- .../org/apache/druid/sql/calcite/CalciteWindowQueryTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index ce5c3c90d019..e58ee2c7663f 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -179,9 +179,11 @@ public void verifyResults(QueryResults results) throws Exception private void maybeDumpActualResults(List results) throws Exception { if (DUMP_ACTUAL_RESULTS) { + StringBuilder sb = new StringBuilder(); for (Object[] row : results) { - System.out.println(" - " + queryJackson.writeValueAsString(row)); + sb.append(" - " + queryJackson.writeValueAsString(row) + "\n"); } + log.info("Actual results:\n%s", sb.toString()); } } } From edea1527db29ee4ee35c5bdbcc0a201d4fbb7193 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 10 Oct 2023 09:20:39 +0000 Subject: [PATCH 026/100] fix --- .../org/apache/druid/sql/calcite/DrillWindowQueryTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java index 1fcc46c530a4..515faa4e587f 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java @@ -51,6 +51,7 @@ import org.apache.druid.segment.writeout.OnHeapMemorySegmentWriteOutMediumFactory; import org.apache.druid.sql.calcite.NotYetSupported.Modes; import org.apache.druid.sql.calcite.NotYetSupported.NotYetSupportedProcessor; +import org.apache.druid.sql.calcite.QueryTestRunner.QueryResults; import org.apache.druid.sql.calcite.planner.PlannerContext; import org.apache.druid.sql.calcite.util.SpecificSegmentsQuerySegmentWalker; import org.apache.druid.timeline.DataSegment; @@ -356,8 +357,9 @@ public void verifyRowSignature(RowSignature rowSignature) } @Override - public void verify(String sql, List results) + public void verify(String sql, QueryResults queryResults) { + List results = queryResults.results; List expectedResults = parseResults(currentRowSignature, expectedResultsText); try { Assert.assertEquals(StringUtils.format("result count: %s", sql), expectedResultsText.size(), results.size()); From de099c6187f45b027ae7a98ca4521687c453f444 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 10 Oct 2023 09:33:18 +0000 Subject: [PATCH 027/100] handle null correctly --- .../apache/druid/sql/calcite/BaseCalciteQueryTest.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index f923cec7f80b..b24780e01f70 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -132,6 +132,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.Optional; import java.util.Properties; import java.util.Set; import java.util.function.Consumer; @@ -1095,7 +1096,12 @@ public void assertResultsValid(ResultMatchMode matchMode, List expecte List types = new ArrayList<>(); for (int i = 0; i < queryResults.signature.getColumnNames().size(); i++) { - types.add(queryResults.signature.getColumnType(i).get().getType()); + Optional columnType = queryResults.signature.getColumnType(i); + if (columnType.isPresent()) { + types.add(columnType.get().getType()); + } else { + types.add(null); + } } int numRows = results.size(); From 5834150c86feb7d8f6f673373370397a3419796f Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 10 Oct 2023 10:26:35 +0000 Subject: [PATCH 028/100] fix virtualcolumnregistry --- .../java/org/apache/druid/sql/calcite/rel/Windowing.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java index 4039ca8914ab..555ff3bc2dbe 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java @@ -172,10 +172,16 @@ public static Windowing fromCalciteStuff( ProcessorMaker maker = KNOWN_WINDOW_FNS.get(aggregateCall.getAggregation().getName()); if (maker == null) { + VirtualColumnRegistry virtualColumnRegistry = VirtualColumnRegistry.create( + sourceRowSignature, + plannerContext.getExpressionParser(), + plannerContext.getPlannerConfig().isForceExpressionVirtualColumns() + ); + final Aggregation aggregation = GroupByRules.translateAggregateCall( plannerContext, sourceRowSignature, - null, + virtualColumnRegistry, rexBuilder, InputAccessor.buildFor( rexBuilder, From 6e80c832a0fa30953a57b435a5309d87ccd713b9 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 10 Oct 2023 10:31:09 +0000 Subject: [PATCH 029/100] accept changes from NPE to AGGREGATION_NOT_SUPPORT_TYPE --- .../sql/calcite/DrillWindowQueryTest.java | 66 +++++++++---------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java index 1fcc46c530a4..c2b1fb301d9c 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java @@ -4695,7 +4695,7 @@ public void test_ntile_func_ntileFn_58() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("aggregates/winFnQry_12") @Test public void test_aggregates_winFnQry_12() @@ -4703,7 +4703,7 @@ public void test_aggregates_winFnQry_12() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("aggregates/winFnQry_13") @Test public void test_aggregates_winFnQry_13() @@ -4711,7 +4711,7 @@ public void test_aggregates_winFnQry_13() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("aggregates/winFnQry_20") @Test public void test_aggregates_winFnQry_20() @@ -4719,7 +4719,7 @@ public void test_aggregates_winFnQry_20() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("aggregates/winFnQry_21") @Test public void test_aggregates_winFnQry_21() @@ -4735,7 +4735,7 @@ public void test_first_val_firstValFn_5() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/defaultFrame/RBUPACR_chr_1") @Test public void test_frameclause_defaultFrame_RBUPACR_chr_1() @@ -4743,7 +4743,7 @@ public void test_frameclause_defaultFrame_RBUPACR_chr_1() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/defaultFrame/RBUPACR_chr_2") @Test public void test_frameclause_defaultFrame_RBUPACR_chr_2() @@ -4751,7 +4751,7 @@ public void test_frameclause_defaultFrame_RBUPACR_chr_2() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/defaultFrame/RBUPACR_vchr_1") @Test public void test_frameclause_defaultFrame_RBUPACR_vchr_1() @@ -4759,7 +4759,7 @@ public void test_frameclause_defaultFrame_RBUPACR_vchr_1() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/defaultFrame/RBUPACR_vchr_2") @Test public void test_frameclause_defaultFrame_RBUPACR_vchr_2() @@ -4767,7 +4767,7 @@ public void test_frameclause_defaultFrame_RBUPACR_vchr_2() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/multipl_wnwds/max_mulwds") @Test public void test_frameclause_multipl_wnwds_max_mulwds() @@ -4775,7 +4775,7 @@ public void test_frameclause_multipl_wnwds_max_mulwds() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/multipl_wnwds/min_mulwds") @Test public void test_frameclause_multipl_wnwds_min_mulwds() @@ -4783,7 +4783,7 @@ public void test_frameclause_multipl_wnwds_min_mulwds() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/RBCRACR/RBCRACR_char_1") @Test public void test_frameclause_RBCRACR_RBCRACR_char_1() @@ -4791,7 +4791,7 @@ public void test_frameclause_RBCRACR_RBCRACR_char_1() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/RBCRACR/RBCRACR_char_2") @Test public void test_frameclause_RBCRACR_RBCRACR_char_2() @@ -4799,7 +4799,7 @@ public void test_frameclause_RBCRACR_RBCRACR_char_2() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/RBCRACR/RBCRACR_vchar_1") @Test public void test_frameclause_RBCRACR_RBCRACR_vchar_1() @@ -4807,7 +4807,7 @@ public void test_frameclause_RBCRACR_RBCRACR_vchar_1() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/RBCRACR/RBCRACR_vchar_2") @Test public void test_frameclause_RBCRACR_RBCRACR_vchar_2() @@ -4815,7 +4815,7 @@ public void test_frameclause_RBCRACR_RBCRACR_vchar_2() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/RBUPACR/RBUPACR_chr_1") @Test public void test_frameclause_RBUPACR_RBUPACR_chr_1() @@ -4823,7 +4823,7 @@ public void test_frameclause_RBUPACR_RBUPACR_chr_1() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/RBUPACR/RBUPACR_chr_2") @Test public void test_frameclause_RBUPACR_RBUPACR_chr_2() @@ -4831,7 +4831,7 @@ public void test_frameclause_RBUPACR_RBUPACR_chr_2() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/RBUPACR/RBUPACR_vchr_1") @Test public void test_frameclause_RBUPACR_RBUPACR_vchr_1() @@ -4839,7 +4839,7 @@ public void test_frameclause_RBUPACR_RBUPACR_vchr_1() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/RBUPACR/RBUPACR_vchr_2") @Test public void test_frameclause_RBUPACR_RBUPACR_vchr_2() @@ -4847,7 +4847,7 @@ public void test_frameclause_RBUPACR_RBUPACR_vchr_2() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/RBUPAUF/RBUPAUF_char_1") @Test public void test_frameclause_RBUPAUF_RBUPAUF_char_1() @@ -4855,7 +4855,7 @@ public void test_frameclause_RBUPAUF_RBUPAUF_char_1() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/RBUPAUF/RBUPAUF_char_2") @Test public void test_frameclause_RBUPAUF_RBUPAUF_char_2() @@ -4863,7 +4863,7 @@ public void test_frameclause_RBUPAUF_RBUPAUF_char_2() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/RBUPAUF/RBUPAUF_vchar_1") @Test public void test_frameclause_RBUPAUF_RBUPAUF_vchar_1() @@ -4871,7 +4871,7 @@ public void test_frameclause_RBUPAUF_RBUPAUF_vchar_1() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/RBUPAUF/RBUPAUF_vchar_2") @Test public void test_frameclause_RBUPAUF_RBUPAUF_vchar_2() @@ -4879,7 +4879,7 @@ public void test_frameclause_RBUPAUF_RBUPAUF_vchar_2() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/subQueries/frmInSubQry_22") @Test public void test_frameclause_subQueries_frmInSubQry_22() @@ -4887,7 +4887,7 @@ public void test_frameclause_subQueries_frmInSubQry_22() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/subQueries/frmInSubQry_23") @Test public void test_frameclause_subQueries_frmInSubQry_23() @@ -4895,7 +4895,7 @@ public void test_frameclause_subQueries_frmInSubQry_23() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/subQueries/frmInSubQry_24") @Test public void test_frameclause_subQueries_frmInSubQry_24() @@ -4903,7 +4903,7 @@ public void test_frameclause_subQueries_frmInSubQry_24() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/subQueries/frmInSubQry_41") @Test public void test_frameclause_subQueries_frmInSubQry_41() @@ -4911,7 +4911,7 @@ public void test_frameclause_subQueries_frmInSubQry_41() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/subQueries/frmInSubQry_42") @Test public void test_frameclause_subQueries_frmInSubQry_42() @@ -4919,7 +4919,7 @@ public void test_frameclause_subQueries_frmInSubQry_42() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/subQueries/frmInSubQry_43") @Test public void test_frameclause_subQueries_frmInSubQry_43() @@ -4927,7 +4927,7 @@ public void test_frameclause_subQueries_frmInSubQry_43() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/subQueries/frmInSubQry_44") @Test public void test_frameclause_subQueries_frmInSubQry_44() @@ -4935,7 +4935,7 @@ public void test_frameclause_subQueries_frmInSubQry_44() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/subQueries/frmInSubQry_45") @Test public void test_frameclause_subQueries_frmInSubQry_45() @@ -4943,7 +4943,7 @@ public void test_frameclause_subQueries_frmInSubQry_45() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("frameclause/subQueries/frmInSubQry_46") @Test public void test_frameclause_subQueries_frmInSubQry_46() @@ -4967,7 +4967,7 @@ public void test_last_val_lastValFn_5() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("nestedAggs/basic_10") @Test public void test_nestedAggs_basic_10() @@ -4975,7 +4975,7 @@ public void test_nestedAggs_basic_10() windowQueryTest(); } - @NotYetSupported(Modes.NPE) + @NotYetSupported(Modes.AGGREGATION_NOT_SUPPORT_TYPE) @DrillTest("nestedAggs/cte_win_01") @Test public void test_nestedAggs_cte_win_01() From 08d21d08f39a1d6e259ad1e212626e09baf7f87d Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 10 Oct 2023 10:33:20 +0000 Subject: [PATCH 030/100] better match --- .../test/java/org/apache/druid/sql/calcite/NotYetSupported.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/NotYetSupported.java b/sql/src/test/java/org/apache/druid/sql/calcite/NotYetSupported.java index 32364f6a8b19..a8634ba5db94 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/NotYetSupported.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/NotYetSupported.java @@ -79,7 +79,7 @@ enum Modes BIGINT_TO_DATE(DruidException.class, "BIGINT to type (DATE|TIME)"), NPE_PLAIN(NullPointerException.class, "java.lang.NullPointerException"), NPE(DruidException.class, "java.lang.NullPointerException"), - AGGREGATION_NOT_SUPPORT_TYPE(DruidException.class, "Aggregation \\[(MIN|MAX)\\] does not support type"), + AGGREGATION_NOT_SUPPORT_TYPE(DruidException.class, "Aggregation \\[(MIN|MAX)\\] does not support type \\[STRING\\]"), CANNOT_APPLY_VIRTUAL_COL(UOE.class, "apply virtual columns"), MISSING_DESC(DruidException.class, "function signature DESC"), RESULT_COUNT_MISMATCH(AssertionError.class, "result count:"), From 8b52be7168096ce169547b93f49f7b9dae4b5af2 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 10 Oct 2023 10:35:11 +0000 Subject: [PATCH 031/100] indent --- .../java/org/apache/druid/sql/calcite/rel/Windowing.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java index 555ff3bc2dbe..9a414015c0f5 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java @@ -172,11 +172,10 @@ public static Windowing fromCalciteStuff( ProcessorMaker maker = KNOWN_WINDOW_FNS.get(aggregateCall.getAggregation().getName()); if (maker == null) { - VirtualColumnRegistry virtualColumnRegistry = VirtualColumnRegistry.create( - sourceRowSignature, - plannerContext.getExpressionParser(), - plannerContext.getPlannerConfig().isForceExpressionVirtualColumns() - ); + VirtualColumnRegistry virtualColumnRegistry = VirtualColumnRegistry.create( + sourceRowSignature, + plannerContext.getExpressionParser(), + plannerContext.getPlannerConfig().isForceExpressionVirtualColumns()); final Aggregation aggregation = GroupByRules.translateAggregateCall( plannerContext, From 03699764509fbefbfca7f64bafded43eb575876b Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 10 Oct 2023 11:49:37 +0000 Subject: [PATCH 032/100] try nullx --- pom.xml | 2 +- .../aggregation/builtin/SimpleSqlAggregator.java | 10 +++++++++- .../org/apache/druid/sql/calcite/rel/Windowing.java | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 6be27033ff92..3dcde2a3a964 100644 --- a/pom.xml +++ b/pom.xml @@ -1909,7 +1909,7 @@ false -XDcompilePolicy=simple - -Xplugin:ErrorProne -XepExcludedPaths:.*/target/generated-(test-)?sources/.* -XepDisableWarningsInGeneratedCode -Xep:ClassCanBeStatic:ERROR -Xep:PreconditionsInvalidPlaceholder:ERROR -Xep:MissingOverride:ERROR -Xep:DefaultCharset:ERROR -Xep:QualifierOrScopeOnInjectMethod:ERROR -Xep:AssistedInjectAndInjectOnSameConstructor -Xep:AutoFactoryAtInject -Xep:ClassName -Xep:ComparisonContractViolated -Xep:DepAnn -Xep:EmptyIf -Xep:InjectInvalidTargetingOnScopingAnnotation -Xep:InjectMoreThanOneQualifier -Xep:InjectScopeAnnotationOnInterfaceOrAbstractClass -Xep:InjectScopeOrQualifierAnnotationRetention -Xep:InjectedConstructorAnnotations -Xep:InsecureCryptoUsage -Xep:JavaxInjectOnFinalField -Xep:LongLiteralLowerCaseSuffix -Xep:NoAllocation -Xep:NonRuntimeAnnotation -Xep:NumericEquality -Xep:ProtoStringFieldReferenceEquality + -Xplugin:ErrorProne -XepExcludedPaths:.*/target/generated-(test-)?sources/.* -XepDisableWarningsInGeneratedCode -Xep:ClassCanBeStatic:ERROR -Xep:PreconditionsInvalidPlaceholder:ERROR -Xep:MissingOverride:ERROR -Xep:DefaultCharset:ERROR -Xep:QualifierOrScopeOnInjectMethod:ERROR -Xep:AssistedInjectAndInjectOnSameConstructor -Xep:AutoFactoryAtInject -Xep:ClassName -Xep:ComparisonContractViolated -Xep:DepAnn -Xep:EmptyIf -Xep:InjectInvalidTargetingOnScopingAnnotation -Xep:InjectMoreThanOneQualifier -Xep:InjectScopeAnnotationOnInterfaceOrAbstractClass -Xep:InjectScopeOrQualifierAnnotationRetention -Xep:InjectedConstructorAnnotations -Xep:InsecureCryptoUsage -Xep:JavaxInjectOnFinalField -Xep:LongLiteralLowerCaseSuffix -Xep:NoAllocation -Xep:NonRuntimeAnnotation -Xep:NumericEquality -Xep:ProtoStringFieldReferenceEquality -Xep:NullOptional -Xep:NullableOptional -Xep:NullablePrimitive -Xep:ToStringReturnsNull -Xep:EqualsBrokenForNull -J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED -J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/SimpleSqlAggregator.java b/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/SimpleSqlAggregator.java index 5da064c285d5..ec903868524b 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/SimpleSqlAggregator.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/SimpleSqlAggregator.java @@ -20,6 +20,8 @@ package org.apache.druid.sql.calcite.aggregation.builtin; import com.google.common.collect.Iterables; +import com.google.errorprone.annotations.FormatMethod; +import com.google.errorprone.annotations.FormatString; import org.apache.calcite.rel.core.AggregateCall; import org.apache.druid.error.DruidException; import org.apache.druid.error.InvalidSqlInput; @@ -46,8 +48,14 @@ */ public abstract class SimpleSqlAggregator implements SqlAggregator { + @FormatMethod + public static void asd(@FormatString String fmt, Object... asd) + { + } + public static DruidException badTypeException(String columnName, String agg, ColumnType type) { + asd(columnName); return InvalidSqlInput.exception("Aggregation [%s] does not support type [%s], column [%s]", agg, type, columnName); } @@ -55,7 +63,7 @@ public static DruidException badTypeException(String columnName, String agg, Col @Override public Aggregation toDruidAggregation( final PlannerContext plannerContext, - final VirtualColumnRegistry virtualColumnRegistry, + @Nullable final VirtualColumnRegistry virtualColumnRegistry, final String name, final AggregateCall aggregateCall, final InputAccessor inputAccessor, diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java index 9a414015c0f5..7aa032c57cc6 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java @@ -176,7 +176,7 @@ public static Windowing fromCalciteStuff( sourceRowSignature, plannerContext.getExpressionParser(), plannerContext.getPlannerConfig().isForceExpressionVirtualColumns()); - + virtualColumnRegistry = null; final Aggregation aggregation = GroupByRules.translateAggregateCall( plannerContext, sourceRowSignature, From 8b509239a791c5708ce345d0270fe25af658c5ac Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 10 Oct 2023 11:49:41 +0000 Subject: [PATCH 033/100] Revert "try nullx" This reverts commit 03699764509fbefbfca7f64bafded43eb575876b. --- pom.xml | 2 +- .../aggregation/builtin/SimpleSqlAggregator.java | 10 +--------- .../org/apache/druid/sql/calcite/rel/Windowing.java | 2 +- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index 3dcde2a3a964..6be27033ff92 100644 --- a/pom.xml +++ b/pom.xml @@ -1909,7 +1909,7 @@ false -XDcompilePolicy=simple - -Xplugin:ErrorProne -XepExcludedPaths:.*/target/generated-(test-)?sources/.* -XepDisableWarningsInGeneratedCode -Xep:ClassCanBeStatic:ERROR -Xep:PreconditionsInvalidPlaceholder:ERROR -Xep:MissingOverride:ERROR -Xep:DefaultCharset:ERROR -Xep:QualifierOrScopeOnInjectMethod:ERROR -Xep:AssistedInjectAndInjectOnSameConstructor -Xep:AutoFactoryAtInject -Xep:ClassName -Xep:ComparisonContractViolated -Xep:DepAnn -Xep:EmptyIf -Xep:InjectInvalidTargetingOnScopingAnnotation -Xep:InjectMoreThanOneQualifier -Xep:InjectScopeAnnotationOnInterfaceOrAbstractClass -Xep:InjectScopeOrQualifierAnnotationRetention -Xep:InjectedConstructorAnnotations -Xep:InsecureCryptoUsage -Xep:JavaxInjectOnFinalField -Xep:LongLiteralLowerCaseSuffix -Xep:NoAllocation -Xep:NonRuntimeAnnotation -Xep:NumericEquality -Xep:ProtoStringFieldReferenceEquality -Xep:NullOptional -Xep:NullableOptional -Xep:NullablePrimitive -Xep:ToStringReturnsNull -Xep:EqualsBrokenForNull + -Xplugin:ErrorProne -XepExcludedPaths:.*/target/generated-(test-)?sources/.* -XepDisableWarningsInGeneratedCode -Xep:ClassCanBeStatic:ERROR -Xep:PreconditionsInvalidPlaceholder:ERROR -Xep:MissingOverride:ERROR -Xep:DefaultCharset:ERROR -Xep:QualifierOrScopeOnInjectMethod:ERROR -Xep:AssistedInjectAndInjectOnSameConstructor -Xep:AutoFactoryAtInject -Xep:ClassName -Xep:ComparisonContractViolated -Xep:DepAnn -Xep:EmptyIf -Xep:InjectInvalidTargetingOnScopingAnnotation -Xep:InjectMoreThanOneQualifier -Xep:InjectScopeAnnotationOnInterfaceOrAbstractClass -Xep:InjectScopeOrQualifierAnnotationRetention -Xep:InjectedConstructorAnnotations -Xep:InsecureCryptoUsage -Xep:JavaxInjectOnFinalField -Xep:LongLiteralLowerCaseSuffix -Xep:NoAllocation -Xep:NonRuntimeAnnotation -Xep:NumericEquality -Xep:ProtoStringFieldReferenceEquality -J--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED -J--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/SimpleSqlAggregator.java b/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/SimpleSqlAggregator.java index ec903868524b..5da064c285d5 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/SimpleSqlAggregator.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/aggregation/builtin/SimpleSqlAggregator.java @@ -20,8 +20,6 @@ package org.apache.druid.sql.calcite.aggregation.builtin; import com.google.common.collect.Iterables; -import com.google.errorprone.annotations.FormatMethod; -import com.google.errorprone.annotations.FormatString; import org.apache.calcite.rel.core.AggregateCall; import org.apache.druid.error.DruidException; import org.apache.druid.error.InvalidSqlInput; @@ -48,14 +46,8 @@ */ public abstract class SimpleSqlAggregator implements SqlAggregator { - @FormatMethod - public static void asd(@FormatString String fmt, Object... asd) - { - } - public static DruidException badTypeException(String columnName, String agg, ColumnType type) { - asd(columnName); return InvalidSqlInput.exception("Aggregation [%s] does not support type [%s], column [%s]", agg, type, columnName); } @@ -63,7 +55,7 @@ public static DruidException badTypeException(String columnName, String agg, Col @Override public Aggregation toDruidAggregation( final PlannerContext plannerContext, - @Nullable final VirtualColumnRegistry virtualColumnRegistry, + final VirtualColumnRegistry virtualColumnRegistry, final String name, final AggregateCall aggregateCall, final InputAccessor inputAccessor, diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java index 7aa032c57cc6..9a414015c0f5 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java @@ -176,7 +176,7 @@ public static Windowing fromCalciteStuff( sourceRowSignature, plannerContext.getExpressionParser(), plannerContext.getPlannerConfig().isForceExpressionVirtualColumns()); - virtualColumnRegistry = null; + final Aggregation aggregation = GroupByRules.translateAggregateCall( plannerContext, sourceRowSignature, From a4cb14aab4dfe36a202b79a8380e99a8a93d4a28 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 10 Oct 2023 13:47:34 +0000 Subject: [PATCH 034/100] fixes/test/etc --- .../LazilyDecoratedRowsAndColumns.java | 8 ++++-- .../DefaultColumnSelectorFactoryMaker.java | 11 +++++--- .../calcite/tests/window/simpleSum.sqlTest | 24 ++++++++--------- .../tests/window/virtualColumns.sqlTest | 26 +++++++++++++++++++ 4 files changed, 52 insertions(+), 17 deletions(-) create mode 100644 sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest diff --git a/processing/src/main/java/org/apache/druid/query/rowsandcols/LazilyDecoratedRowsAndColumns.java b/processing/src/main/java/org/apache/druid/query/rowsandcols/LazilyDecoratedRowsAndColumns.java index 4a62106a557c..e383ea6c2408 100644 --- a/processing/src/main/java/org/apache/druid/query/rowsandcols/LazilyDecoratedRowsAndColumns.java +++ b/processing/src/main/java/org/apache/druid/query/rowsandcols/LazilyDecoratedRowsAndColumns.java @@ -115,7 +115,6 @@ public Column findColumn(String name) if (viewableColumns != null && !viewableColumns.contains(name)) { return null; } - maybeMaterialize(); return base.findColumn(name); } @@ -158,7 +157,7 @@ public WireTransferable toWireTransferable() private void maybeMaterialize() { - if (!(interval == null && filter == null && limit == -1 && ordering == null)) { + if (needsMaterialization()) { final Pair thePair = materialize(); if (thePair == null) { reset(new EmptyRowsAndColumns()); @@ -168,6 +167,11 @@ private void maybeMaterialize() } } + private boolean needsMaterialization() + { + return interval != null || filter != null || limit != -1 || ordering != null || virtualColumns != null; + } + private Pair materialize() { if (ordering != null) { diff --git a/processing/src/main/java/org/apache/druid/query/rowsandcols/semantic/DefaultColumnSelectorFactoryMaker.java b/processing/src/main/java/org/apache/druid/query/rowsandcols/semantic/DefaultColumnSelectorFactoryMaker.java index a8f3570b9ad6..7bf6bc3bde31 100644 --- a/processing/src/main/java/org/apache/druid/query/rowsandcols/semantic/DefaultColumnSelectorFactoryMaker.java +++ b/processing/src/main/java/org/apache/druid/query/rowsandcols/semantic/DefaultColumnSelectorFactoryMaker.java @@ -160,12 +160,17 @@ public ColumnValueSelector makeColumnValueSelector(@Nonnull String columnName) @Override public ColumnCapabilities getColumnCapabilities(String column) { - return withColumnAccessor(column, columnAccessor -> - new ColumnCapabilitiesImpl() + return withColumnAccessor(column, columnAccessor -> { + if (columnAccessor == null) { + return ColumnCapabilitiesImpl.createDefault(); + } else { + return new ColumnCapabilitiesImpl() .setType(columnAccessor.getType()) .setHasMultipleValues(false) .setDictionaryEncoded(false) - .setHasBitmapIndexes(false)); + .setHasBitmapIndexes(false); + } + }); } private T withColumnAccessor(String column, Function fn) diff --git a/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest b/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest index d4affc6ec563..429d9de86635 100644 --- a/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest @@ -2,25 +2,25 @@ type: "operatorValidation" sql: | SELECT - FLOOR(__time TO DAY) t, - SUM(cnt) c, - SUM(SUM(cnt)) OVER (ORDER BY FLOOR(__time TO DAY)) cc + dim1, + MIN(cast(0 as double)) OVER (), + MIN(cast((cnt||cnt) as bigint)) OVER () FROM foo - GROUP BY FLOOR(__time TO DAY) + WHERE length(dim1) > 0 expectedOperators: - { type: "naivePartition", partitionColumns: [ ] } - type: "window" processor: type: "framedAgg" - frame: { peerType: "ROWS", lowUnbounded: true, lowOffset: 0, uppUnbounded: false, uppOffset: 0 } + frame: { peerType: "ROWS", lowUnbounded: true, lowOffset: 0, uppUnbounded: true, uppOffset: 0 } aggregations: - - { type: "longSum", name: "w0", fieldName: "a0" } + - { type: "doubleMin", name: "w0", fieldName: "_v0" } + - { type: "longMin", name: "w1", fieldName: "v1" } expectedResults: - - [ 946684800000, 1, 1 ] - - [ 946771200000, 1, 2 ] - - [ 946857600000, 1, 3 ] - - [ 978307200000, 1, 4 ] - - [ 978393600000, 1, 5 ] - - [ 978480000000, 1, 6 ] + - ["10.1",null,11] + - ["2",null,11] + - ["1",null,11] + - ["def",null,11] + - ["abc",null,11] diff --git a/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest b/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest new file mode 100644 index 000000000000..429d9de86635 --- /dev/null +++ b/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest @@ -0,0 +1,26 @@ +type: "operatorValidation" + +sql: | + SELECT + dim1, + MIN(cast(0 as double)) OVER (), + MIN(cast((cnt||cnt) as bigint)) OVER () + FROM foo + WHERE length(dim1) > 0 + +expectedOperators: + - { type: "naivePartition", partitionColumns: [ ] } + - type: "window" + processor: + type: "framedAgg" + frame: { peerType: "ROWS", lowUnbounded: true, lowOffset: 0, uppUnbounded: true, uppOffset: 0 } + aggregations: + - { type: "doubleMin", name: "w0", fieldName: "_v0" } + - { type: "longMin", name: "w1", fieldName: "v1" } + +expectedResults: + - ["10.1",null,11] + - ["2",null,11] + - ["1",null,11] + - ["def",null,11] + - ["abc",null,11] From 1fecd635425bcd16511a429fb64e5cde168cc7f3 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 10 Oct 2023 13:48:00 +0000 Subject: [PATCH 035/100] undo test changes --- .../calcite/tests/window/simpleSum.sqlTest | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest b/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest index 429d9de86635..d4affc6ec563 100644 --- a/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest @@ -2,25 +2,25 @@ type: "operatorValidation" sql: | SELECT - dim1, - MIN(cast(0 as double)) OVER (), - MIN(cast((cnt||cnt) as bigint)) OVER () + FLOOR(__time TO DAY) t, + SUM(cnt) c, + SUM(SUM(cnt)) OVER (ORDER BY FLOOR(__time TO DAY)) cc FROM foo - WHERE length(dim1) > 0 + GROUP BY FLOOR(__time TO DAY) expectedOperators: - { type: "naivePartition", partitionColumns: [ ] } - type: "window" processor: type: "framedAgg" - frame: { peerType: "ROWS", lowUnbounded: true, lowOffset: 0, uppUnbounded: true, uppOffset: 0 } + frame: { peerType: "ROWS", lowUnbounded: true, lowOffset: 0, uppUnbounded: false, uppOffset: 0 } aggregations: - - { type: "doubleMin", name: "w0", fieldName: "_v0" } - - { type: "longMin", name: "w1", fieldName: "v1" } + - { type: "longSum", name: "w0", fieldName: "a0" } expectedResults: - - ["10.1",null,11] - - ["2",null,11] - - ["1",null,11] - - ["def",null,11] - - ["abc",null,11] + - [ 946684800000, 1, 1 ] + - [ 946771200000, 1, 2 ] + - [ 946857600000, 1, 3 ] + - [ 978307200000, 1, 4 ] + - [ 978393600000, 1, 5 ] + - [ 978480000000, 1, 6 ] From 8ad2bb98d162f36dd46f34b58edb857a87cf78c2 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 10 Oct 2023 13:54:24 +0000 Subject: [PATCH 036/100] fix test to have filter --- .../calcite/tests/window/virtualColumns.sqlTest | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest b/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest index 429d9de86635..a9581f7ac43d 100644 --- a/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest @@ -2,11 +2,10 @@ type: "operatorValidation" sql: | SELECT - dim1, + '_'||dim1, MIN(cast(0 as double)) OVER (), MIN(cast((cnt||cnt) as bigint)) OVER () FROM foo - WHERE length(dim1) > 0 expectedOperators: - { type: "naivePartition", partitionColumns: [ ] } @@ -19,8 +18,9 @@ expectedOperators: - { type: "longMin", name: "w1", fieldName: "v1" } expectedResults: - - ["10.1",null,11] - - ["2",null,11] - - ["1",null,11] - - ["def",null,11] - - ["abc",null,11] + - ["_",null,11] + - ["_10.1",null,11] + - ["_2",null,11] + - ["_1",null,11] + - ["_def",null,11] + - ["_abc",null,11] From f396de861fd14801733fcc8030559119d1cc4024 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 10 Oct 2023 13:59:06 +0000 Subject: [PATCH 037/100] update 1 more test --- .../java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java index c2b1fb301d9c..069a35319efb 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java @@ -4983,7 +4983,7 @@ public void test_nestedAggs_cte_win_01() windowQueryTest(); } - @NotYetSupported(Modes.NPE_PLAIN) + @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/winFnQry_7") @Test public void test_aggregates_winFnQry_7() From e018b2cd3b480ae440c5b6fcea5ce6a446b092e9 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 10 Oct 2023 14:47:12 +0000 Subject: [PATCH 038/100] disable feature type based things for MSQ --- .../sql/calcite/BaseCalciteQueryTest.java | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index b24780e01f70..b0de85894bab 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -1094,13 +1094,18 @@ public void assertResultsValid(ResultMatchMode matchMode, List expecte List results = queryResults.results; Assert.assertEquals("Result count mismatch", expected.size(), results.size()); - List types = new ArrayList<>(); - for (int i = 0; i < queryResults.signature.getColumnNames().size(); i++) { - Optional columnType = queryResults.signature.getColumnType(i); - if (columnType.isPresent()) { - types.add(columnType.get().getType()); - } else { - types.add(null); + final List types = new ArrayList<>(); + + boolean isMSQ = isMSQRowType(queryResults.signature); + + if (!isMSQ) { + for (int i = 0; i < queryResults.signature.getColumnNames().size(); i++) { + Optional columnType = queryResults.signature.getColumnType(i); + if (columnType.isPresent()) { + types.add(columnType.get().getType()); + } else { + types.add(null); + } } } @@ -1118,13 +1123,19 @@ public void assertResultsValid(ResultMatchMode matchMode, List expecte cellValidator.validate( row, i, - types.get(i), + isMSQ ? null : types.get(i), expectedCell, resultCell); } } } + private boolean isMSQRowType(RowSignature signature) + { + List colNames = signature.getColumnNames(); + return colNames.size() == 1 && "TASK".equals(colNames.get(0)); + } + public void assertResultsEquals(String sql, List expectedResults, List results) { int minSize = Math.min(results.size(), expectedResults.size()); From a74a9fdfe90f9738c806b1c4cbc0790a0c7840b4 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 10 Oct 2023 18:49:25 +0000 Subject: [PATCH 039/100] fix varianssqlaggtest --- .../sql/VarianceSqlAggregatorTest.java | 20 +----- .../sql/calcite/BaseCalciteQueryTest.java | 65 +++++++++++++++---- 2 files changed, 54 insertions(+), 31 deletions(-) diff --git a/extensions-core/stats/src/test/java/org/apache/druid/query/aggregation/variance/sql/VarianceSqlAggregatorTest.java b/extensions-core/stats/src/test/java/org/apache/druid/query/aggregation/variance/sql/VarianceSqlAggregatorTest.java index e45a93784967..49f2861a064c 100644 --- a/extensions-core/stats/src/test/java/org/apache/druid/query/aggregation/variance/sql/VarianceSqlAggregatorTest.java +++ b/extensions-core/stats/src/test/java/org/apache/druid/query/aggregation/variance/sql/VarianceSqlAggregatorTest.java @@ -56,13 +56,13 @@ import org.apache.druid.segment.virtual.ExpressionVirtualColumn; import org.apache.druid.segment.writeout.OffHeapMemorySegmentWriteOutMediumFactory; import org.apache.druid.sql.calcite.BaseCalciteQueryTest; +import org.apache.druid.sql.calcite.QueryTestRunner.QueryResults; import org.apache.druid.sql.calcite.filtration.Filtration; import org.apache.druid.sql.calcite.util.CalciteTests; import org.apache.druid.sql.calcite.util.SpecificSegmentsQuerySegmentWalker; import org.apache.druid.sql.calcite.util.TestDataBuilder; import org.apache.druid.timeline.DataSegment; import org.apache.druid.timeline.partition.LinearShardSpec; -import org.junit.Assert; import org.junit.Test; import java.io.IOException; @@ -679,22 +679,8 @@ public void testVarianceAggAsInput() } @Override - public void assertResultsEquals(String sql, List expectedResults, List results) + public void assertResultsValid(ResultMatchMode matchMode, List expected, QueryResults queryResults) { - Assert.assertEquals(expectedResults.size(), results.size()); - for (int i = 0; i < expectedResults.size(); i++) { - Object[] expectedResult = expectedResults.get(i); - Object[] result = results.get(i); - Assert.assertEquals(expectedResult.length, result.length); - for (int j = 0; j < expectedResult.length; j++) { - if (expectedResult[j] instanceof Float) { - Assert.assertEquals((Float) expectedResult[j], (Float) result[j], 1e-5); - } else if (expectedResult[j] instanceof Double) { - Assert.assertEquals((Double) expectedResult[j], (Double) result[j], 1e-5); - } else { - Assert.assertEquals(expectedResult[j], result[j]); - } - } - } + super.assertResultsValid(ResultMatchMode.EQUALS_EPS, expected, queryResults); } } diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index b0de85894bab..b2b4993b0579 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -1064,23 +1064,60 @@ public Map baseQueryContext() } } - enum ResultMatchMode - { - EQUALS, RELAX_NULLS; - - void validate(int row, int column, ValueType type, Object expectedCell, Object resultCell) - { - if (this == RELAX_NULLS && expectedCell == null) { - if (resultCell == null) { - return; + public enum ResultMatchMode + { + EQUALS { + @Override + void validate(int row, int column, ValueType type, Object expectedCell, Object resultCell) + { + assertEquals( + mismatchMessage(row, column), + expectedCell, + resultCell); + } + }, + RELAX_NULLS { + @Override + void validate(int row, int column, ValueType type, Object expectedCell, Object resultCell) + { + if (expectedCell == null) { + if (resultCell == null) { + return; + } + expectedCell = NullHandling.defaultValueForType(type); } - expectedCell = NullHandling.defaultValueForType(type); + EQUALS.validate(row, column, type, expectedCell, resultCell); } - assertEquals( - String.format(Locale.ENGLISH, "column content mismatch at %d,%d", row, column), - expectedCell, - resultCell); + }, + EQUALS_EPS { + @Override + void validate(int row, int column, ValueType type, Object expectedCell, Object resultCell) + { + if (expectedCell instanceof Float) { + assertEquals( + mismatchMessage(row, column), + (Float) expectedCell, + (Float) resultCell, + 1e-5); + } else if (expectedCell instanceof Double) { + assertEquals( + mismatchMessage(row, column), + (Double) expectedCell, + (Double) resultCell, + 1e-5); + } else { + EQUALS.validate(row, column, type, expectedCell, resultCell); + } + } + }; + + abstract void validate(int row, int column, ValueType type, Object expectedCell, Object resultCell); + + private static String mismatchMessage(int row, int column) + { + return String.format(Locale.ENGLISH, "column content mismatch at %d,%d", row, column); } + } /** From 185b8e7716c906382958a5121ee6994ca340d3ca Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 10 Oct 2023 18:52:16 +0000 Subject: [PATCH 040/100] use eps in other test --- .../sql/TDigestSketchSqlAggregatorTest.java | 20 +++---------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/sql/TDigestSketchSqlAggregatorTest.java b/extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/sql/TDigestSketchSqlAggregatorTest.java index f42cade76737..e09802a9a8b4 100644 --- a/extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/sql/TDigestSketchSqlAggregatorTest.java +++ b/extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/sql/TDigestSketchSqlAggregatorTest.java @@ -47,13 +47,13 @@ import org.apache.druid.segment.virtual.ExpressionVirtualColumn; import org.apache.druid.segment.writeout.OffHeapMemorySegmentWriteOutMediumFactory; import org.apache.druid.sql.calcite.BaseCalciteQueryTest; +import org.apache.druid.sql.calcite.QueryTestRunner.QueryResults; import org.apache.druid.sql.calcite.filtration.Filtration; import org.apache.druid.sql.calcite.util.CalciteTests; import org.apache.druid.sql.calcite.util.SpecificSegmentsQuerySegmentWalker; import org.apache.druid.sql.calcite.util.TestDataBuilder; import org.apache.druid.timeline.DataSegment; import org.apache.druid.timeline.partition.LinearShardSpec; -import org.junit.Assert; import org.junit.Test; import java.io.IOException; @@ -506,23 +506,9 @@ public void testGroupByAggregatorDefaultValues() } @Override - public void assertResultsEquals(String sql, List expectedResults, List results) + public void assertResultsValid(ResultMatchMode matchMode, List expected, QueryResults queryResults) { - Assert.assertEquals(expectedResults.size(), results.size()); - for (int i = 0; i < expectedResults.size(); i++) { - Object[] expectedResult = expectedResults.get(i); - Object[] result = results.get(i); - Assert.assertEquals(expectedResult.length, result.length); - for (int j = 0; j < expectedResult.length; j++) { - if (expectedResult[j] instanceof Float) { - Assert.assertEquals((Float) expectedResult[j], (Float) result[j], 0.000001); - } else if (expectedResult[j] instanceof Double) { - Assert.assertEquals((Double) expectedResult[j], (Double) result[j], 0.000001); - } else { - Assert.assertEquals(expectedResult[j], result[j]); - } - } - } + super.assertResultsValid(ResultMatchMode.EQUALS_EPS, expected, queryResults); } private static PostAggregator makeFieldAccessPostAgg(String name) From ed1bb89d3319b6c39e15f6223995bed9e9c12b16 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 10 Oct 2023 19:43:28 +0000 Subject: [PATCH 041/100] fix intellij error --- .../org/apache/druid/sql/calcite/CalciteWindowQueryTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index e58ee2c7663f..e4c07d188e7b 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -181,7 +181,9 @@ private void maybeDumpActualResults(List results) throws Exception if (DUMP_ACTUAL_RESULTS) { StringBuilder sb = new StringBuilder(); for (Object[] row : results) { - sb.append(" - " + queryJackson.writeValueAsString(row) + "\n"); + sb.append(" - "); + sb.append(queryJackson.writeValueAsString(row)); + sb.append("\n"); } log.info("Actual results:\n%s", sb.toString()); } From 91b1be9a544477a45795eec282257edb2f6569e7 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 11 Oct 2023 05:14:22 +0000 Subject: [PATCH 042/100] add final --- .../sql/calcite/BaseCalciteQueryTest.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index b2b4993b0579..344a450a97c0 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -1126,14 +1126,14 @@ private static String mismatchMessage(int row, int column) * In case {@link NullHandling#replaceWithDefault()} is true, if the expected result is null it accepts * both null and the default value for that column as actual result. */ - public void assertResultsValid(ResultMatchMode matchMode, List expected, QueryResults queryResults) + public void assertResultsValid(final ResultMatchMode matchMode, final List expected, final QueryResults queryResults) { - List results = queryResults.results; + final List results = queryResults.results; Assert.assertEquals("Result count mismatch", expected.size(), results.size()); final List types = new ArrayList<>(); - boolean isMSQ = isMSQRowType(queryResults.signature); + final boolean isMSQ = isMSQRowType(queryResults.signature); if (!isMSQ) { for (int i = 0; i < queryResults.signature.getColumnNames().size(); i++) { @@ -1146,18 +1146,17 @@ public void assertResultsValid(ResultMatchMode matchMode, List expecte } } - int numRows = results.size(); + final int numRows = results.size(); for (int row = 0; row < numRows; row++) { - Object[] expectedRow = expected.get(row); - Object[] resultRow = results.get(row); + final Object[] expectedRow = expected.get(row); + final Object[] resultRow = results.get(row); assertEquals("column count mismatch; at row#" + row, expectedRow.length, resultRow.length); for (int i = 0; i < resultRow.length; i++) { - Object resultCell = resultRow[i]; - Object expectedCell = expectedRow[i]; + final Object resultCell = resultRow[i]; + final Object expectedCell = expectedRow[i]; - ResultMatchMode cellValidator = matchMode; - cellValidator.validate( + matchMode.validate( row, i, isMSQ ? null : types.get(i), From df73774e13a84eac392c54915296b10c0f352a21 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 11 Oct 2023 05:19:18 +0000 Subject: [PATCH 043/100] addrss review --- .../org/apache/druid/sql/calcite/BaseCalciteQueryTest.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index 344a450a97c0..33f066952bca 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -147,6 +147,7 @@ public class BaseCalciteQueryTest extends CalciteTestBase implements QueryComponentSupplier, PlannerComponentSupplier { + public static final double ASSERTION_EPSILON = 1e-5; public static String NULL_STRING; public static Float NULL_FLOAT; public static Long NULL_LONG; @@ -1098,13 +1099,13 @@ void validate(int row, int column, ValueType type, Object expectedCell, Object r mismatchMessage(row, column), (Float) expectedCell, (Float) resultCell, - 1e-5); + ASSERTION_EPSILON); } else if (expectedCell instanceof Double) { assertEquals( mismatchMessage(row, column), (Double) expectedCell, (Double) resultCell, - 1e-5); + ASSERTION_EPSILON); } else { EQUALS.validate(row, column, type, expectedCell, resultCell); } @@ -1115,7 +1116,7 @@ void validate(int row, int column, ValueType type, Object expectedCell, Object r private static String mismatchMessage(int row, int column) { - return String.format(Locale.ENGLISH, "column content mismatch at %d,%d", row, column); + return StringUtils.format("column content mismatch at %d,%d", row, column); } } From 7714e2f039bdf30a95cfa6fb708e5450c78afb7c Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 11 Oct 2023 15:01:10 +0000 Subject: [PATCH 044/100] update test/string/etc --- .../sql/TDigestSketchSqlAggregatorTest.java | 17 ++- .../sql/VarianceSqlAggregatorTest.java | 17 ++- .../sql/calcite/BaseCalciteQueryTest.java | 134 +++++++++++------- .../sql/calcite/DrillWindowQueryTest.java | 6 +- 4 files changed, 108 insertions(+), 66 deletions(-) diff --git a/extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/sql/TDigestSketchSqlAggregatorTest.java b/extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/sql/TDigestSketchSqlAggregatorTest.java index e09802a9a8b4..c9dba8762761 100644 --- a/extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/sql/TDigestSketchSqlAggregatorTest.java +++ b/extensions-contrib/tdigestsketch/src/test/java/org/apache/druid/query/aggregation/tdigestsketch/sql/TDigestSketchSqlAggregatorTest.java @@ -47,7 +47,6 @@ import org.apache.druid.segment.virtual.ExpressionVirtualColumn; import org.apache.druid.segment.writeout.OffHeapMemorySegmentWriteOutMediumFactory; import org.apache.druid.sql.calcite.BaseCalciteQueryTest; -import org.apache.druid.sql.calcite.QueryTestRunner.QueryResults; import org.apache.druid.sql.calcite.filtration.Filtration; import org.apache.druid.sql.calcite.util.CalciteTests; import org.apache.druid.sql.calcite.util.SpecificSegmentsQuerySegmentWalker; @@ -130,6 +129,7 @@ public void testComputingSketchOnNumericValues() .context(QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, ImmutableList.of( new String[]{ "\"AAAAAT/wAAAAAAAAQBgAAAAAAABAaQAAAAAAAAAAAAY/8AAAAAAAAD/wAAAAAAAAP/AAAAAAAABAAAAAAAAAAD/wAAAAAAAAQAgAAAAAAAA/8AAAAAAAAEAQAAAAAAAAP/AAAAAAAABAFAAAAAAAAD/wAAAAAAAAQBgAAAAAAAA=\"" @@ -166,6 +166,7 @@ public void testComputingSketchOnCastedString() .context(QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, ImmutableList.of( NullHandling.replaceWithDefault() ? new String[]{ @@ -198,6 +199,7 @@ public void testDefaultCompressionForTDigestGenerateSketchAgg() .context(QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, ImmutableList.of( new Object[]{"\"AAAAAT/wAAAAAAAAQBgAAAAAAABAWQAAAAAAAAAAAAY/8AAAAAAAAD/wAAAAAAAAP/AAAAAAAABAAAAAAAAAAD/wAAAAAAAAQAgAAAAAAAA/8AAAAAAAAEAQAAAAAAAAP/AAAAAAAABAFAAAAAAAAD/wAAAAAAAAQBgAAAAAAAA=\""} ) @@ -242,6 +244,7 @@ public void testComputingQuantileOnPreAggregatedSketch() .context(QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, expectedResults ); } @@ -297,6 +300,7 @@ public void testGeneratingSketchAndComputingQuantileOnFly() .setContext(QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, expectedResults ); } @@ -334,6 +338,7 @@ public void testQuantileOnNumericValues() .context(QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, expectedResults ); } @@ -370,6 +375,7 @@ public void testCompressionParamForTDigestQuantileAgg() .context(QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, ImmutableList.of( new Object[]{1.0, 3.5, 6.0} ) @@ -421,6 +427,7 @@ public void testQuantileOnCastedString() .context(QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, ImmutableList.of( NullHandling.replaceWithDefault() ? new Object[]{0.0, 0.5, 10.1} @@ -455,6 +462,7 @@ public void testEmptyTimeseriesResults() .context(QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, ImmutableList.of( new Object[]{"\"AAAAAX/wAAAAAAAA//AAAAAAAABAWQAAAAAAAAAAAAA=\"", Double.NaN} ) @@ -499,18 +507,13 @@ public void testGroupByAggregatorDefaultValues() .setContext(QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, ImmutableList.of( new Object[]{"a", "\"AAAAAX/wAAAAAAAA//AAAAAAAABAWQAAAAAAAAAAAAA=\"", Double.NaN} ) ); } - @Override - public void assertResultsValid(ResultMatchMode matchMode, List expected, QueryResults queryResults) - { - super.assertResultsValid(ResultMatchMode.EQUALS_EPS, expected, queryResults); - } - private static PostAggregator makeFieldAccessPostAgg(String name) { return new FieldAccessPostAggregator(name, name); diff --git a/extensions-core/stats/src/test/java/org/apache/druid/query/aggregation/variance/sql/VarianceSqlAggregatorTest.java b/extensions-core/stats/src/test/java/org/apache/druid/query/aggregation/variance/sql/VarianceSqlAggregatorTest.java index 49f2861a064c..77cc529b55d9 100644 --- a/extensions-core/stats/src/test/java/org/apache/druid/query/aggregation/variance/sql/VarianceSqlAggregatorTest.java +++ b/extensions-core/stats/src/test/java/org/apache/druid/query/aggregation/variance/sql/VarianceSqlAggregatorTest.java @@ -56,7 +56,6 @@ import org.apache.druid.segment.virtual.ExpressionVirtualColumn; import org.apache.druid.segment.writeout.OffHeapMemorySegmentWriteOutMediumFactory; import org.apache.druid.sql.calcite.BaseCalciteQueryTest; -import org.apache.druid.sql.calcite.QueryTestRunner.QueryResults; import org.apache.druid.sql.calcite.filtration.Filtration; import org.apache.druid.sql.calcite.util.CalciteTests; import org.apache.druid.sql.calcite.util.SpecificSegmentsQuerySegmentWalker; @@ -196,6 +195,7 @@ public void testVarPop() .context(BaseCalciteQueryTest.QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, expectedResults ); } @@ -243,6 +243,7 @@ public void testVarSamp() .context(BaseCalciteQueryTest.QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, expectedResults ); } @@ -298,6 +299,7 @@ public void testStdDevPop() .context(BaseCalciteQueryTest.QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, expectedResults ); } @@ -351,6 +353,7 @@ public void testStdDevSamp() .context(BaseCalciteQueryTest.QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, expectedResults ); } @@ -409,6 +412,7 @@ public void testStdDevWithVirtualColumns() .context(BaseCalciteQueryTest.QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, expectedResults ); } @@ -455,6 +459,7 @@ public void testVarianceOrderBy() .setContext(BaseCalciteQueryTest.QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, expectedResults ); } @@ -491,6 +496,7 @@ public void testVariancesOnCastedString() .context(BaseCalciteQueryTest.QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, ImmutableList.of( NullHandling.replaceWithDefault() ? new Object[]{3.61497656362466, 3.960008417499471, 3.960008417499471, 15.681666666666667} @@ -541,6 +547,7 @@ public void testEmptyTimeseriesResults() .context(BaseCalciteQueryTest.QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, ImmutableList.of( NullHandling.replaceWithDefault() ? new Object[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0} @@ -621,6 +628,7 @@ public void testGroupByAggregatorDefaultValues() .setContext(QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, ImmutableList.of( NullHandling.replaceWithDefault() ? new Object[]{"a", 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0} @@ -674,13 +682,8 @@ public void testVarianceAggAsInput() .context(BaseCalciteQueryTest.QUERY_CONTEXT_DEFAULT) .build() ), + ResultMatchMode.EQUALS_EPS, expectedResults ); } - - @Override - public void assertResultsValid(ResultMatchMode matchMode, List expected, QueryResults queryResults) - { - super.assertResultsValid(ResultMatchMode.EQUALS_EPS, expected, queryResults); - } } diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index 33f066952bca..28ff96ef1f65 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -124,13 +124,11 @@ import javax.annotation.Nullable; import java.io.IOException; -import java.io.PrintStream; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.List; -import java.util.Locale; import java.util.Map; import java.util.Optional; import java.util.Properties; @@ -847,6 +845,20 @@ public void testQuery( .run(); } + public void testQuery( + final String sql, + final List> expectedQueries, + final ResultMatchMode resultsMatchMode, + final List expectedResults + ) + { + testBuilder() + .sql(sql) + .expectedQueries(expectedQueries) + .expectedResults(resultsMatchMode, expectedResults) + .run(); + } + public void testQuery( final String sql, final List> expectedQueries, @@ -1495,8 +1507,8 @@ public void verify(String sql, QueryResults queryResults) assertResultsValid(expectedResultMatchMode, expectedResults, queryResults); } catch (AssertionError e) { - System.out.println("sql: " + sql); - displayResults("Actual", queryResults.results); + log.info("sql: %s", sql); + log.info(resultsToString("Actual", queryResults.results)); throw e; } } @@ -1509,58 +1521,82 @@ public void verify(String sql, QueryResults queryResults) * expected results: let the test fail with empty results. The actual results * are printed to the console. Copy them into the test. */ - public static void displayResults(String name, List results) - { - PrintStream out = System.out; - out.printf(Locale.ENGLISH, "-- %s results --", name); - for (int rowIndex = 0; rowIndex < results.size(); rowIndex++) { - printArray(results.get(rowIndex), out); - if (rowIndex < results.size() - 1) { - out.print(","); - } - out.println(); - } - out.println("----"); - } - - private static void printArray(final Object[] array, final PrintStream out) + public static String resultsToString(String name, List results) { - printArrayImpl(array, out, "new Object[]{", "}"); + return new ResultsPrinter(name, results).getResult(); } - private static void printList(final List list, final PrintStream out) + static class ResultsPrinter { - printArrayImpl(list.toArray(new Object[0]), out, "ImmutableList.of(", ")"); - } + private StringBuilder sb; - private static void printArrayImpl(final Object[] array, final PrintStream out, final String pre, final String post) - { - out.print(pre); - for (int colIndex = 0; colIndex < array.length; colIndex++) { - Object col = array[colIndex]; - if (colIndex > 0) { - out.print(", "); + private ResultsPrinter(String name, List results) + { + sb = new StringBuilder(); + sb.append("-- " + name + " results --\n"); + + for (int rowIndex = 0; rowIndex < results.size(); rowIndex++) { + printArray(results.get(rowIndex)); + if (rowIndex < results.size() - 1) { + outprint(","); + } + sb.append('\n'); } - if (col == null) { - out.print("null"); - } else if (col instanceof String) { - out.print("\""); - out.print(StringEscapeUtils.escapeJava((String) col)); - out.print("\""); - } else if (col instanceof Long) { - out.print(col); - out.print("L"); - } else if (col instanceof Double) { - out.print(col); - out.print("D"); - } else if (col instanceof Object[]) { - printArray(array, out); - } else if (col instanceof List) { - printList((List) col, out); - } else { - out.print(col); + sb.append("----"); + } + + private String getResult() + { + return sb.toString(); + } + + private void printArray(final Object[] array) + { + printArrayImpl(array, "new Object[]{", "}"); + } + + private void printList(final List list) + { + printArrayImpl(list.toArray(new Object[0]), "ImmutableList.of(", ")"); + } + + private void printArrayImpl(final Object[] array, final String pre, final String post) + { + sb.append(pre); + for (int colIndex = 0; colIndex < array.length; colIndex++) { + Object col = array[colIndex]; + if (colIndex > 0) { + sb.append(", "); + } + if (col == null) { + sb.append("null"); + } else if (col instanceof String) { + outprint("\""); + outprint(StringEscapeUtils.escapeJava((String) col)); + outprint("\""); + } else if (col instanceof Long) { + outprint(col); + outprint("L"); + } else if (col instanceof Double) { + outprint(col); + outprint("D"); + } else if (col instanceof Float) { + outprint(col); + outprint("F"); + } else if (col instanceof Object[]) { + printArray(array); + } else if (col instanceof List) { + printList((List) col); + } else { + outprint(col); + } } + outprint(post); + } + + private void outprint(Object post) + { + sb.append(post); } - out.print(post); } } diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java index 515faa4e587f..8097377d09c8 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java @@ -370,9 +370,9 @@ public void verify(String sql, QueryResults queryResults) assertResultsEquals(sql, expectedResults, results); } catch (AssertionError e) { - System.out.println("query: " + sql); - displayResults("Expected", expectedResults); - displayResults("Actual", results); + log.info("query: %s", sql); + log.info(resultsToString("Expected", expectedResults)); + log.info(resultsToString("Actual", results)); throw e; } } From 78d1d319ca9710c7935627c995ef61ed4cc7f4d3 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 11 Oct 2023 16:01:30 +0000 Subject: [PATCH 045/100] write concat in 3 lines :D --- .../org/apache/druid/sql/calcite/BaseCalciteQueryTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index 28ff96ef1f65..c6f41aeb2efb 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -1533,7 +1533,9 @@ static class ResultsPrinter private ResultsPrinter(String name, List results) { sb = new StringBuilder(); - sb.append("-- " + name + " results --\n"); + sb.append("-- "); + sb.append(name); + sb.append(" results --\n"); for (int rowIndex = 0; rowIndex < results.size(); rowIndex++) { printArray(results.get(rowIndex)); From 35b981db585b2097f45162b3f545fc02598f52fa Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Wed, 11 Oct 2023 20:33:11 +0000 Subject: [PATCH 046/100] update sqlTest --- .../test/resources/calcite/tests/window/virtualColumns.sqlTest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest b/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest index a9581f7ac43d..967853bd1e39 100644 --- a/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest @@ -2,7 +2,7 @@ type: "operatorValidation" sql: | SELECT - '_'||dim1, + '_'||dim1, MIN(cast(0 as double)) OVER (), MIN(cast((cnt||cnt) as bigint)) OVER () FROM foo From a69ecd9bc421be7aaf5e8f0d50c5da06a74aded9 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Thu, 12 Oct 2023 11:48:58 +0000 Subject: [PATCH 047/100] dont create VCR --- .../java/org/apache/druid/sql/calcite/rel/DruidQuery.java | 3 ++- .../java/org/apache/druid/sql/calcite/rel/Windowing.java | 7 ++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java index 1cf79b6dc123..9294432d8fa6 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java @@ -282,7 +282,8 @@ public static DruidQuery fromPartialQuery( partialQuery, plannerContext, sourceRowSignature, // Plans immediately after Scan, so safe to use the row signature from scan - rexBuilder + rexBuilder, + virtualColumnRegistry ) ); } else { diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java index 9a414015c0f5..9f8d3d091b5d 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java @@ -115,7 +115,8 @@ public static Windowing fromCalciteStuff( final PartialDruidQuery partialQuery, final PlannerContext plannerContext, final RowSignature sourceRowSignature, - final RexBuilder rexBuilder + final RexBuilder rexBuilder, + final VirtualColumnRegistry virtualColumnRegistry ) { final Window window = Preconditions.checkNotNull(partialQuery.getWindow(), "window"); @@ -172,10 +173,6 @@ public static Windowing fromCalciteStuff( ProcessorMaker maker = KNOWN_WINDOW_FNS.get(aggregateCall.getAggregation().getName()); if (maker == null) { - VirtualColumnRegistry virtualColumnRegistry = VirtualColumnRegistry.create( - sourceRowSignature, - plannerContext.getExpressionParser(), - plannerContext.getPlannerConfig().isForceExpressionVirtualColumns()); final Aggregation aggregation = GroupByRules.translateAggregateCall( plannerContext, From 7c4551b50a8d92b61e8b9aa7fe9ecb6369cf3c7f Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Thu, 12 Oct 2023 12:26:06 +0000 Subject: [PATCH 048/100] plannerconfig validate --- .../sql/calcite/planner/PlannerConfig.java | 41 +++++++++++++++---- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/PlannerConfig.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/PlannerConfig.java index 75887bcbec14..5e509be0dd91 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/PlannerConfig.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/PlannerConfig.java @@ -20,12 +20,15 @@ package org.apache.druid.sql.calcite.planner; import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.curator.shaded.com.google.common.collect.Sets; import org.apache.druid.java.util.common.UOE; import org.apache.druid.query.QueryContexts; import org.joda.time.DateTimeZone; +import java.util.HashSet; import java.util.Map; import java.util.Objects; +import java.util.Set; public class PlannerConfig { @@ -339,51 +342,71 @@ public Builder nativeQuerySqlPlanningMode(String mode) return this; } - public Builder withOverrides(final Map queryContext) + public Builder withOverrides(final Map overrideContext) { + Set validKeys=new HashSet<>(); useApproximateCountDistinct = QueryContexts.parseBoolean( - queryContext, + overrideContext, CTX_KEY_USE_APPROXIMATE_COUNT_DISTINCT, useApproximateCountDistinct ); + validKeys.add(CTX_KEY_USE_APPROXIMATE_COUNT_DISTINCT); + useGroupingSetForExactDistinct = QueryContexts.parseBoolean( - queryContext, + overrideContext, CTX_KEY_USE_GROUPING_SET_FOR_EXACT_DISTINCT, useGroupingSetForExactDistinct ); + validKeys.add(CTX_KEY_USE_APPROXIMATE_COUNT_DISTINCT); + useApproximateTopN = QueryContexts.parseBoolean( - queryContext, + overrideContext, CTX_KEY_USE_APPROXIMATE_TOPN, useApproximateTopN ); + validKeys.add(CTX_KEY_USE_APPROXIMATE_TOPN); + computeInnerJoinCostAsFilter = QueryContexts.parseBoolean( - queryContext, + overrideContext, CTX_COMPUTE_INNER_JOIN_COST_AS_FILTER, computeInnerJoinCostAsFilter ); + validKeys.add(CTX_COMPUTE_INNER_JOIN_COST_AS_FILTER); + useNativeQueryExplain = QueryContexts.parseBoolean( - queryContext, + overrideContext, CTX_KEY_USE_NATIVE_QUERY_EXPLAIN, useNativeQueryExplain ); + validKeys.add(CTX_KEY_USE_NATIVE_QUERY_EXPLAIN); + forceExpressionVirtualColumns = QueryContexts.parseBoolean( - queryContext, + overrideContext, CTX_KEY_FORCE_EXPRESSION_VIRTUAL_COLUMNS, forceExpressionVirtualColumns ); + validKeys.add(CTX_KEY_FORCE_EXPRESSION_VIRTUAL_COLUMNS); + final int queryContextMaxNumericInFilters = QueryContexts.parseInt( - queryContext, + overrideContext, CTX_MAX_NUMERIC_IN_FILTERS, maxNumericInFilters ); + validKeys.add(CTX_MAX_NUMERIC_IN_FILTERS); maxNumericInFilters = validateMaxNumericInFilters( queryContextMaxNumericInFilters, maxNumericInFilters); nativeQuerySqlPlanningMode = QueryContexts.parseString( - queryContext, + overrideContext, CTX_NATIVE_QUERY_SQL_PLANNING_MODE, nativeQuerySqlPlanningMode ); + validKeys.add(CTX_NATIVE_QUERY_SQL_PLANNING_MODE); + + Set difference = Sets.difference(overrideContext.keySet(), validKeys); + if (!difference.isEmpty()) { + throw new RuntimeException("Invalid override keys were passed to this builder!" + difference); + } return this; } From 8937300ef29f356a43d380b992314c17b5ad6f08 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Thu, 12 Oct 2023 12:26:09 +0000 Subject: [PATCH 049/100] Revert "plannerconfig validate" This reverts commit 7c4551b50a8d92b61e8b9aa7fe9ecb6369cf3c7f. --- .../sql/calcite/planner/PlannerConfig.java | 41 ++++--------------- 1 file changed, 9 insertions(+), 32 deletions(-) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/PlannerConfig.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/PlannerConfig.java index 5e509be0dd91..75887bcbec14 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/PlannerConfig.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/PlannerConfig.java @@ -20,15 +20,12 @@ package org.apache.druid.sql.calcite.planner; import com.fasterxml.jackson.annotation.JsonProperty; -import org.apache.curator.shaded.com.google.common.collect.Sets; import org.apache.druid.java.util.common.UOE; import org.apache.druid.query.QueryContexts; import org.joda.time.DateTimeZone; -import java.util.HashSet; import java.util.Map; import java.util.Objects; -import java.util.Set; public class PlannerConfig { @@ -342,71 +339,51 @@ public Builder nativeQuerySqlPlanningMode(String mode) return this; } - public Builder withOverrides(final Map overrideContext) + public Builder withOverrides(final Map queryContext) { - Set validKeys=new HashSet<>(); useApproximateCountDistinct = QueryContexts.parseBoolean( - overrideContext, + queryContext, CTX_KEY_USE_APPROXIMATE_COUNT_DISTINCT, useApproximateCountDistinct ); - validKeys.add(CTX_KEY_USE_APPROXIMATE_COUNT_DISTINCT); - useGroupingSetForExactDistinct = QueryContexts.parseBoolean( - overrideContext, + queryContext, CTX_KEY_USE_GROUPING_SET_FOR_EXACT_DISTINCT, useGroupingSetForExactDistinct ); - validKeys.add(CTX_KEY_USE_APPROXIMATE_COUNT_DISTINCT); - useApproximateTopN = QueryContexts.parseBoolean( - overrideContext, + queryContext, CTX_KEY_USE_APPROXIMATE_TOPN, useApproximateTopN ); - validKeys.add(CTX_KEY_USE_APPROXIMATE_TOPN); - computeInnerJoinCostAsFilter = QueryContexts.parseBoolean( - overrideContext, + queryContext, CTX_COMPUTE_INNER_JOIN_COST_AS_FILTER, computeInnerJoinCostAsFilter ); - validKeys.add(CTX_COMPUTE_INNER_JOIN_COST_AS_FILTER); - useNativeQueryExplain = QueryContexts.parseBoolean( - overrideContext, + queryContext, CTX_KEY_USE_NATIVE_QUERY_EXPLAIN, useNativeQueryExplain ); - validKeys.add(CTX_KEY_USE_NATIVE_QUERY_EXPLAIN); - forceExpressionVirtualColumns = QueryContexts.parseBoolean( - overrideContext, + queryContext, CTX_KEY_FORCE_EXPRESSION_VIRTUAL_COLUMNS, forceExpressionVirtualColumns ); - validKeys.add(CTX_KEY_FORCE_EXPRESSION_VIRTUAL_COLUMNS); - final int queryContextMaxNumericInFilters = QueryContexts.parseInt( - overrideContext, + queryContext, CTX_MAX_NUMERIC_IN_FILTERS, maxNumericInFilters ); - validKeys.add(CTX_MAX_NUMERIC_IN_FILTERS); maxNumericInFilters = validateMaxNumericInFilters( queryContextMaxNumericInFilters, maxNumericInFilters); nativeQuerySqlPlanningMode = QueryContexts.parseString( - overrideContext, + queryContext, CTX_NATIVE_QUERY_SQL_PLANNING_MODE, nativeQuerySqlPlanningMode ); - validKeys.add(CTX_NATIVE_QUERY_SQL_PLANNING_MODE); - - Set difference = Sets.difference(overrideContext.keySet(), validKeys); - if (!difference.isEmpty()) { - throw new RuntimeException("Invalid override keys were passed to this builder!" + difference); - } return this; } From a79600f2d7a8469f034fac08752dff55188ec793 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Thu, 12 Oct 2023 13:01:19 +0000 Subject: [PATCH 050/100] dont swallow exception backtrace --- .../org/apache/druid/sql/calcite/BaseCalciteQueryTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java index c6f41aeb2efb..9bfbfb8e39bd 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/BaseCalciteQueryTest.java @@ -1329,8 +1329,7 @@ public static Query recursivelyClearContext(final Query query, ObjectM return queryJsonMapper.treeToValue(newQueryNode, Query.class); } catch (Exception e) { - Assert.fail(e.getMessage()); - return null; + throw new RuntimeException(e); } } From 56be2b6e3c579c10209871d81fc7b04168d994b1 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Thu, 12 Oct 2023 13:02:08 +0000 Subject: [PATCH 051/100] reuse test stuff --- .../sql/calcite/CalciteSelectQueryTest.java | 55 +++++++++++++++++++ .../sql/calcite/CalciteWindowQueryTest.java | 6 ++ .../druid/sql/calcite/QueryTestRunner.java | 10 ++-- .../tests/window/virtualColumns.sqlTest | 7 ++- 4 files changed, 70 insertions(+), 8 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteSelectQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteSelectQueryTest.java index a7ad956baee3..976d6691de5b 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteSelectQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteSelectQueryTest.java @@ -30,6 +30,8 @@ import org.apache.druid.query.Druids; import org.apache.druid.query.InlineDataSource; import org.apache.druid.query.LookupDataSource; +import org.apache.druid.query.Query; +import org.apache.druid.query.QueryContexts; import org.apache.druid.query.QueryDataSource; import org.apache.druid.query.aggregation.CountAggregatorFactory; import org.apache.druid.query.aggregation.DoubleSumAggregatorFactory; @@ -2103,4 +2105,57 @@ public void testCountDistinctNonApproximateWithFilterHaving() ), ImmutableList.of()); } + + @Test + public void testVirtualColumnRegistryReusedInWindowing() + { + cannotVectorize(); + + PlannerConfig withOverrides = PLANNER_CONFIG_DEFAULT.withOverrides( + ImmutableMap.of()); + String sql = " SELECT\n" + + " dim1,\n" + + " dim1 || dim1,\n" + + " length(dim1 || dim1)\n" + + " ,MIN(length(dim1 || dim1)) OVER ()\n" + + " FROM foo\n"; + ImmutableList> of = ImmutableList.of( + GroupByQuery.builder() + .setDataSource( + GroupByQuery.builder() + .setDataSource(CalciteTests.DATASOURCE1) + .setInterval(querySegmentSpec(Filtration.eternity())) + .setGranularity(Granularities.ALL) + .setDimensions( + dimensions( + new DefaultDimensionSpec("v0", "d0", ColumnType.FLOAT))) + .setVirtualColumns( + expressionVirtualColumn("v0", "case_searched((\"m1\" < -1.0),\"m1\",null)", + ColumnType.FLOAT)) + .build()) + .setInterval(querySegmentSpec(Filtration.eternity())) + .setGranularity(Granularities.ALL) + .setHavingSpec(having( + range("a0", ColumnType.LONG, 3L, null, true, false) + )) + .setAggregatorSpecs(aggregators( + useDefault + ? new CountAggregatorFactory("a0") + : new FilteredAggregatorFactory( + new CountAggregatorFactory("a0"), + notNull("d0")))) + .build() + + ); + ImmutableList of2 = ImmutableList.of(); + testBuilder() + .plannerConfig(PLANNER_CONFIG_DEFAULT) + .sql(sql) + .queryContext(ImmutableMap.of( + PlannerContext.CTX_ENABLE_WINDOW_FNS, true, + QueryContexts.ENABLE_DEBUG, true)) + .expectedQueries(of) + .expectedResults(of2) + .run(); + } } diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index e4c07d188e7b..a53554576287 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -22,6 +22,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import org.apache.druid.common.config.NullHandling; import org.apache.druid.jackson.DefaultObjectMapper; @@ -30,6 +31,8 @@ import org.apache.druid.query.Query; import org.apache.druid.query.QueryContexts; import org.apache.druid.query.operator.OperatorFactory; +import org.apache.druid.query.operator.ScanOperator; +import org.apache.druid.query.operator.ScanOperatorFactory; import org.apache.druid.query.operator.WindowOperatorQuery; import org.apache.druid.segment.column.ColumnType; import org.apache.druid.segment.column.RowSignature; @@ -204,9 +207,12 @@ public void windowQueryTest() throws Exception .sql(testCase.getSql()) .queryContext(ImmutableMap.of(PlannerContext.CTX_ENABLE_WINDOW_FNS, true, QueryContexts.ENABLE_DEBUG, true)) + .expectedQueries(ImmutableList.of()) .addCustomVerification(QueryVerification.ofResults(testCase)) .run(); } + Class a = ScanOperator.class; + Class ss = ScanOperatorFactory.class; } private WindowOperatorQuery getWindowOperatorQuery(List> queries) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java b/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java index 0bd1f1305eb9..72aa2667fd30 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java @@ -56,7 +56,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; /** * Runs a test built up by {@link QueryTestBuilder}. Running a SQL query test @@ -402,10 +401,11 @@ private void verifyQuery(QueryResults queryResults) expectedQueries.add(BaseCalciteQueryTest.recursivelyClearContext(query, queryJsonMapper)); } - final List> recordedQueries = queryResults.recordedQueries - .stream() - .map(q -> BaseCalciteQueryTest.recursivelyClearContext(q, queryJsonMapper)) - .collect(Collectors.toList()); +// final List> recordedQueries = queryResults.recordedQueries +// .stream() +// .map(q -> BaseCalciteQueryTest.recursivelyClearContext(q, queryJsonMapper)) +// .collect(Collectors.toList()); + List> recordedQueries = queryResults.recordedQueries; Assert.assertEquals( StringUtils.format("query count: %s", builder.sql), diff --git a/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest b/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest index 967853bd1e39..64ff7d447cd3 100644 --- a/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest @@ -2,9 +2,10 @@ type: "operatorValidation" sql: | SELECT - '_'||dim1, - MIN(cast(0 as double)) OVER (), - MIN(cast((cnt||cnt) as bigint)) OVER () + dim1, + dim1 || dim1, + length(dim1 || dim1), + MIN(length(dim1 || dim1)) OVER () FROM foo expectedOperators: From 7c65c851a07321e95652761ffddc98f8b18f6e59 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Thu, 12 Oct 2023 13:02:11 +0000 Subject: [PATCH 052/100] Revert "reuse test stuff" This reverts commit 56be2b6e3c579c10209871d81fc7b04168d994b1. --- .../sql/calcite/CalciteSelectQueryTest.java | 55 ------------------- .../sql/calcite/CalciteWindowQueryTest.java | 6 -- .../druid/sql/calcite/QueryTestRunner.java | 10 ++-- .../tests/window/virtualColumns.sqlTest | 7 +-- 4 files changed, 8 insertions(+), 70 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteSelectQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteSelectQueryTest.java index 976d6691de5b..a7ad956baee3 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteSelectQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteSelectQueryTest.java @@ -30,8 +30,6 @@ import org.apache.druid.query.Druids; import org.apache.druid.query.InlineDataSource; import org.apache.druid.query.LookupDataSource; -import org.apache.druid.query.Query; -import org.apache.druid.query.QueryContexts; import org.apache.druid.query.QueryDataSource; import org.apache.druid.query.aggregation.CountAggregatorFactory; import org.apache.druid.query.aggregation.DoubleSumAggregatorFactory; @@ -2105,57 +2103,4 @@ public void testCountDistinctNonApproximateWithFilterHaving() ), ImmutableList.of()); } - - @Test - public void testVirtualColumnRegistryReusedInWindowing() - { - cannotVectorize(); - - PlannerConfig withOverrides = PLANNER_CONFIG_DEFAULT.withOverrides( - ImmutableMap.of()); - String sql = " SELECT\n" - + " dim1,\n" - + " dim1 || dim1,\n" - + " length(dim1 || dim1)\n" - + " ,MIN(length(dim1 || dim1)) OVER ()\n" - + " FROM foo\n"; - ImmutableList> of = ImmutableList.of( - GroupByQuery.builder() - .setDataSource( - GroupByQuery.builder() - .setDataSource(CalciteTests.DATASOURCE1) - .setInterval(querySegmentSpec(Filtration.eternity())) - .setGranularity(Granularities.ALL) - .setDimensions( - dimensions( - new DefaultDimensionSpec("v0", "d0", ColumnType.FLOAT))) - .setVirtualColumns( - expressionVirtualColumn("v0", "case_searched((\"m1\" < -1.0),\"m1\",null)", - ColumnType.FLOAT)) - .build()) - .setInterval(querySegmentSpec(Filtration.eternity())) - .setGranularity(Granularities.ALL) - .setHavingSpec(having( - range("a0", ColumnType.LONG, 3L, null, true, false) - )) - .setAggregatorSpecs(aggregators( - useDefault - ? new CountAggregatorFactory("a0") - : new FilteredAggregatorFactory( - new CountAggregatorFactory("a0"), - notNull("d0")))) - .build() - - ); - ImmutableList of2 = ImmutableList.of(); - testBuilder() - .plannerConfig(PLANNER_CONFIG_DEFAULT) - .sql(sql) - .queryContext(ImmutableMap.of( - PlannerContext.CTX_ENABLE_WINDOW_FNS, true, - QueryContexts.ENABLE_DEBUG, true)) - .expectedQueries(of) - .expectedResults(of2) - .run(); - } } diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java index a53554576287..e4c07d188e7b 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteWindowQueryTest.java @@ -22,7 +22,6 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import org.apache.druid.common.config.NullHandling; import org.apache.druid.jackson.DefaultObjectMapper; @@ -31,8 +30,6 @@ import org.apache.druid.query.Query; import org.apache.druid.query.QueryContexts; import org.apache.druid.query.operator.OperatorFactory; -import org.apache.druid.query.operator.ScanOperator; -import org.apache.druid.query.operator.ScanOperatorFactory; import org.apache.druid.query.operator.WindowOperatorQuery; import org.apache.druid.segment.column.ColumnType; import org.apache.druid.segment.column.RowSignature; @@ -207,12 +204,9 @@ public void windowQueryTest() throws Exception .sql(testCase.getSql()) .queryContext(ImmutableMap.of(PlannerContext.CTX_ENABLE_WINDOW_FNS, true, QueryContexts.ENABLE_DEBUG, true)) - .expectedQueries(ImmutableList.of()) .addCustomVerification(QueryVerification.ofResults(testCase)) .run(); } - Class a = ScanOperator.class; - Class ss = ScanOperatorFactory.class; } private WindowOperatorQuery getWindowOperatorQuery(List> queries) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java b/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java index 72aa2667fd30..0bd1f1305eb9 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/QueryTestRunner.java @@ -56,6 +56,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; /** * Runs a test built up by {@link QueryTestBuilder}. Running a SQL query test @@ -401,11 +402,10 @@ private void verifyQuery(QueryResults queryResults) expectedQueries.add(BaseCalciteQueryTest.recursivelyClearContext(query, queryJsonMapper)); } -// final List> recordedQueries = queryResults.recordedQueries -// .stream() -// .map(q -> BaseCalciteQueryTest.recursivelyClearContext(q, queryJsonMapper)) -// .collect(Collectors.toList()); - List> recordedQueries = queryResults.recordedQueries; + final List> recordedQueries = queryResults.recordedQueries + .stream() + .map(q -> BaseCalciteQueryTest.recursivelyClearContext(q, queryJsonMapper)) + .collect(Collectors.toList()); Assert.assertEquals( StringUtils.format("query count: %s", builder.sql), diff --git a/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest b/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest index 64ff7d447cd3..967853bd1e39 100644 --- a/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest @@ -2,10 +2,9 @@ type: "operatorValidation" sql: | SELECT - dim1, - dim1 || dim1, - length(dim1 || dim1), - MIN(length(dim1 || dim1)) OVER () + '_'||dim1, + MIN(cast(0 as double)) OVER (), + MIN(cast((cnt||cnt) as bigint)) OVER () FROM foo expectedOperators: From c5921dca9dbd851da1031ec24e071d94cc9e2f30 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Thu, 12 Oct 2023 13:48:43 +0000 Subject: [PATCH 053/100] par2json updates --- .../data/input/parquet/ParquetToJson.java | 9 ++++++- .../data/input/parquet/ParquetToJsonTest.java | 26 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/ParquetToJson.java b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/ParquetToJson.java index 5cc40df45c2c..dfbf0bc0a201 100644 --- a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/ParquetToJson.java +++ b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/ParquetToJson.java @@ -47,9 +47,16 @@ public static void main(String[] args) throws Exception ParquetGroupConverter converter = new ParquetGroupConverter(true); ObjectMapper mapper = new DefaultObjectMapper(); - File[] inputFiles = new File(args[0]).listFiles( + File dir = new File(args[0]); + if (!dir.isDirectory()) { + throw new IAE("Not a directory [%s]", args[0]); + } + File[] inputFiles = dir.listFiles( pathname -> pathname.getName().endsWith(".parquet") ); + if (inputFiles == null || inputFiles.length == 0) { + throw new IAE("No parquet files in directory [%s]", args[0]); + } for (File inputFile : inputFiles) { File outputFile = new File(inputFile.getAbsolutePath() + ".json"); diff --git a/extensions-core/parquet-extensions/src/test/java/org/apache/druid/data/input/parquet/ParquetToJsonTest.java b/extensions-core/parquet-extensions/src/test/java/org/apache/druid/data/input/parquet/ParquetToJsonTest.java index dd191e36dd14..3ee0977a7d2f 100644 --- a/extensions-core/parquet-extensions/src/test/java/org/apache/druid/data/input/parquet/ParquetToJsonTest.java +++ b/extensions-core/parquet-extensions/src/test/java/org/apache/druid/data/input/parquet/ParquetToJsonTest.java @@ -33,6 +33,9 @@ import java.nio.file.Files; import java.util.List; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + @SuppressWarnings("ALL") public class ParquetToJsonTest { @@ -76,4 +79,27 @@ public void testInputValidation() Assert.assertThrows(IAE.class, () -> ParquetToJson.main(new String[]{})); Assert.assertThrows(IAE.class, () -> ParquetToJson.main(new String[]{"a", "b"})); } + + @Test + public void testEmptyDir() throws Exception + { + final File tmpDir = tmp.newFolder(); + Assert.assertThrows(IAE.class, () -> ParquetToJson.main(new String[] {tmpDir.getAbsolutePath()})); + } + + @Test + public void testSomeFile() throws Exception + { + final File file = tmp.newFile(); + assertTrue(file.exists()); + Assert.assertThrows(IAE.class, () -> ParquetToJson.main(new String[] {file.getAbsolutePath()})); + } + + @Test + public void testNonExistentFile() throws Exception + { + final File file = new File(tmp.getRoot(), "nonExistent"); + assertFalse(file.exists()); + Assert.assertThrows(IAE.class, () -> ParquetToJson.main(new String[] {file.getAbsolutePath()})); + } } From ab166feef01e18e26028d4418e4779dd78095b6b Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Thu, 12 Oct 2023 16:30:06 +0000 Subject: [PATCH 054/100] change stuff --- extensions-core/parquet-extensions/pom.xml | 2 +- .../data/input/parquet/ParquetToJson.java | 65 ++++++++++++++----- .../parquet/simple/ParquetGroupConverter.java | 46 ++++++------- .../simple/ParquetGroupFlattenerMaker.java | 2 +- 4 files changed, 75 insertions(+), 40 deletions(-) diff --git a/extensions-core/parquet-extensions/pom.xml b/extensions-core/parquet-extensions/pom.xml index 4951c1c49e8d..14c524d70a5a 100644 --- a/extensions-core/parquet-extensions/pom.xml +++ b/extensions-core/parquet-extensions/pom.xml @@ -33,7 +33,7 @@ 4.0.0 - 1.12.0 + 1.13.1 diff --git a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/ParquetToJson.java b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/ParquetToJson.java index dfbf0bc0a201..b735e5c7dda3 100644 --- a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/ParquetToJson.java +++ b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/ParquetToJson.java @@ -21,6 +21,11 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SequenceWriter; +import com.github.rvesse.airline.Cli; +import com.github.rvesse.airline.annotations.Arguments; +import com.github.rvesse.airline.annotations.Option; +import com.github.rvesse.airline.builder.CliBuilder; +import com.github.rvesse.airline.help.Help; import org.apache.druid.data.input.parquet.simple.ParquetGroupConverter; import org.apache.druid.jackson.DefaultObjectMapper; import org.apache.druid.java.util.common.IAE; @@ -29,34 +34,61 @@ import org.apache.parquet.hadoop.example.GroupReadSupport; import java.io.File; +import java.util.List; +import java.util.concurrent.Callable; /** - * Converts parquet files into new-deliminated JSON object files. Takes a single argument (an input directory) - * and processes all files that end with a ".parquet" extension. Writes out a new file in the same directory named - * by appending ".json" to the old file name. Will overwrite any output file that already exists. + * Converts parquet files into new-deliminated JSON object files. Takes a single + * argument (an input directory) and processes all files that end with a + * ".parquet" extension. Writes out a new file in the same directory named by + * appending ".json" to the old file name. Will overwrite any output file that + * already exists. */ -public class ParquetToJson +public class ParquetToJson implements Callable { + @Arguments(description = "directory") + public List directories; + + @Option(name = "convert-corrupt-dates") + public boolean convertCorruptDates = false; + public static void main(String[] args) throws Exception { - if (args.length != 1) { - throw new IAE("Usage: directory"); - } + CliBuilder builder = Cli.builder("ParquetToJson"); - ParquetGroupConverter converter = new ParquetGroupConverter(true); - ObjectMapper mapper = new DefaultObjectMapper(); + builder + .withDefaultCommand(Help.class) + .withCommand(ParquetToJson.class); - File dir = new File(args[0]); + builder.build().parse(args).call(); + } + + private File[] getInputFiles() + { + if (directories.size() != 1) { + throw new IAE("Only one directory argument is supported!"); + } + + File dir = new File(directories.get(0)); if (!dir.isDirectory()) { - throw new IAE("Not a directory [%s]", args[0]); + throw new IAE("Not a directory [%s]", dir); } File[] inputFiles = dir.listFiles( - pathname -> pathname.getName().endsWith(".parquet") - ); + pathname -> pathname.getName().endsWith(".parquet")); if (inputFiles == null || inputFiles.length == 0) { - throw new IAE("No parquet files in directory [%s]", args[0]); + throw new IAE("No parquet files in directory [%s]", dir); } + return inputFiles; + } + + @Override + public Void call() throws Exception + { + ObjectMapper mapper = new DefaultObjectMapper(); + + File[] inputFiles = getInputFiles(); + for (File inputFile : inputFiles) { File outputFile = new File(inputFile.getAbsolutePath() + ".json"); @@ -64,13 +96,14 @@ public static void main(String[] args) throws Exception final org.apache.parquet.hadoop.ParquetReader reader = org.apache.parquet.hadoop.ParquetReader .builder(new GroupReadSupport(), new Path(inputFile.toURI())) .build(); - final SequenceWriter writer = mapper.writer().withRootValueSeparator("\n").writeValues(outputFile) - ) { + final SequenceWriter writer = mapper.writer().withRootValueSeparator("\n").writeValues(outputFile)) { + ParquetGroupConverter converter = new ParquetGroupConverter(true, convertCorruptDates); Group group; while ((group = reader.read()) != null) { writer.write(converter.convertGroup(group)); } } } + return null; } } diff --git a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java index d2bd643304a3..3ea60af886d2 100644 --- a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java +++ b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java @@ -55,7 +55,7 @@ public class ParquetGroupConverter * See {@link ParquetGroupConverter#convertField(Group, String)} */ @Nullable - private static Object convertField(Group g, String fieldName, boolean binaryAsString) + private Object convertField(Group g, String fieldName, boolean binaryAsString) { if (!g.getType().containsField(fieldName)) { return null; @@ -76,22 +76,22 @@ private static Object convertField(Group g, String fieldName, boolean binaryAsSt int repeated = g.getFieldRepetitionCount(fieldIndex); List vals = new ArrayList<>(); for (int i = 0; i < repeated; i++) { - vals.add(convertPrimitiveField(g, fieldIndex, i, binaryAsString)); + vals.add(convertPrimitiveField(g, fieldIndex, i)); } return vals; } - return convertPrimitiveField(g, fieldIndex, binaryAsString); + return convertPrimitiveField(g, fieldIndex); } else { if (fieldType.isRepetition(Type.Repetition.REPEATED)) { - return convertRepeatedFieldToList(g, fieldIndex, binaryAsString); + return convertRepeatedFieldToList(g, fieldIndex); } if (isLogicalMapType(fieldType)) { - return convertLogicalMap(g.getGroup(fieldIndex, 0), binaryAsString); + return convertLogicalMap(g.getGroup(fieldIndex, 0)); } if (isLogicalListType(fieldType)) { - return convertLogicalList(g.getGroup(fieldIndex, 0), binaryAsString); + return convertLogicalList(g.getGroup(fieldIndex, 0)); } // not a list, but not a primitive, return the nested group type @@ -102,7 +102,7 @@ private static Object convertField(Group g, String fieldName, boolean binaryAsSt /** * convert a repeated field into a list of primitives or groups */ - private static List convertRepeatedFieldToList(Group g, int fieldIndex, boolean binaryAsString) + private List convertRepeatedFieldToList(Group g, int fieldIndex) { Type t = g.getType().getFields().get(fieldIndex); @@ -111,7 +111,7 @@ private static List convertRepeatedFieldToList(Group g, int fieldIndex, List vals = new ArrayList<>(); for (int i = 0; i < repeated; i++) { if (t.isPrimitive()) { - vals.add(convertPrimitiveField(g, fieldIndex, i, binaryAsString)); + vals.add(convertPrimitiveField(g, fieldIndex, i)); } else { vals.add(g.getGroup(fieldIndex, i)); } @@ -134,7 +134,7 @@ private static boolean isLogicalListType(Type listType) /** * convert a parquet 'list' logical type {@link Group} to a java list of primitives or groups */ - private static List convertLogicalList(Group g, boolean binaryAsString) + private List convertLogicalList(Group g) { /* // List (nullable list, non-null elements) @@ -181,16 +181,16 @@ optional group my_list (LIST) { for (int i = 0; i < repeated; i++) { if (isListItemPrimitive) { - vals.add(convertPrimitiveField(g, 0, i, binaryAsString)); + vals.add(convertPrimitiveField(g, 0, i)); } else { Group listItem = g.getGroup(0, i); - vals.add(convertListElement(listItem, binaryAsString)); + vals.add(convertListElement(listItem)); } } return vals; } - private static Object convertListElement(Group listItem, boolean binaryAsString) + private Object convertListElement(Group listItem) { if ( listItem.getType().isRepetition(Type.Repetition.REPEATED) && @@ -199,7 +199,7 @@ private static Object convertListElement(Group listItem, boolean binaryAsString) listItem.getType().getFields().get(0).isPrimitive() ) { // nullable primitive list elements can have a repeating wrapper element, peel it off - return convertPrimitiveField(listItem, 0, binaryAsString); + return convertPrimitiveField(listItem, 0); } else if ( listItem.getType().isRepetition(Type.Repetition.REPEATED) && listItem.getType().getFieldCount() == 1 && @@ -244,7 +244,7 @@ private static boolean isLogicalMapType(Type groupType) /** * Convert a parquet 'map' logical type {@link Group} to a java map of string keys to groups/lists/primitive values */ - private static Map convertLogicalMap(Group g, boolean binaryAsString) + private Map convertLogicalMap(Group g) { /* // Map (nullable map, non-null values) @@ -268,7 +268,7 @@ optional group my_map (MAP_KEY_VALUE) {( Map converted = new HashMap<>(); for (int i = 0; i < mapEntries; i++) { Group mapEntry = g.getGroup(0, i); - String key = convertPrimitiveField(mapEntry, 0, binaryAsString).toString(); + String key = convertPrimitiveField(mapEntry, 0).toString(); Object value = convertField(mapEntry, "value", binaryAsString); converted.put(key, value); } @@ -281,17 +281,17 @@ optional group my_map (MAP_KEY_VALUE) {( * @return "ingestion ready" java object, or null */ @Nullable - private static Object convertPrimitiveField(Group g, int fieldIndex, boolean binaryAsString) + private Object convertPrimitiveField(Group g, int fieldIndex) { PrimitiveType pt = (PrimitiveType) g.getType().getFields().get(fieldIndex); if (pt.isRepetition(Type.Repetition.REPEATED) && g.getFieldRepetitionCount(fieldIndex) > 1) { List vals = new ArrayList<>(); for (int i = 0; i < g.getFieldRepetitionCount(fieldIndex); i++) { - vals.add(convertPrimitiveField(g, fieldIndex, i, binaryAsString)); + vals.add(convertPrimitiveField(g, fieldIndex, i)); } return vals; } - return convertPrimitiveField(g, fieldIndex, 0, binaryAsString); + return convertPrimitiveField(g, fieldIndex, 0); } /** @@ -300,7 +300,7 @@ private static Object convertPrimitiveField(Group g, int fieldIndex, boolean bin * @return "ingestion ready" java object, or null */ @Nullable - private static Object convertPrimitiveField(Group g, int fieldIndex, int index, boolean binaryAsString) + private Object convertPrimitiveField(Group g, int fieldIndex, int index) { PrimitiveType pt = (PrimitiveType) g.getType().getFields().get(fieldIndex); OriginalType ot = pt.getOriginalType(); @@ -492,10 +492,12 @@ private static BigDecimal convertBinaryToDecimal(Binary value, int precision, in } private final boolean binaryAsString; + private final boolean convertCorruptDates; - public ParquetGroupConverter(boolean binaryAsString) + public ParquetGroupConverter(boolean binaryAsString, boolean convertCorruptDates) { this.binaryAsString = binaryAsString; + this.convertCorruptDates = convertCorruptDates; } /** @@ -526,14 +528,14 @@ public Object convertGroup(Group g) @Nullable Object convertField(Group g, String fieldName) { - return convertField(g, fieldName, binaryAsString); + return convertField(g, fieldName); } Object unwrapListElement(Object o) { if (o instanceof Group) { Group g = (Group) o; - return convertListElement(g, binaryAsString); + return convertListElement(g); } return o; } diff --git a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupFlattenerMaker.java b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupFlattenerMaker.java index a243107cc238..abf6f6ed1aea 100644 --- a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupFlattenerMaker.java +++ b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupFlattenerMaker.java @@ -45,7 +45,7 @@ public class ParquetGroupFlattenerMaker implements ObjectFlatteners.FlattenerMak public ParquetGroupFlattenerMaker(boolean binaryAsString, boolean discoverNestedFields) { - this.converter = new ParquetGroupConverter(binaryAsString); + this.converter = new ParquetGroupConverter(binaryAsString, false); this.parquetJsonProvider = new ParquetGroupJsonProvider(converter); this.jsonPathConfiguration = Configuration.builder() .jsonProvider(parquetJsonProvider) From b5d385ae947525bc8c703c331a8e650e51766bc3 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Thu, 12 Oct 2023 16:31:23 +0000 Subject: [PATCH 055/100] remove method --- .../parquet/simple/ParquetGroupConverter.java | 23 ++++++------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java index 3ea60af886d2..eb93b2f89ebc 100644 --- a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java +++ b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java @@ -52,10 +52,14 @@ public class ParquetGroupConverter private static final long NANOS_PER_MILLISECOND = TimeUnit.MILLISECONDS.toNanos(1); /** - * See {@link ParquetGroupConverter#convertField(Group, String)} + * Convert a parquet group field as though it were a map. Logical types of 'list' and 'map' will be transformed + * into java lists and maps respectively ({@link ParquetGroupConverter#convertLogicalList} and + * {@link ParquetGroupConverter#convertLogicalMap}), repeated fields will also be translated to lists, and + * primitive types will be extracted into an ingestion friendly state (e.g. 'int' and 'long'). Finally, + * if a field is not present, this method will return null. */ @Nullable - private Object convertField(Group g, String fieldName, boolean binaryAsString) + Object convertField(Group g, String fieldName) { if (!g.getType().containsField(fieldName)) { return null; @@ -269,7 +273,7 @@ optional group my_map (MAP_KEY_VALUE) {( for (int i = 0; i < mapEntries; i++) { Group mapEntry = g.getGroup(0, i); String key = convertPrimitiveField(mapEntry, 0).toString(); - Object value = convertField(mapEntry, "value", binaryAsString); + Object value = convertField(mapEntry, "value"); converted.put(key, value); } return converted; @@ -518,19 +522,6 @@ public Object convertGroup(Group g) return retVal; } - /** - * Convert a parquet group field as though it were a map. Logical types of 'list' and 'map' will be transformed - * into java lists and maps respectively ({@link ParquetGroupConverter#convertLogicalList} and - * {@link ParquetGroupConverter#convertLogicalMap}), repeated fields will also be translated to lists, and - * primitive types will be extracted into an ingestion friendly state (e.g. 'int' and 'long'). Finally, - * if a field is not present, this method will return null. - */ - @Nullable - Object convertField(Group g, String fieldName) - { - return convertField(g, fieldName); - } - Object unwrapListElement(Object o) { if (o instanceof Group) { From 6a4cdea12fefbb745c95586f42f9b6b9d5738652 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Thu, 12 Oct 2023 16:41:39 +0000 Subject: [PATCH 056/100] updates --- .../data/input/parquet/ParquetToJson.java | 16 ++++------ .../parquet/simple/ParquetGroupConverter.java | 16 +++++++++- .../data/input/parquet/ParquetToJsonTest.java | 32 +++++++++++++++++++ 3 files changed, 54 insertions(+), 10 deletions(-) diff --git a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/ParquetToJson.java b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/ParquetToJson.java index b735e5c7dda3..301c6e15eee7 100644 --- a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/ParquetToJson.java +++ b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/ParquetToJson.java @@ -23,9 +23,9 @@ import com.fasterxml.jackson.databind.SequenceWriter; import com.github.rvesse.airline.Cli; import com.github.rvesse.airline.annotations.Arguments; +import com.github.rvesse.airline.annotations.Command; import com.github.rvesse.airline.annotations.Option; import com.github.rvesse.airline.builder.CliBuilder; -import com.github.rvesse.airline.help.Help; import org.apache.druid.data.input.parquet.simple.ParquetGroupConverter; import org.apache.druid.jackson.DefaultObjectMapper; import org.apache.druid.java.util.common.IAE; @@ -44,29 +44,27 @@ * appending ".json" to the old file name. Will overwrite any output file that * already exists. */ +@Command(name="ParquetToJson") public class ParquetToJson implements Callable { + @Option(name = "--convert-corrupt-dates") + public boolean convertCorruptDates = false; + @Arguments(description = "directory") public List directories; - @Option(name = "convert-corrupt-dates") - public boolean convertCorruptDates = false; public static void main(String[] args) throws Exception { CliBuilder builder = Cli.builder("ParquetToJson"); - - builder - .withDefaultCommand(Help.class) - .withCommand(ParquetToJson.class); - + builder.withDefaultCommand(ParquetToJson.class); builder.build().parse(args).call(); } private File[] getInputFiles() { - if (directories.size() != 1) { + if (directories == null || directories.size() != 1) { throw new IAE("Only one directory argument is supported!"); } diff --git a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java index eb93b2f89ebc..4831e9bf3290 100644 --- a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java +++ b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java @@ -314,7 +314,7 @@ private Object convertPrimitiveField(Group g, int fieldIndex, int index) // convert logical types switch (ot) { case DATE: - long ts = g.getInteger(fieldIndex, index) * MILLIS_IN_DAY; + long ts = convertDateToMillis(g.getInteger(fieldIndex, index)); return ts; case TIME_MICROS: return g.getLong(fieldIndex, index); @@ -447,6 +447,20 @@ private Object convertPrimitiveField(Group g, int fieldIndex, int index) } } + /** + * https://github.com/apache/drill/blob/2ab46a9411a52f12a0f9acb1144a318059439bc4/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetReaderUtility.java#L89 + */ + public static final long JULIAN_DAY_NUMBER_FOR_UNIX_EPOCH = 2440588; + public static final long CORRECT_CORRUPT_DATE_SHIFT = 2 * JULIAN_DAY_NUMBER_FOR_UNIX_EPOCH; + + private long convertDateToMillis(int value) + { + if(convertCorruptDates) { + value -= CORRECT_CORRUPT_DATE_SHIFT; + } + return value * MILLIS_IN_DAY; + } + /** * convert deprecated parquet int96 nanosecond timestamp to a long, based on * https://github.com/prestodb/presto/blob/master/presto-parquet/src/main/java/com/facebook/presto/parquet/ParquetTimestampUtils.java#L44 diff --git a/extensions-core/parquet-extensions/src/test/java/org/apache/druid/data/input/parquet/ParquetToJsonTest.java b/extensions-core/parquet-extensions/src/test/java/org/apache/druid/data/input/parquet/ParquetToJsonTest.java index 3ee0977a7d2f..ed0c5b3a9181 100644 --- a/extensions-core/parquet-extensions/src/test/java/org/apache/druid/data/input/parquet/ParquetToJsonTest.java +++ b/extensions-core/parquet-extensions/src/test/java/org/apache/druid/data/input/parquet/ParquetToJsonTest.java @@ -73,6 +73,38 @@ public void testSanity() throws Exception ); } + @Test + public void testConvertedDates() throws Exception + { + final File tmpDir = tmp.newFolder(); + try (InputStream in = new BufferedInputStream(ClassLoader.getSystemResourceAsStream("smlTbl.parquet"))) { + Files.copy(in, tmpDir.toPath().resolve("smlTbl.parquet")); + } + + ParquetToJson.main(new String[]{"--convert-corrupt-dates", tmpDir.toString()}); + + DefaultObjectMapper mapper = DefaultObjectMapper.INSTANCE; + List objs = mapper.readerFor(Object.class).readValues(new File(tmpDir, "smlTbl.parquet.json")).readAll(); + + Assert.assertEquals(56, objs.size()); + Assert.assertEquals( + ImmutableMap + .builder() + .put("col_int", 8122) + .put("col_bgint", 817200) + .put("col_char_2", "IN") + .put("col_vchar_52", "AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB") + .put("col_tmstmp", 1409617682418L) + .put("col_dt", 984009600000L) + .put("col_booln", false) + .put("col_dbl", 12900.48) + .put("col_tm", 33109170) + .build(), + objs.get(0) + ); + } + + @Test public void testInputValidation() { From 029865fae11b3f4c081f31a2de0e23e8e79a3fdb Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Fri, 13 Oct 2023 05:53:04 +0000 Subject: [PATCH 057/100] update json-s; remove ignore some tests --- .../sql/calcite/DrillWindowQueryTest.java | 28 -- .../datasources/allTypsUniq.parquet.json | 44 +-- .../datasources/fewRowsAllData.parquet.json | 156 +++++----- .../datasources/forViewCrn.parquet.json | 60 ++-- .../window/datasources/smlTbl.parquet.json | 112 +++---- .../window/datasources/t_alltype.parquet.json | 284 +++++++++--------- 6 files changed, 328 insertions(+), 356 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java index 8097377d09c8..2e987a64ab7a 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java @@ -6504,7 +6504,6 @@ public void test_aggregates_wo_OrdrBy_21() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/wo_OrdrBy_22") @Test public void test_aggregates_wo_OrdrBy_22() @@ -6512,7 +6511,6 @@ public void test_aggregates_wo_OrdrBy_22() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/wo_OrdrBy_23") @Test public void test_aggregates_wo_OrdrBy_23() @@ -6520,7 +6518,6 @@ public void test_aggregates_wo_OrdrBy_23() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/wo_OrdrBy_24") @Test public void test_aggregates_wo_OrdrBy_24() @@ -6528,7 +6525,6 @@ public void test_aggregates_wo_OrdrBy_24() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/wo_OrdrBy_25") @Test public void test_aggregates_wo_OrdrBy_25() @@ -6536,7 +6532,6 @@ public void test_aggregates_wo_OrdrBy_25() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/wo_OrdrBy_26") @Test public void test_aggregates_wo_OrdrBy_26() @@ -6688,7 +6683,6 @@ public void test_first_val_firstValFn_17() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("first_val/firstValFn_23") @Test public void test_first_val_firstValFn_23() @@ -7000,7 +6994,6 @@ public void test_frameclause_RBCRACR_RBCRACR_dbl_7() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("frameclause/RBCRACR/RBCRACR_dt_1") @Test public void test_frameclause_RBCRACR_RBCRACR_dt_1() @@ -7008,7 +7001,6 @@ public void test_frameclause_RBCRACR_RBCRACR_dt_1() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("frameclause/RBCRACR/RBCRACR_dt_2") @Test public void test_frameclause_RBCRACR_RBCRACR_dt_2() @@ -7272,7 +7264,6 @@ public void test_frameclause_RBUPAUF_RBUPAUF_dbl_7() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("frameclause/RBUPAUF/RBUPAUF_dt_1") @Test public void test_frameclause_RBUPAUF_RBUPAUF_dt_1() @@ -7280,7 +7271,6 @@ public void test_frameclause_RBUPAUF_RBUPAUF_dt_1() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("frameclause/RBUPAUF/RBUPAUF_dt_2") @Test public void test_frameclause_RBUPAUF_RBUPAUF_dt_2() @@ -7296,7 +7286,6 @@ public void test_frameclause_RBUPAUF_RBUPAUF_dt_4() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("frameclause/RBUPAUF/RBUPAUF_dt_5") @Test public void test_frameclause_RBUPAUF_RBUPAUF_dt_5() @@ -7408,7 +7397,6 @@ public void test_frameclause_subQueries_frmInSubQry_64() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("lag_func/lag_Fn_101") @Test public void test_lag_func_lag_Fn_101() @@ -7416,7 +7404,6 @@ public void test_lag_func_lag_Fn_101() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("lag_func/lag_Fn_6") @Test public void test_lag_func_lag_Fn_6() @@ -7584,7 +7571,6 @@ public void test_last_val_lastValFn_9() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("lead_func/lead_Fn_33") @Test public void test_lead_func_lead_Fn_33() @@ -7592,7 +7578,6 @@ public void test_lead_func_lead_Fn_33() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("lead_func/lead_Fn_42") @Test public void test_lead_func_lead_Fn_42() @@ -7600,7 +7585,6 @@ public void test_lead_func_lead_Fn_42() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("lead_func/lead_Fn_51") @Test public void test_lead_func_lead_Fn_51() @@ -7616,7 +7600,6 @@ public void test_lead_func_lead_Fn_54() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("lead_func/lead_Fn_60") @Test public void test_lead_func_lead_Fn_60() @@ -7632,7 +7615,6 @@ public void test_lead_func_lead_Fn_63() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("lead_func/lead_Fn_6") @Test public void test_lead_func_lead_Fn_6() @@ -7640,7 +7622,6 @@ public void test_lead_func_lead_Fn_6() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("lead_func/lead_Fn_77") @Test public void test_lead_func_lead_Fn_77() @@ -7656,7 +7637,6 @@ public void test_lead_func_lead_Fn_90() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("lead_func/lead_Fn_96") @Test public void test_lead_func_lead_Fn_96() @@ -7688,7 +7668,6 @@ public void test_nestedAggs_basic_5() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("nestedAggs/basic_7") @Test public void test_nestedAggs_basic_7() @@ -7775,7 +7754,6 @@ public void test_ntile_func_ntileFn_15() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("ntile_func/ntileFn_17") @Test public void test_ntile_func_ntileFn_17() @@ -7783,7 +7761,6 @@ public void test_ntile_func_ntileFn_17() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("ntile_func/ntileFn_27") @Test public void test_ntile_func_ntileFn_27() @@ -7807,7 +7784,6 @@ public void test_ntile_func_ntileFn_59() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("ntile_func/ntileFn_7") @Test public void test_ntile_func_ntileFn_7() @@ -7919,7 +7895,6 @@ public void test_frameclause_RBUPACR_RBUPACR_int9() windowQueryTest(); } - @NotYetSupported(Modes.T_ALLTYPES_ISSUES) @DrillTest("lag_func/lag_Fn_33") @Test public void test_lag_func_lag_Fn_33() @@ -7927,7 +7902,6 @@ public void test_lag_func_lag_Fn_33() windowQueryTest(); } - @NotYetSupported(Modes.T_ALLTYPES_ISSUES) @DrillTest("lag_func/lag_Fn_51") @Test public void test_lag_func_lag_Fn_51() @@ -7935,7 +7909,6 @@ public void test_lag_func_lag_Fn_51() windowQueryTest(); } - @NotYetSupported(Modes.T_ALLTYPES_ISSUES) @DrillTest("lag_func/lag_Fn_60") @Test public void test_lag_func_lag_Fn_60() @@ -7959,7 +7932,6 @@ public void test_lag_func_lag_Fn_95() windowQueryTest(); } - @NotYetSupported(Modes.T_ALLTYPES_ISSUES) @DrillTest("nestedAggs/frmclause03") @Test public void test_nestedAggs_frmclause03() diff --git a/sql/src/test/resources/drill/window/datasources/allTypsUniq.parquet.json b/sql/src/test/resources/drill/window/datasources/allTypsUniq.parquet.json index abfffddc411e..f675bb0721d9 100644 --- a/sql/src/test/resources/drill/window/datasources/allTypsUniq.parquet.json +++ b/sql/src/test/resources/drill/window/datasources/allTypsUniq.parquet.json @@ -1,22 +1,22 @@ -{"col0":1,"col1":65534,"col2":256.0,"col3":1234.9,"col4":73578580,"col5":1393720082338,"col6":421185052800000,"col7":false,"col8":"CA","col9":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXZ"} -{"col0":2,"col1":10000000,"col2":-256.0,"col3":11.0,"col4":39598119,"col5":1388622482228,"col6":422086982400000,"col7":true,"col8":"WI","col9":"BXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXD"} -{"col0":3,"col1":-1,"col2":255.9993,"col3":0.0,"col4":82189300,"col5":1409617682616,"col6":422680464000000,"col7":false,"col8":"NY","col9":"CXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} -{"col0":4,"col1":0,"col2":128.9,"col3":1.0,"col4":77989310,"col5":1422836882404,"col6":421019078400000,"col7":true,"col8":"AZ","col9":"DXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} -{"col0":5,"col1":1,"col2":-128.0,"col3":-1.0,"col4":74969310,"col5":1404260882309,"col6":422434137600000,"col7":false,"col8":"TX","col9":"HXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXZ"} -{"col0":6,"col1":13,"col2":32.9,"col3":256.9,"col4":77761240,"col5":481249682638,"col6":422546803200000,"col7":true,"col8":"CO","col9":"IXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXD"} -{"col0":7,"col1":17,"col2":-33.0,"col3":33.9,"col4":47593130,"col5":1146529682748,"col6":422457724800000,"col7":false,"col8":"IA","col9":"UXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} -{"col0":8,"col1":23,"col2":13.79,"col3":-1.1,"col4":43932120,"col5":1117672082321,"col6":421673299200000,"col7":true,"col8":"SD","col9":"YXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} -{"col0":9,"col1":1000,"col2":29.13,"col3":0.9,"col4":54613101,"col5":-612747117889,"col6":422199820800000,"col7":false,"col8":"RI","col9":"TXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXD"} -{"col0":10,"col1":9999999,"col2":100.09,"col3":10000.0,"col4":85535120,"col5":-710119917582,"col6":420884294400000,"col7":true,"col8":"FL","col9":"EXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXZ"} -{"col0":2147483647,"col1":30,"col2":123.129,"col3":512.999,"col4":79322101,"col5":107828882418,"col6":422596656000000,"col7":false,"col8":"IN","col9":"WXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} -{"col0":65535,"col1":25,"col2":255.99,"col3":11111.11,"col4":84210222,"col5":707444882418,"col6":421353014400000,"col7":true,"col8":"MN","col9":"FXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} -{"col0":1073741823,"col1":1001,"col2":128.978,"col3":131313.19,"col4":59745100,"col5":770516882418,"col6":423167155200000,"col7":false,"col8":"MA","col9":"MXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} -{"col0":-1,"col1":-65535,"col2":13.9,"col3":10000.09,"col4":69885200,"col5":959905682418,"col6":423153676800000,"col7":true,"col8":"VT","col9":"KXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} -{"col0":-65535,"col1":5000,"col2":127.0,"col3":127.99,"col4":73220300,"col5":1022977682418,"col6":423132854400000,"col7":false,"col8":"NJ","col9":"OXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} -{"col0":10000000,"col1":3000,"col2":127.9,"col3":65534.99,"col4":55230230,"col5":1054513682418,"col6":423090777600000,"col7":true,"col8":"OR","col9":"QXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXZ"} -{"col0":13,"col1":200,"col2":1.0,"col3":-65534.0,"col4":69630500,"col5":1086136082418,"col6":421804713600000,"col7":false,"col8":"GA","col9":"PXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXD"} -{"col0":19,"col1":197,"col2":0.0,"col3":12345.987,"col4":62060100,"col5":1275438482118,"col6":422335987200000,"col7":true,"col8":"WY","col9":"LXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} -{"col0":29,"col1":4611686018427387903,"col2":-1.0,"col3":100.9,"col4":58576160,"col5":1306974482218,"col6":421473196800000,"col7":false,"col8":"NC","col9":"NXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} -{"col0":23,"col1":9223372036854775806,"col2":99.9,"col3":303.12,"col4":70230300,"col5":1338596882418,"col6":422924803200000,"col7":true,"col8":"SC","col9":"SXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} -{"col0":0,"col1":9223372036854775807,"col2":63.99,"col3":9898.68,"col4":80611100,"col5":1370132882318,"col6":422613849600000,"col7":false,"col8":"KS","col9":"ZXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXZ"} -{"col0":109,"col1":92233720385475807,"col2":69.89,"col3":9798.68,"col4":81210180,"col5":1438547282318,"col6":422648928000000,"col7":true,"col8":"NE","col9":"VXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXZ"} \ No newline at end of file +{"col0":1,"col1":65534,"col2":256.0,"col3":1234.9,"col4":73578580,"col5":1393720082338,"col6":-548553600000,"col7":false,"col8":"CA","col9":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXZ"} +{"col0":2,"col1":10000000,"col2":-256.0,"col3":11.0,"col4":39598119,"col5":1388622482228,"col6":353376000000,"col7":true,"col8":"WI","col9":"BXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXD"} +{"col0":3,"col1":-1,"col2":255.9993,"col3":0.0,"col4":82189300,"col5":1409617682616,"col6":946857600000,"col7":false,"col8":"NY","col9":"CXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} +{"col0":4,"col1":0,"col2":128.9,"col3":1.0,"col4":77989310,"col5":1422836882404,"col6":-714528000000,"col7":true,"col8":"AZ","col9":"DXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} +{"col0":5,"col1":1,"col2":-128.0,"col3":-1.0,"col4":74969310,"col5":1404260882309,"col6":700531200000,"col7":false,"col8":"TX","col9":"HXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXZ"} +{"col0":6,"col1":13,"col2":32.9,"col3":256.9,"col4":77761240,"col5":481249682638,"col6":813196800000,"col7":true,"col8":"CO","col9":"IXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXD"} +{"col0":7,"col1":17,"col2":-33.0,"col3":33.9,"col4":47593130,"col5":1146529682748,"col6":724118400000,"col7":false,"col8":"IA","col9":"UXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} +{"col0":8,"col1":23,"col2":13.79,"col3":-1.1,"col4":43932120,"col5":1117672082321,"col6":-60307200000,"col7":true,"col8":"SD","col9":"YXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} +{"col0":9,"col1":1000,"col2":29.13,"col3":0.9,"col4":54613101,"col5":-612747117889,"col6":466214400000,"col7":false,"col8":"RI","col9":"TXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXD"} +{"col0":10,"col1":9999999,"col2":100.09,"col3":10000.0,"col4":85535120,"col5":-710119917582,"col6":-849312000000,"col7":true,"col8":"FL","col9":"EXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXZ"} +{"col0":2147483647,"col1":30,"col2":123.129,"col3":512.999,"col4":79322101,"col5":107828882418,"col6":863049600000,"col7":false,"col8":"IN","col9":"WXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} +{"col0":65535,"col1":25,"col2":255.99,"col3":11111.11,"col4":84210222,"col5":707444882418,"col6":-380592000000,"col7":true,"col8":"MN","col9":"FXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} +{"col0":1073741823,"col1":1001,"col2":128.978,"col3":131313.19,"col4":59745100,"col5":770516882418,"col6":1433548800000,"col7":false,"col8":"MA","col9":"MXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} +{"col0":-1,"col1":-65535,"col2":13.9,"col3":10000.09,"col4":69885200,"col5":959905682418,"col6":1420070400000,"col7":true,"col8":"VT","col9":"KXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} +{"col0":-65535,"col1":5000,"col2":127.0,"col3":127.99,"col4":73220300,"col5":1022977682418,"col6":1399248000000,"col7":false,"col8":"NJ","col9":"OXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} +{"col0":10000000,"col1":3000,"col2":127.9,"col3":65534.99,"col4":55230230,"col5":1054513682418,"col6":1357171200000,"col7":true,"col8":"OR","col9":"QXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXZ"} +{"col0":13,"col1":200,"col2":1.0,"col3":-65534.0,"col4":69630500,"col5":1086136082418,"col6":71107200000,"col7":false,"col8":"GA","col9":"PXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXD"} +{"col0":19,"col1":197,"col2":0.0,"col3":12345.987,"col4":62060100,"col5":1275438482118,"col6":602380800000,"col7":true,"col8":"WY","col9":"LXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} +{"col0":29,"col1":4611686018427387903,"col2":-1.0,"col3":100.9,"col4":58576160,"col5":1306974482218,"col6":-260409600000,"col7":false,"col8":"NC","col9":"NXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} +{"col0":23,"col1":9223372036854775806,"col2":99.9,"col3":303.12,"col4":70230300,"col5":1338596882418,"col6":1191196800000,"col7":true,"col8":"SC","col9":"SXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB"} +{"col0":0,"col1":9223372036854775807,"col2":63.99,"col3":9898.68,"col4":80611100,"col5":1370132882318,"col6":880243200000,"col7":false,"col8":"KS","col9":"ZXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXZ"} +{"col0":109,"col1":92233720385475807,"col2":69.89,"col3":9798.68,"col4":81210180,"col5":1438547282318,"col6":915321600000,"col7":true,"col8":"NE","col9":"VXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXZ"} \ No newline at end of file diff --git a/sql/src/test/resources/drill/window/datasources/fewRowsAllData.parquet.json b/sql/src/test/resources/drill/window/datasources/fewRowsAllData.parquet.json index 2dffec37526c..79a2193e36fe 100644 --- a/sql/src/test/resources/drill/window/datasources/fewRowsAllData.parquet.json +++ b/sql/src/test/resources/drill/window/datasources/fewRowsAllData.parquet.json @@ -1,78 +1,78 @@ -{"col0":12024,"col1":307168,"col2":"VT","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1338596882419,"col5":422705433600000,"col6":true,"col7":3.95110006277E8,"col8":67465430} -{"col0":-1704,"col1":48600128,"col2":"ND","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882420,"col5":422407699200000,"col6":true,"col7":1.29358204137E9,"col8":75128560} -{"col0":-19521,"col1":3640288,"col2":"SD","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1370132882420,"col5":421580246400000,"col6":false,"col7":9.83657842924E8,"col8":71170420} -{"col0":-4709,"col1":3783896,"col2":"MN","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1306974482420,"col5":422796153600000,"col6":false,"col7":4.66674349327E8,"col8":55294390} -{"col0":1600,"col1":8107680,"col2":"MA","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882421,"col5":422410982400000,"col6":false,"col7":4.7471347117E8,"col8":37915240} -{"col0":-1950,"col1":40547891,"col2":"IN","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882421,"col5":421379884800000,"col6":false,"col7":8.89911941945E8,"col8":5867310} -{"col0":-1968,"col1":6212808,"col2":"SD","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882421,"col5":422410032000000,"col6":false,"col7":4.72880577743E8,"col8":22332400} -{"col0":-788,"col1":7171344,"col2":"CO","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882422,"col5":421916601600000,"col6":false,"col7":1.04871325474E9,"col8":34731100} -{"col0":-1846,"col1":5077360,"col2":"WI","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882422,"col5":422439753600000,"col6":false,"col7":1.4793288844E8,"col8":72125200} -{"col0":1001,"col1":7819200,"col2":"MD","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1370132882422,"col5":421684012800000,"col6":true,"col7":9.36437541786E8,"col8":75052800} -{"col0":19860,"col1":133164,"col2":"VT","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882422,"col5":421253049600000,"col6":false,"col7":1.09109659183E9,"col8":73602340} -{"col0":-1,"col1":-1,"col2":"VT","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882422,"col5":421253049600000,"col6":false,"col7":1.09109659183E9,"col8":73602340} -{"col0":1140,"col1":108878,"col2":"HI","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1338596882422,"col5":421429392000000,"col6":false,"col7":3.71555243082E8,"col8":7378300} -{"col0":-8984,"col1":677944,"col2":"GA","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1306974482422,"col5":422895340800000,"col6":true,"col7":1.42680533942E9,"col8":66670320} -{"col0":-14211,"col1":7985264,"col2":"MN","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1338596882423,"col5":422065296000000,"col6":false,"col7":3.90513711473E8,"col8":16118230} -{"col0":-19479,"col1":240352,"col2":"GA","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1338596882423,"col5":421930252800000,"col6":false,"col7":9.72747639559E8,"col8":63177700} -{"col0":4242,"col1":502144,"col2":"WY","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882423,"col5":421398806400000,"col6":true,"col7":1.13430261855E9,"col8":9238280} -{"col0":-3576,"col1":5392352,"col2":"MI","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1370132882423,"col5":421822339200000,"col6":false,"col7":4.70197757462E7,"col8":43115460} -{"col0":-1816,"col1":29832,"col2":"MA","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1338596882423,"col5":423068745600000,"col6":true,"col7":2.68051680205E8,"col8":8566390} -{"col0":362,"col1":24064,"col2":"OR","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882423,"col5":423099072000000,"col6":false,"col7":3.84895861757E8,"col8":69763320} -{"col0":-1645,"col1":908720,"col2":"MA","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882424,"col5":421244323200000,"col6":true,"col7":2.73055641297E8,"col8":71068900} -{"col0":-1159,"col1":50752,"col2":"RI","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882424,"col5":421906147200000,"col6":true,"col7":4.01229124414E8,"col8":5649490} -{"col0":-202,"col1":5700,"col2":"MO","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882424,"col5":422671564800000,"col6":false,"col7":1.84965459559E8,"col8":29932570} -{"col0":-3399,"col1":74400,"col2":"RI","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882424,"col5":421853702400000,"col6":true,"col7":1.24109748587E9,"col8":40411560} -{"col0":564,"col1":537456,"col2":"AZ","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882425,"col5":421991683200000,"col6":true,"col7":1.09531044142E9,"col8":39161450} -{"col0":739,"col1":103690,"col2":"OR","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882427,"col5":422474054400000,"col6":true,"col7":8.68835049003E8,"col8":17273570} -{"col0":14587,"col1":617504,"col2":"WY","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1306974482427,"col5":422182627200000,"col6":false,"col7":5.3037680439E8,"col8":81757180} -{"col0":-61299,"col1":383096,"col2":"CO","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882427,"col5":421627161600000,"col6":false,"col7":2.69607476481E7,"col8":27971300} -{"col0":11345,"col1":8788,"col2":"MO","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882428,"col5":422137872000000,"col6":true,"col7":9.11002550279E8,"col8":20510140} -{"col0":95690,"col1":189392,"col2":"VT","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1306974482428,"col5":422953401600000,"col6":false,"col7":1.25727344595E8,"col8":29546560} -{"col0":-199048,"col1":357520,"col2":"SC","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1370132882429,"col5":421109020800000,"col6":false,"col7":1.27909910034E9,"col8":51408700} -{"col0":216553,"col1":86744,"col2":"SC","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1338596882429,"col5":421599945600000,"col6":false,"col7":1.17889933749E9,"col8":53136170} -{"col0":-126232,"col1":38160,"col2":"WY","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882429,"col5":422958240000000,"col6":true,"col7":4.20766450283E8,"col8":62477170} -{"col0":-14479922,"col1":18402,"col2":"NE","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882429,"col5":423112896000000,"col6":false,"col7":1.1120849455E9,"col8":25806550} -{"col0":-185276,"col1":1150,"col2":"SD","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882430,"col5":421212009600000,"col6":true,"col7":9.3620425577E8,"col8":37363300} -{"col0":-14479,"col1":51192,"col2":"IN","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1338596882430,"col5":422682019200000,"col6":false,"col7":1.17748065647E9,"col8":12482490} -{"col0":155858,"col1":46640,"col2":"RI","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882430,"col5":422123356800000,"col6":true,"col7":1.02765112757E9,"col8":40761560} -{"col0":1,"col1":0,"col2":"RI","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882430,"col5":422123356800000,"col6":true,"col7":1.02765112757E9,"col8":40761560} -{"col0":-823,"col1":6352,"col2":"MN","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882430,"col5":421587244800000,"col6":true,"col7":1.02635426051E8,"col8":17111380} -{"col0":13899,"col1":29548,"col2":"UT","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882431,"col5":421273872000000,"col6":true,"col7":1.12572986097E9,"col8":8261230} -{"col0":-20449,"col1":5872,"col2":"NY","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1370132882431,"col5":421681680000000,"col6":false,"col7":4.22305438068E8,"col8":18255480} -{"col0":-20449,"col1":5872,"col2":"NY","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1370132882431,"col5":421681680000000,"col6":false,"col7":1.0,"col8":18255480} -{"col0":-86821,"col1":115648,"col2":"LA","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882431,"col5":422381779200000,"col6":true,"col7":1.26712293161E9,"col8":82189300} -{"col0":5562,"col1":58144,"col2":"AK","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882431,"col5":421205184000000,"col6":true,"col7":8.30455866482E8,"col8":42999360} -{"col0":3894,"col1":247308,"col2":"OH","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882431,"col5":422359920000000,"col6":true,"col7":7.63454104971E8,"col8":50267140} -{"col0":10770,"col1":212492,"col2":"PA","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1370132882432,"col5":422397417600000,"col6":true,"col7":7.2797834549E8,"col8":13490300} -{"col0":14016,"col1":7755464,"col2":"IN","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882432,"col5":422252870400000,"col6":true,"col7":8.28874169301E8,"col8":55007110} -{"col0":2532,"col1":338648,"col2":"DE","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882432,"col5":421450560000000,"col6":true,"col7":3.99985456569E8,"col8":73722390} -{"col0":17069,"col1":648376,"col2":"MN","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1370132882432,"col5":422475696000000,"col6":true,"col7":1.42275732068E9,"col8":13465170} -{"col0":20257,"col1":195470,"col2":"IA","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1306974482432,"col5":421379452800000,"col6":true,"col7":1.23097632842E8,"col8":27742430} -{"col0":-71899,"col1":104126,"col2":"KS","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882432,"col5":421108329600000,"col6":false,"col7":0.303,"col8":77761240} -{"col0":72309,"col1":752768,"col2":"WI","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1306974482433,"col5":422809632000000,"col6":true,"col7":6.16602756464E7,"col8":8470130} -{"col0":11281,"col1":45224,"col2":"GA","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1338596882433,"col5":421905283200000,"col6":true,"col7":1.40238980845E9,"col8":5527400} -{"col0":19294,"col1":831584,"col2":"AZ","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882433,"col5":422289676800000,"col6":true,"col7":1.41978080866E9,"col8":49582500} -{"col0":8966,"col1":80944,"col2":"MD","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882434,"col5":423039974400000,"col6":true,"col7":5.6890579253E8,"col8":35118460} -{"col0":-17427,"col1":85048,"col2":"MO","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882434,"col5":421333920000000,"col6":true,"col7":4.6673697742E8,"col8":22981110} -{"col0":-110,"col1":2632,"col2":"GA","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882434,"col5":421494451200000,"col6":false,"col7":1.44804901984E8,"col8":59898370} -{"col0":3418,"col1":493976,"col2":"WY","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882434,"col5":422340566400000,"col6":true,"col7":8.56574532391E8,"col8":37636440} -{"col0":-446,"col1":25236,"col2":"OH","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882434,"col5":421380316800000,"col6":true,"col7":7.35715255558E8,"col8":51842560} -{"col0":5530,"col1":199400,"col2":"NH","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1370132882435,"col5":421374960000000,"col6":true,"col7":8.91015086626E8,"col8":71064450} -{"col0":0,"col1":1,"col2":"NH","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1370132882435,"col5":421374960000000,"col6":true,"col7":8.91015086626E8,"col8":71064450} -{"col0":-977,"col1":458168,"col2":"ME","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882435,"col5":421534108800000,"col6":true,"col7":6.677148957E7,"col8":63195250} -{"col0":-1727,"col1":41872,"col2":"IA","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1338596882435,"col5":421150492800000,"col6":false,"col7":1.37327670868E9,"col8":58690170} -{"col0":-8117,"col1":84976,"col2":"MN","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1306974482435,"col5":421977081600000,"col6":false,"col7":5.0893542491E8,"col8":52269240} -{"col0":-14062,"col1":74776,"col2":"IA","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882436,"col5":422806694400000,"col6":true,"col7":1.38237309946E9,"col8":66897160} -{"col0":1919,"col1":50312,"col2":"UT","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882436,"col5":421410297600000,"col6":false,"col7":8.02591009467E7,"col8":10039350} -{"col0":15935,"col1":806060,"col2":"IA","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882436,"col5":421357766400000,"col6":true,"col7":-1.067,"col8":29033340} -{"col0":374,"col1":43592,"col2":"NC","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882436,"col5":421799529600000,"col6":false,"col7":3.06514832189E7,"col8":9995490} -{"col0":1868,"col1":290820,"col2":"NY","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882436,"col5":421818796800000,"col6":false,"col7":1.02289267124E9,"col8":11248450} -{"col0":11107,"col1":186364,"col2":"MN","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882436,"col5":423020620800000,"col6":false,"col7":7.91697316619E8,"col8":53224800} -{"col0":63389,"col1":38640,"col2":"UT","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1433204882437,"col5":421578691200000,"col6":true,"col7":1.00485076217E9,"col8":22871350} -{"col0":15426,"col1":32192,"col2":"WV","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882437,"col5":422003520000000,"col6":true,"col7":1.0252414664E9,"col8":56382320} -{"col0":-292190,"col1":385288,"col2":"CO","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1370132882437,"col5":422413142400000,"col6":false,"col7":8.0256170003E8,"col8":66881100} -{"col0":0,"col1":0,"col2":"ND","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1306974482437,"col5":421739395200000,"col6":false,"col7":3.30283711488E8,"col8":73737330} -{"col0":-1732385,"col1":56312,"col2":"IN","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1370132882437,"col5":422905363200000,"col6":false,"col7":2.18199000393E8,"col8":79702400} -{"col0":-955329,"col1":778984,"col2":"CA","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1275438482437,"col5":421725744000000,"col6":true,"col7":1.38262054833E9,"col8":29513360} -{"col0":1722833,"col1":5376880,"col2":"ME","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668892193,"col5":421672608000000,"col6":true,"col7":1.19950218188E9,"col8":36795330} -{"col0":-5186159,"col1":31933,"col2":"NH","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1275438492194,"col5":421295817600000,"col6":false,"col7":2.30933430625E8,"col8":10938520} \ No newline at end of file +{"col0":12024,"col1":307168,"col2":"VT","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1338596882419,"col5":971827200000,"col6":true,"col7":3.95110006277E8,"col8":67465430} +{"col0":-1704,"col1":48600128,"col2":"ND","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882420,"col5":674092800000,"col6":true,"col7":1.29358204137E9,"col8":75128560} +{"col0":-19521,"col1":3640288,"col2":"SD","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1370132882420,"col5":-153360000000,"col6":false,"col7":9.83657842924E8,"col8":71170420} +{"col0":-4709,"col1":3783896,"col2":"MN","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1306974482420,"col5":1062547200000,"col6":false,"col7":4.66674349327E8,"col8":55294390} +{"col0":1600,"col1":8107680,"col2":"MA","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882421,"col5":677376000000,"col6":false,"col7":4.7471347117E8,"col8":37915240} +{"col0":-1950,"col1":40547891,"col2":"IN","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882421,"col5":-353721600000,"col6":false,"col7":8.89911941945E8,"col8":5867310} +{"col0":-1968,"col1":6212808,"col2":"SD","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882421,"col5":676425600000,"col6":false,"col7":4.72880577743E8,"col8":22332400} +{"col0":-788,"col1":7171344,"col2":"CO","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882422,"col5":182995200000,"col6":false,"col7":1.04871325474E9,"col8":34731100} +{"col0":-1846,"col1":5077360,"col2":"WI","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882422,"col5":706147200000,"col6":false,"col7":1.4793288844E8,"col8":72125200} +{"col0":1001,"col1":7819200,"col2":"MD","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1370132882422,"col5":-49593600000,"col6":true,"col7":9.36437541786E8,"col8":75052800} +{"col0":19860,"col1":133164,"col2":"VT","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882422,"col5":-480556800000,"col6":false,"col7":1.09109659183E9,"col8":73602340} +{"col0":-1,"col1":-1,"col2":"VT","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882422,"col5":-480556800000,"col6":false,"col7":1.09109659183E9,"col8":73602340} +{"col0":1140,"col1":108878,"col2":"HI","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1338596882422,"col5":-304214400000,"col6":false,"col7":3.71555243082E8,"col8":7378300} +{"col0":-8984,"col1":677944,"col2":"GA","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1306974482422,"col5":1161734400000,"col6":true,"col7":1.42680533942E9,"col8":66670320} +{"col0":-14211,"col1":7985264,"col2":"MN","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1338596882423,"col5":331689600000,"col6":false,"col7":3.90513711473E8,"col8":16118230} +{"col0":-19479,"col1":240352,"col2":"GA","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1338596882423,"col5":196646400000,"col6":false,"col7":9.72747639559E8,"col8":63177700} +{"col0":4242,"col1":502144,"col2":"WY","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882423,"col5":-334800000000,"col6":true,"col7":1.13430261855E9,"col8":9238280} +{"col0":-3576,"col1":5392352,"col2":"MI","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1370132882423,"col5":88732800000,"col6":false,"col7":4.70197757462E7,"col8":43115460} +{"col0":-1816,"col1":29832,"col2":"MA","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1338596882423,"col5":1335139200000,"col6":true,"col7":2.68051680205E8,"col8":8566390} +{"col0":362,"col1":24064,"col2":"OR","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882423,"col5":1365465600000,"col6":false,"col7":3.84895861757E8,"col8":69763320} +{"col0":-1645,"col1":908720,"col2":"MA","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882424,"col5":-489283200000,"col6":true,"col7":2.73055641297E8,"col8":71068900} +{"col0":-1159,"col1":50752,"col2":"RI","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882424,"col5":172540800000,"col6":true,"col7":4.01229124414E8,"col8":5649490} +{"col0":-202,"col1":5700,"col2":"MO","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882424,"col5":937958400000,"col6":false,"col7":1.84965459559E8,"col8":29932570} +{"col0":-3399,"col1":74400,"col2":"RI","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882424,"col5":120096000000,"col6":true,"col7":1.24109748587E9,"col8":40411560} +{"col0":564,"col1":537456,"col2":"AZ","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882425,"col5":258076800000,"col6":true,"col7":1.09531044142E9,"col8":39161450} +{"col0":739,"col1":103690,"col2":"OR","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882427,"col5":740448000000,"col6":true,"col7":8.68835049003E8,"col8":17273570} +{"col0":14587,"col1":617504,"col2":"WY","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1306974482427,"col5":449020800000,"col6":false,"col7":5.3037680439E8,"col8":81757180} +{"col0":-61299,"col1":383096,"col2":"CO","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882427,"col5":-106444800000,"col6":false,"col7":2.69607476481E7,"col8":27971300} +{"col0":11345,"col1":8788,"col2":"MO","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882428,"col5":404265600000,"col6":true,"col7":9.11002550279E8,"col8":20510140} +{"col0":95690,"col1":189392,"col2":"VT","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1306974482428,"col5":1219795200000,"col6":false,"col7":1.25727344595E8,"col8":29546560} +{"col0":-199048,"col1":357520,"col2":"SC","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1370132882429,"col5":-624585600000,"col6":false,"col7":1.27909910034E9,"col8":51408700} +{"col0":216553,"col1":86744,"col2":"SC","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1338596882429,"col5":-133660800000,"col6":false,"col7":1.17889933749E9,"col8":53136170} +{"col0":-126232,"col1":38160,"col2":"WY","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882429,"col5":1224633600000,"col6":true,"col7":4.20766450283E8,"col8":62477170} +{"col0":-14479922,"col1":18402,"col2":"NE","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882429,"col5":1379289600000,"col6":false,"col7":1.1120849455E9,"col8":25806550} +{"col0":-185276,"col1":1150,"col2":"SD","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882430,"col5":-521596800000,"col6":true,"col7":9.3620425577E8,"col8":37363300} +{"col0":-14479,"col1":51192,"col2":"IN","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1338596882430,"col5":948412800000,"col6":false,"col7":1.17748065647E9,"col8":12482490} +{"col0":155858,"col1":46640,"col2":"RI","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882430,"col5":389750400000,"col6":true,"col7":1.02765112757E9,"col8":40761560} +{"col0":1,"col1":0,"col2":"RI","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882430,"col5":389750400000,"col6":true,"col7":1.02765112757E9,"col8":40761560} +{"col0":-823,"col1":6352,"col2":"MN","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882430,"col5":-146361600000,"col6":true,"col7":1.02635426051E8,"col8":17111380} +{"col0":13899,"col1":29548,"col2":"UT","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882431,"col5":-459734400000,"col6":true,"col7":1.12572986097E9,"col8":8261230} +{"col0":-20449,"col1":5872,"col2":"NY","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1370132882431,"col5":-51926400000,"col6":false,"col7":4.22305438068E8,"col8":18255480} +{"col0":-20449,"col1":5872,"col2":"NY","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1370132882431,"col5":-51926400000,"col6":false,"col7":1.0,"col8":18255480} +{"col0":-86821,"col1":115648,"col2":"LA","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882431,"col5":648172800000,"col6":true,"col7":1.26712293161E9,"col8":82189300} +{"col0":5562,"col1":58144,"col2":"AK","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882431,"col5":-528422400000,"col6":true,"col7":8.30455866482E8,"col8":42999360} +{"col0":3894,"col1":247308,"col2":"OH","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882431,"col5":626313600000,"col6":true,"col7":7.63454104971E8,"col8":50267140} +{"col0":10770,"col1":212492,"col2":"PA","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1370132882432,"col5":663811200000,"col6":true,"col7":7.2797834549E8,"col8":13490300} +{"col0":14016,"col1":7755464,"col2":"IN","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882432,"col5":519264000000,"col6":true,"col7":8.28874169301E8,"col8":55007110} +{"col0":2532,"col1":338648,"col2":"DE","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882432,"col5":-283046400000,"col6":true,"col7":3.99985456569E8,"col8":73722390} +{"col0":17069,"col1":648376,"col2":"MN","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1370132882432,"col5":742089600000,"col6":true,"col7":1.42275732068E9,"col8":13465170} +{"col0":20257,"col1":195470,"col2":"IA","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1306974482432,"col5":-354153600000,"col6":true,"col7":1.23097632842E8,"col8":27742430} +{"col0":-71899,"col1":104126,"col2":"KS","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882432,"col5":-625276800000,"col6":false,"col7":0.303,"col8":77761240} +{"col0":72309,"col1":752768,"col2":"WI","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1306974482433,"col5":1076025600000,"col6":true,"col7":6.16602756464E7,"col8":8470130} +{"col0":11281,"col1":45224,"col2":"GA","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1338596882433,"col5":171676800000,"col6":true,"col7":1.40238980845E9,"col8":5527400} +{"col0":19294,"col1":831584,"col2":"AZ","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882433,"col5":556070400000,"col6":true,"col7":1.41978080866E9,"col8":49582500} +{"col0":8966,"col1":80944,"col2":"MD","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882434,"col5":1306368000000,"col6":true,"col7":5.6890579253E8,"col8":35118460} +{"col0":-17427,"col1":85048,"col2":"MO","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882434,"col5":-399686400000,"col6":true,"col7":4.6673697742E8,"col8":22981110} +{"col0":-110,"col1":2632,"col2":"GA","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882434,"col5":-239155200000,"col6":false,"col7":1.44804901984E8,"col8":59898370} +{"col0":3418,"col1":493976,"col2":"WY","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882434,"col5":606960000000,"col6":true,"col7":8.56574532391E8,"col8":37636440} +{"col0":-446,"col1":25236,"col2":"OH","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882434,"col5":-353289600000,"col6":true,"col7":7.35715255558E8,"col8":51842560} +{"col0":5530,"col1":199400,"col2":"NH","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1370132882435,"col5":-358646400000,"col6":true,"col7":8.91015086626E8,"col8":71064450} +{"col0":0,"col1":1,"col2":"NH","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1370132882435,"col5":-358646400000,"col6":true,"col7":8.91015086626E8,"col8":71064450} +{"col0":-977,"col1":458168,"col2":"ME","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882435,"col5":-199497600000,"col6":true,"col7":6.677148957E7,"col8":63195250} +{"col0":-1727,"col1":41872,"col2":"IA","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1338596882435,"col5":-583113600000,"col6":false,"col7":1.37327670868E9,"col8":58690170} +{"col0":-8117,"col1":84976,"col2":"MN","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1306974482435,"col5":243475200000,"col6":false,"col7":5.0893542491E8,"col8":52269240} +{"col0":-14062,"col1":74776,"col2":"IA","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882436,"col5":1073088000000,"col6":true,"col7":1.38237309946E9,"col8":66897160} +{"col0":1919,"col1":50312,"col2":"UT","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882436,"col5":-323308800000,"col6":false,"col7":8.02591009467E7,"col8":10039350} +{"col0":15935,"col1":806060,"col2":"IA","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1401668882436,"col5":-375840000000,"col6":true,"col7":-1.067,"col8":29033340} +{"col0":374,"col1":43592,"col2":"NC","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882436,"col5":65923200000,"col6":false,"col7":3.06514832189E7,"col8":9995490} +{"col0":1868,"col1":290820,"col2":"NY","col3":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col4":1401668882436,"col5":85190400000,"col6":false,"col7":1.02289267124E9,"col8":11248450} +{"col0":11107,"col1":186364,"col2":"MN","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668882436,"col5":1287014400000,"col6":false,"col7":7.91697316619E8,"col8":53224800} +{"col0":63389,"col1":38640,"col2":"UT","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1433204882437,"col5":-154915200000,"col6":true,"col7":1.00485076217E9,"col8":22871350} +{"col0":15426,"col1":32192,"col2":"WV","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1401668882437,"col5":269913600000,"col6":true,"col7":1.0252414664E9,"col8":56382320} +{"col0":-292190,"col1":385288,"col2":"CO","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1370132882437,"col5":679536000000,"col6":false,"col7":8.0256170003E8,"col8":66881100} +{"col0":0,"col1":0,"col2":"ND","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1306974482437,"col5":5788800000,"col6":false,"col7":3.30283711488E8,"col8":73737330} +{"col0":-1732385,"col1":56312,"col2":"IN","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1370132882437,"col5":1171756800000,"col6":false,"col7":2.18199000393E8,"col8":79702400} +{"col0":-955329,"col1":778984,"col2":"CA","col3":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col4":1275438482437,"col5":-7862400000,"col6":true,"col7":1.38262054833E9,"col8":29513360} +{"col0":1722833,"col1":5376880,"col2":"ME","col3":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col4":1401668892193,"col5":-60998400000,"col6":true,"col7":1.19950218188E9,"col8":36795330} +{"col0":-5186159,"col1":31933,"col2":"NH","col3":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col4":1275438492194,"col5":-437788800000,"col6":false,"col7":2.30933430625E8,"col8":10938520} \ No newline at end of file diff --git a/sql/src/test/resources/drill/window/datasources/forViewCrn.parquet.json b/sql/src/test/resources/drill/window/datasources/forViewCrn.parquet.json index 6f727e7cc8ca..f8972f68a1e4 100644 --- a/sql/src/test/resources/drill/window/datasources/forViewCrn.parquet.json +++ b/sql/src/test/resources/drill/window/datasources/forViewCrn.parquet.json @@ -1,30 +1,30 @@ -{"col_int":22,"col_bigint":7,"col_char_2":"IN","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1283387282418,"col_dt":422717616000000,"col_booln":false,"col_dbl":12900.48,"col_tm":33109170} -{"col_int":4,"col_bigint":3,"col_char_2":"VT","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":996625682419,"col_dt":422705433600000,"col_booln":true,"col_dbl":39006.277,"col_tm":67465430} -{"col_int":4,"col_bigint":4,"col_char_2":"ND","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1080865682420,"col_dt":422407699200000,"col_booln":true,"col_dbl":12041.37,"col_tm":75128560} -{"col_int":1,"col_bigint":3,"col_char_2":"SD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1425428882420,"col_dt":421580246400000,"col_booln":false,"col_dbl":97842.924,"col_tm":71170420} -{"col_int":9,"col_bigint":3,"col_char_2":"MN","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1357086482420,"col_dt":422796153600000,"col_booln":false,"col_dbl":449.327,"col_tm":55294390} -{"col_int":0,"col_bigint":8,"col_char_2":"MA","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":707963282421,"col_dt":422410982400000,"col_booln":false,"col_dbl":4771.17,"col_tm":37915240} -{"col_int":-1,"col_bigint":8,"col_char_2":"IN","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882421,"col_dt":421379884800000,"col_booln":false,"col_dbl":8841.945,"col_tm":5867310} -{"col_int":8,"col_bigint":3,"col_char_2":"FL","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1212366482421,"col_dt":421621977600000,"col_booln":false,"col_dbl":1183.32,"col_tm":6605110} -{"col_int":8,"col_bigint":6,"col_char_2":"ND","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882421,"col_dt":421788297600000,"col_booln":true,"col_dbl":436.897,"col_tm":41305100} -{"col_int":-6,"col_bigint":6,"col_char_2":"SD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1397003282421,"col_dt":422410032000000,"col_booln":false,"col_dbl":42577.743,"col_tm":22332400} -{"col_int":-7,"col_bigint":4,"col_char_2":"CO","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1409617682422,"col_dt":421916601600000,"col_booln":false,"col_dbl":10254.74,"col_tm":34731100} -{"col_int":-1,"col_bigint":0,"col_char_2":"CO","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1388968082422,"col_dt":421916601600000,"col_booln":false,"col_dbl":10254.74,"col_tm":34731100} -{"col_int":8,"col_bigint":5,"col_char_2":"WI","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1393720082422,"col_dt":422439753600000,"col_booln":false,"col_dbl":1488.44,"col_tm":72125200} -{"col_int":1,"col_bigint":70,"col_char_2":"MD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1306974482422,"col_dt":421684012800000,"col_booln":true,"col_dbl":97541.786,"col_tm":75052800} -{"col_int":10,"col_bigint":3,"col_char_2":"VT","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":946772882422,"col_dt":421253049600000,"col_booln":false,"col_dbl":10591.83,"col_tm":73602340} -{"col_int":1,"col_bigint":1,"col_char_2":"HI","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":905214482422,"col_dt":421429392000000,"col_booln":false,"col_dbl":3243.082,"col_tm":7378300} -{"col_int":8,"col_bigint":6,"col_char_2":"GA","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":444529682422,"col_dt":422895340800000,"col_booln":true,"col_dbl":14339.42,"col_tm":66670320} -{"col_int":-1,"col_bigint":8,"col_char_2":"MN","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1401668882423,"col_dt":422065296000000,"col_booln":false,"col_dbl":311.473,"col_tm":16118230} -{"col_int":-19,"col_bigint":5,"col_char_2":"GA","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882423,"col_dt":421930252800000,"col_booln":false,"col_dbl":9739.559,"col_tm":63177700} -{"col_int":2,"col_bigint":4,"col_char_2":"WY","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1406939282423,"col_dt":421398806400000,"col_booln":true,"col_dbl":1118.55,"col_tm":9238280} -{"col_int":3,"col_bigint":5,"col_char_2":"MI","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401841682423,"col_dt":421822339200000,"col_booln":false,"col_dbl":475.7462,"col_tm":43115460} -{"col_int":1,"col_bigint":3,"col_char_2":"MA","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1330907282423,"col_dt":423068745600000,"col_booln":true,"col_dbl":2680.205,"col_tm":8566390} -{"col_int":3,"col_bigint":3,"col_char_2":"OR","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1376008082423,"col_dt":423099072000000,"col_booln":false,"col_dbl":3861.757,"col_tm":69763320} -{"col_int":4,"col_bigint":2,"col_char_2":"MA","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401755282424,"col_dt":421244323200000,"col_booln":true,"col_dbl":27641.297,"col_tm":71068900} -{"col_int":5,"col_bigint":2,"col_char_2":"RI","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1396398482424,"col_dt":421906147200000,"col_booln":true,"col_dbl":4024.414,"col_tm":5649490} -{"col_int":0,"col_bigint":0,"col_char_2":"MO","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1307492882424,"col_dt":422671564800000,"col_booln":false,"col_dbl":1859.559,"col_tm":29932570} -{"col_int":9,"col_bigint":7,"col_char_2":"RI","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1391300882424,"col_dt":421853702400000,"col_booln":true,"col_dbl":185.87,"col_tm":40411560} -{"col_int":1,"col_bigint":-1,"col_char_2":"RI","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1275438482424,"col_dt":421853702400000,"col_booln":true,"col_dbl":185.87,"col_tm":40411560} -{"col_int":6,"col_bigint":5,"col_char_2":"AZ","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1396398482425,"col_dt":421991683200000,"col_booln":true,"col_dbl":10441.42,"col_tm":39161450} -{"col_int":8,"col_bigint":14,"col_char_2":"MD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1406939282426,"col_dt":422856806400000,"col_booln":false,"col_dbl":26268.761,"col_tm":28015290} \ No newline at end of file +{"col_int":22,"col_bigint":7,"col_char_2":"IN","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1283387282418,"col_dt":984009600000,"col_booln":false,"col_dbl":12900.48,"col_tm":33109170} +{"col_int":4,"col_bigint":3,"col_char_2":"VT","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":996625682419,"col_dt":971827200000,"col_booln":true,"col_dbl":39006.277,"col_tm":67465430} +{"col_int":4,"col_bigint":4,"col_char_2":"ND","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1080865682420,"col_dt":674092800000,"col_booln":true,"col_dbl":12041.37,"col_tm":75128560} +{"col_int":1,"col_bigint":3,"col_char_2":"SD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1425428882420,"col_dt":-153360000000,"col_booln":false,"col_dbl":97842.924,"col_tm":71170420} +{"col_int":9,"col_bigint":3,"col_char_2":"MN","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1357086482420,"col_dt":1062547200000,"col_booln":false,"col_dbl":449.327,"col_tm":55294390} +{"col_int":0,"col_bigint":8,"col_char_2":"MA","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":707963282421,"col_dt":677376000000,"col_booln":false,"col_dbl":4771.17,"col_tm":37915240} +{"col_int":-1,"col_bigint":8,"col_char_2":"IN","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882421,"col_dt":-353721600000,"col_booln":false,"col_dbl":8841.945,"col_tm":5867310} +{"col_int":8,"col_bigint":3,"col_char_2":"FL","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1212366482421,"col_dt":-111628800000,"col_booln":false,"col_dbl":1183.32,"col_tm":6605110} +{"col_int":8,"col_bigint":6,"col_char_2":"ND","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882421,"col_dt":54691200000,"col_booln":true,"col_dbl":436.897,"col_tm":41305100} +{"col_int":-6,"col_bigint":6,"col_char_2":"SD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1397003282421,"col_dt":676425600000,"col_booln":false,"col_dbl":42577.743,"col_tm":22332400} +{"col_int":-7,"col_bigint":4,"col_char_2":"CO","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1409617682422,"col_dt":182995200000,"col_booln":false,"col_dbl":10254.74,"col_tm":34731100} +{"col_int":-1,"col_bigint":0,"col_char_2":"CO","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1388968082422,"col_dt":182995200000,"col_booln":false,"col_dbl":10254.74,"col_tm":34731100} +{"col_int":8,"col_bigint":5,"col_char_2":"WI","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1393720082422,"col_dt":706147200000,"col_booln":false,"col_dbl":1488.44,"col_tm":72125200} +{"col_int":1,"col_bigint":70,"col_char_2":"MD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1306974482422,"col_dt":-49593600000,"col_booln":true,"col_dbl":97541.786,"col_tm":75052800} +{"col_int":10,"col_bigint":3,"col_char_2":"VT","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":946772882422,"col_dt":-480556800000,"col_booln":false,"col_dbl":10591.83,"col_tm":73602340} +{"col_int":1,"col_bigint":1,"col_char_2":"HI","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":905214482422,"col_dt":-304214400000,"col_booln":false,"col_dbl":3243.082,"col_tm":7378300} +{"col_int":8,"col_bigint":6,"col_char_2":"GA","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":444529682422,"col_dt":1161734400000,"col_booln":true,"col_dbl":14339.42,"col_tm":66670320} +{"col_int":-1,"col_bigint":8,"col_char_2":"MN","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1401668882423,"col_dt":331689600000,"col_booln":false,"col_dbl":311.473,"col_tm":16118230} +{"col_int":-19,"col_bigint":5,"col_char_2":"GA","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882423,"col_dt":196646400000,"col_booln":false,"col_dbl":9739.559,"col_tm":63177700} +{"col_int":2,"col_bigint":4,"col_char_2":"WY","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1406939282423,"col_dt":-334800000000,"col_booln":true,"col_dbl":1118.55,"col_tm":9238280} +{"col_int":3,"col_bigint":5,"col_char_2":"MI","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401841682423,"col_dt":88732800000,"col_booln":false,"col_dbl":475.7462,"col_tm":43115460} +{"col_int":1,"col_bigint":3,"col_char_2":"MA","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1330907282423,"col_dt":1335139200000,"col_booln":true,"col_dbl":2680.205,"col_tm":8566390} +{"col_int":3,"col_bigint":3,"col_char_2":"OR","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1376008082423,"col_dt":1365465600000,"col_booln":false,"col_dbl":3861.757,"col_tm":69763320} +{"col_int":4,"col_bigint":2,"col_char_2":"MA","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401755282424,"col_dt":-489283200000,"col_booln":true,"col_dbl":27641.297,"col_tm":71068900} +{"col_int":5,"col_bigint":2,"col_char_2":"RI","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1396398482424,"col_dt":172540800000,"col_booln":true,"col_dbl":4024.414,"col_tm":5649490} +{"col_int":0,"col_bigint":0,"col_char_2":"MO","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1307492882424,"col_dt":937958400000,"col_booln":false,"col_dbl":1859.559,"col_tm":29932570} +{"col_int":9,"col_bigint":7,"col_char_2":"RI","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1391300882424,"col_dt":120096000000,"col_booln":true,"col_dbl":185.87,"col_tm":40411560} +{"col_int":1,"col_bigint":-1,"col_char_2":"RI","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1275438482424,"col_dt":120096000000,"col_booln":true,"col_dbl":185.87,"col_tm":40411560} +{"col_int":6,"col_bigint":5,"col_char_2":"AZ","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1396398482425,"col_dt":258076800000,"col_booln":true,"col_dbl":10441.42,"col_tm":39161450} +{"col_int":8,"col_bigint":14,"col_char_2":"MD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1406939282426,"col_dt":1123200000000,"col_booln":false,"col_dbl":26268.761,"col_tm":28015290} \ No newline at end of file diff --git a/sql/src/test/resources/drill/window/datasources/smlTbl.parquet.json b/sql/src/test/resources/drill/window/datasources/smlTbl.parquet.json index 3b502952e30f..81fca800dd87 100644 --- a/sql/src/test/resources/drill/window/datasources/smlTbl.parquet.json +++ b/sql/src/test/resources/drill/window/datasources/smlTbl.parquet.json @@ -1,56 +1,56 @@ -{"col_int":8122,"col_bgint":817200,"col_char_2":"IN","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1409617682418,"col_dt":422717616000000,"col_booln":false,"col_dbl":12900.48,"col_tm":33109170} -{"col_int":407024,"col_bgint":37168,"col_char_2":"VT","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1312244882419,"col_dt":422705433600000,"col_booln":true,"col_dbl":39006.277,"col_tm":67465430} -{"col_int":41704,"col_bgint":470128,"col_char_2":"ND","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1396398482420,"col_dt":422407699200000,"col_booln":true,"col_dbl":12041.37,"col_tm":75128560} -{"col_int":-19521,"col_bgint":30288,"col_char_2":"SD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1425256082420,"col_dt":421580246400000,"col_booln":false,"col_dbl":97842.924,"col_tm":71170420} -{"col_int":-4709,"col_bgint":373896,"col_char_2":"MN","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1357086482420,"col_dt":422796153600000,"col_booln":false,"col_dbl":449.327,"col_tm":55294390} -{"col_int":16300,"col_bgint":81680,"col_char_2":"MA","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":707444882421,"col_dt":422410982400000,"col_booln":false,"col_dbl":4771.17,"col_tm":37915240} -{"col_int":-15950,"col_bgint":4547891,"col_char_2":"IN","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882421,"col_dt":421379884800000,"col_booln":false,"col_dbl":8841.945,"col_tm":5867310} -{"col_int":8888,"col_bgint":314696,"col_char_2":"FL","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882421,"col_dt":421621977600000,"col_booln":false,"col_dbl":1183.32,"col_tm":6605110} -{"col_int":82588,"col_bgint":6672,"col_char_2":"ND","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882421,"col_dt":421788297600000,"col_booln":true,"col_dbl":436.897,"col_tm":41305100} -{"col_int":-13968,"col_bgint":62808,"col_char_2":"SD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882421,"col_dt":422410032000000,"col_booln":false,"col_dbl":42577.743,"col_tm":22332400} -{"col_int":-74788,"col_bgint":7344,"col_char_2":"CO","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882422,"col_dt":421916601600000,"col_booln":false,"col_dbl":10254.74,"col_tm":34731100} -{"col_int":-1,"col_bgint":0,"col_char_2":"CO","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882422,"col_dt":421916601600000,"col_booln":false,"col_dbl":10254.74,"col_tm":34731100} -{"col_int":-10846,"col_bgint":57360,"col_char_2":"WI","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882422,"col_dt":422439753600000,"col_booln":false,"col_dbl":1488.44,"col_tm":72125200} -{"col_int":101701,"col_bgint":719200,"col_char_2":"MD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882422,"col_dt":421684012800000,"col_booln":true,"col_dbl":97541.786,"col_tm":75052800} -{"col_int":198860,"col_bgint":103164,"col_char_2":"VT","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882422,"col_dt":421253049600000,"col_booln":false,"col_dbl":10591.83,"col_tm":73602340} -{"col_int":11140,"col_bgint":10878,"col_char_2":"HI","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":896747282422,"col_dt":421429392000000,"col_booln":false,"col_dbl":3243.082,"col_tm":7378300} -{"col_int":-84984,"col_bgint":67944,"col_char_2":"GA","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882422,"col_dt":422895340800000,"col_booln":true,"col_dbl":14339.42,"col_tm":66670320} -{"col_int":-184211,"col_bgint":85264,"col_char_2":"MN","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1401668882423,"col_dt":422065296000000,"col_booln":false,"col_dbl":311.473,"col_tm":16118230} -{"col_int":-169479,"col_bgint":540352,"col_char_2":"GA","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882423,"col_dt":421930252800000,"col_booln":false,"col_dbl":9739.559,"col_tm":63177700} -{"col_int":42942,"col_bgint":502144,"col_char_2":"WY","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1401668882423,"col_dt":421398806400000,"col_booln":true,"col_dbl":1118.55,"col_tm":9238280} -{"col_int":-33576,"col_bgint":592352,"col_char_2":"MI","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882423,"col_dt":421822339200000,"col_booln":false,"col_dbl":475.7462,"col_tm":43115460} -{"col_int":-127816,"col_bgint":9832,"col_char_2":"MA","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1401668882423,"col_dt":423068745600000,"col_booln":true,"col_dbl":2680.205,"col_tm":8566390} -{"col_int":36582,"col_bgint":243364,"col_char_2":"OR","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1375403282423,"col_dt":423099072000000,"col_booln":false,"col_dbl":3861.757,"col_tm":69763320} -{"col_int":-149645,"col_bgint":8720,"col_char_2":"MA","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882424,"col_dt":421244323200000,"col_booln":true,"col_dbl":27641.297,"col_tm":71068900} -{"col_int":-12159,"col_bgint":500752,"col_char_2":"RI","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1401668882424,"col_dt":421906147200000,"col_booln":true,"col_dbl":4024.414,"col_tm":5649490} -{"col_int":-2402,"col_bgint":5756000,"col_char_2":"MO","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882424,"col_dt":422671564800000,"col_booln":false,"col_dbl":1859.559,"col_tm":29932570} -{"col_int":-33399,"col_bgint":7486400,"col_char_2":"RI","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882424,"col_dt":421853702400000,"col_booln":true,"col_dbl":185.87,"col_tm":40411560} -{"col_int":1,"col_bgint":-1,"col_char_2":"RI","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882424,"col_dt":421853702400000,"col_booln":true,"col_dbl":185.87,"col_tm":40411560} -{"col_int":56214,"col_bgint":5372456,"col_char_2":"AZ","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882425,"col_dt":421991683200000,"col_booln":true,"col_dbl":10441.42,"col_tm":39161450} -{"col_int":-12209,"col_bgint":7899414,"col_char_2":"MD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882426,"col_dt":422856806400000,"col_booln":false,"col_dbl":26268.761,"col_tm":28015290} -{"col_int":18763,"col_bgint":921520,"col_char_2":"NE","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882426,"col_dt":421187472000000,"col_booln":true,"col_dbl":4966.2418,"col_tm":39006130} -{"col_int":211066,"col_bgint":104832,"col_char_2":"NJ","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1404260882426,"col_dt":421838841600000,"col_booln":true,"col_dbl":1155.5,"col_tm":9018340} -{"col_int":73839,"col_bgint":103690,"col_char_2":"OR","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1401668882427,"col_dt":422474054400000,"col_booln":true,"col_dbl":8049.003,"col_tm":17273570} -{"col_int":124587,"col_bgint":617504,"col_char_2":"WY","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1401668882427,"col_dt":422182627200000,"col_booln":false,"col_dbl":5804.39,"col_tm":81757180} -{"col_int":-61299,"col_bgint":38096,"col_char_2":"CO","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1401668882427,"col_dt":421627161600000,"col_booln":false,"col_dbl":247.6481,"col_tm":27971300} -{"col_int":11345,"col_bgint":87088,"col_char_2":"MO","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1401668882428,"col_dt":422137872000000,"col_booln":true,"col_dbl":9150.279,"col_tm":20510140} -{"col_int":-92531,"col_bgint":21100,"col_char_2":"CA","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882428,"col_dt":423093542400000,"col_booln":true,"col_dbl":9240.11,"col_tm":46147130} -{"col_int":95690,"col_bgint":186392,"col_char_2":"VT","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1406939282428,"col_dt":422953401600000,"col_booln":false,"col_dbl":12344.595,"col_tm":29546560} -{"col_int":-199048,"col_bgint":3520,"col_char_2":"SC","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882429,"col_dt":421109020800000,"col_booln":false,"col_dbl":19100.34,"col_tm":51408700} -{"col_int":216553,"col_bgint":86744,"col_char_2":"SC","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1409617682429,"col_dt":421599945600000,"col_booln":false,"col_dbl":1337.49,"col_tm":53136170} -{"col_int":-126232,"col_bgint":3160,"col_char_2":"WY","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1412209682429,"col_dt":422958240000000,"col_booln":true,"col_dbl":450.283,"col_tm":62477170} -{"col_int":120079,"col_bgint":6736,"col_char_2":"CO","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882429,"col_dt":422613849600000,"col_booln":true,"col_dbl":94963.943,"col_tm":16752380} -{"col_int":-179922,"col_bgint":198402,"col_char_2":"NE","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882429,"col_dt":423112896000000,"col_booln":false,"col_dbl":1145.5,"col_tm":25806550} -{"col_int":196285,"col_bgint":84560,"col_char_2":"IA","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1401668882430,"col_dt":421431984000000,"col_booln":false,"col_dbl":95854.701,"col_tm":7694500} -{"col_int":77907,"col_bgint":412832,"col_char_2":"FL","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1401668882430,"col_dt":422734550400000,"col_booln":false,"col_dbl":135568.86,"col_tm":21999400} -{"col_int":0,"col_bgint":0,"col_char_2":"FL","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1401668882430,"col_dt":422734550400000,"col_booln":false,"col_dbl":135568.86,"col_tm":21999400} -{"col_int":-185276,"col_bgint":163150,"col_char_2":"SD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882430,"col_dt":421212009600000,"col_booln":true,"col_dbl":9255.77,"col_tm":37363300} -{"col_int":-14479,"col_bgint":5192,"col_char_2":"IN","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1401668882430,"col_dt":422682019200000,"col_booln":false,"col_dbl":1156.47,"col_tm":12482490} -{"col_int":-165881,"col_bgint":7104,"col_char_2":"SD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882430,"col_dt":422484336000000,"col_booln":false,"col_dbl":14879.08,"col_tm":21046300} -{"col_int":155858,"col_bgint":4640,"col_char_2":"RI","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":991441682430,"col_dt":422123356800000,"col_booln":true,"col_dbl":10227.57,"col_tm":40761560} -{"col_int":-8523,"col_bgint":696,"col_char_2":"MN","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1401668882430,"col_dt":421587244800000,"col_booln":true,"col_dbl":1026.051,"col_tm":17111380} -{"col_int":137899,"col_bgint":2799548,"col_char_2":"UT","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":959905682431,"col_dt":421273872000000,"col_booln":true,"col_dbl":1860.97,"col_tm":8261230} -{"col_int":1,"col_bgint":1,"col_char_2":"UT","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1306974482431,"col_dt":421273872000000,"col_booln":true,"col_dbl":1860.97,"col_tm":8261230} -{"col_int":-20449,"col_bgint":5172,"col_char_2":"NY","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1338596882431,"col_dt":421681680000000,"col_booln":false,"col_dbl":438.068,"col_tm":18255480} -{"col_int":-86821,"col_bgint":11648,"col_char_2":"LA","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882431,"col_dt":422381779200000,"col_booln":true,"col_dbl":1231.61,"col_tm":82189300} -{"col_int":65535,"col_bgint":65535,"col_char_2":"LA","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1370132882431,"col_dt":422381779200000,"col_booln":true,"col_dbl":1231.61,"col_tm":82189300} \ No newline at end of file +{"col_int":8122,"col_bgint":817200,"col_char_2":"IN","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1409617682418,"col_dt":984009600000,"col_booln":false,"col_dbl":12900.48,"col_tm":33109170} +{"col_int":407024,"col_bgint":37168,"col_char_2":"VT","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1312244882419,"col_dt":971827200000,"col_booln":true,"col_dbl":39006.277,"col_tm":67465430} +{"col_int":41704,"col_bgint":470128,"col_char_2":"ND","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1396398482420,"col_dt":674092800000,"col_booln":true,"col_dbl":12041.37,"col_tm":75128560} +{"col_int":-19521,"col_bgint":30288,"col_char_2":"SD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1425256082420,"col_dt":-153360000000,"col_booln":false,"col_dbl":97842.924,"col_tm":71170420} +{"col_int":-4709,"col_bgint":373896,"col_char_2":"MN","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1357086482420,"col_dt":1062547200000,"col_booln":false,"col_dbl":449.327,"col_tm":55294390} +{"col_int":16300,"col_bgint":81680,"col_char_2":"MA","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":707444882421,"col_dt":677376000000,"col_booln":false,"col_dbl":4771.17,"col_tm":37915240} +{"col_int":-15950,"col_bgint":4547891,"col_char_2":"IN","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882421,"col_dt":-353721600000,"col_booln":false,"col_dbl":8841.945,"col_tm":5867310} +{"col_int":8888,"col_bgint":314696,"col_char_2":"FL","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882421,"col_dt":-111628800000,"col_booln":false,"col_dbl":1183.32,"col_tm":6605110} +{"col_int":82588,"col_bgint":6672,"col_char_2":"ND","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882421,"col_dt":54691200000,"col_booln":true,"col_dbl":436.897,"col_tm":41305100} +{"col_int":-13968,"col_bgint":62808,"col_char_2":"SD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882421,"col_dt":676425600000,"col_booln":false,"col_dbl":42577.743,"col_tm":22332400} +{"col_int":-74788,"col_bgint":7344,"col_char_2":"CO","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882422,"col_dt":182995200000,"col_booln":false,"col_dbl":10254.74,"col_tm":34731100} +{"col_int":-1,"col_bgint":0,"col_char_2":"CO","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882422,"col_dt":182995200000,"col_booln":false,"col_dbl":10254.74,"col_tm":34731100} +{"col_int":-10846,"col_bgint":57360,"col_char_2":"WI","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882422,"col_dt":706147200000,"col_booln":false,"col_dbl":1488.44,"col_tm":72125200} +{"col_int":101701,"col_bgint":719200,"col_char_2":"MD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882422,"col_dt":-49593600000,"col_booln":true,"col_dbl":97541.786,"col_tm":75052800} +{"col_int":198860,"col_bgint":103164,"col_char_2":"VT","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882422,"col_dt":-480556800000,"col_booln":false,"col_dbl":10591.83,"col_tm":73602340} +{"col_int":11140,"col_bgint":10878,"col_char_2":"HI","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":896747282422,"col_dt":-304214400000,"col_booln":false,"col_dbl":3243.082,"col_tm":7378300} +{"col_int":-84984,"col_bgint":67944,"col_char_2":"GA","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882422,"col_dt":1161734400000,"col_booln":true,"col_dbl":14339.42,"col_tm":66670320} +{"col_int":-184211,"col_bgint":85264,"col_char_2":"MN","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1401668882423,"col_dt":331689600000,"col_booln":false,"col_dbl":311.473,"col_tm":16118230} +{"col_int":-169479,"col_bgint":540352,"col_char_2":"GA","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882423,"col_dt":196646400000,"col_booln":false,"col_dbl":9739.559,"col_tm":63177700} +{"col_int":42942,"col_bgint":502144,"col_char_2":"WY","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1401668882423,"col_dt":-334800000000,"col_booln":true,"col_dbl":1118.55,"col_tm":9238280} +{"col_int":-33576,"col_bgint":592352,"col_char_2":"MI","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882423,"col_dt":88732800000,"col_booln":false,"col_dbl":475.7462,"col_tm":43115460} +{"col_int":-127816,"col_bgint":9832,"col_char_2":"MA","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1401668882423,"col_dt":1335139200000,"col_booln":true,"col_dbl":2680.205,"col_tm":8566390} +{"col_int":36582,"col_bgint":243364,"col_char_2":"OR","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1375403282423,"col_dt":1365465600000,"col_booln":false,"col_dbl":3861.757,"col_tm":69763320} +{"col_int":-149645,"col_bgint":8720,"col_char_2":"MA","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882424,"col_dt":-489283200000,"col_booln":true,"col_dbl":27641.297,"col_tm":71068900} +{"col_int":-12159,"col_bgint":500752,"col_char_2":"RI","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1401668882424,"col_dt":172540800000,"col_booln":true,"col_dbl":4024.414,"col_tm":5649490} +{"col_int":-2402,"col_bgint":5756000,"col_char_2":"MO","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882424,"col_dt":937958400000,"col_booln":false,"col_dbl":1859.559,"col_tm":29932570} +{"col_int":-33399,"col_bgint":7486400,"col_char_2":"RI","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882424,"col_dt":120096000000,"col_booln":true,"col_dbl":185.87,"col_tm":40411560} +{"col_int":1,"col_bgint":-1,"col_char_2":"RI","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882424,"col_dt":120096000000,"col_booln":true,"col_dbl":185.87,"col_tm":40411560} +{"col_int":56214,"col_bgint":5372456,"col_char_2":"AZ","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882425,"col_dt":258076800000,"col_booln":true,"col_dbl":10441.42,"col_tm":39161450} +{"col_int":-12209,"col_bgint":7899414,"col_char_2":"MD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882426,"col_dt":1123200000000,"col_booln":false,"col_dbl":26268.761,"col_tm":28015290} +{"col_int":18763,"col_bgint":921520,"col_char_2":"NE","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882426,"col_dt":-546134400000,"col_booln":true,"col_dbl":4966.2418,"col_tm":39006130} +{"col_int":211066,"col_bgint":104832,"col_char_2":"NJ","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1404260882426,"col_dt":105235200000,"col_booln":true,"col_dbl":1155.5,"col_tm":9018340} +{"col_int":73839,"col_bgint":103690,"col_char_2":"OR","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1401668882427,"col_dt":740448000000,"col_booln":true,"col_dbl":8049.003,"col_tm":17273570} +{"col_int":124587,"col_bgint":617504,"col_char_2":"WY","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1401668882427,"col_dt":449020800000,"col_booln":false,"col_dbl":5804.39,"col_tm":81757180} +{"col_int":-61299,"col_bgint":38096,"col_char_2":"CO","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1401668882427,"col_dt":-106444800000,"col_booln":false,"col_dbl":247.6481,"col_tm":27971300} +{"col_int":11345,"col_bgint":87088,"col_char_2":"MO","col_vchar_52":"AXXXXXXXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXB","col_tmstmp":1401668882428,"col_dt":404265600000,"col_booln":true,"col_dbl":9150.279,"col_tm":20510140} +{"col_int":-92531,"col_bgint":21100,"col_char_2":"CA","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882428,"col_dt":1359936000000,"col_booln":true,"col_dbl":9240.11,"col_tm":46147130} +{"col_int":95690,"col_bgint":186392,"col_char_2":"VT","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1406939282428,"col_dt":1219795200000,"col_booln":false,"col_dbl":12344.595,"col_tm":29546560} +{"col_int":-199048,"col_bgint":3520,"col_char_2":"SC","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882429,"col_dt":-624585600000,"col_booln":false,"col_dbl":19100.34,"col_tm":51408700} +{"col_int":216553,"col_bgint":86744,"col_char_2":"SC","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1409617682429,"col_dt":-133660800000,"col_booln":false,"col_dbl":1337.49,"col_tm":53136170} +{"col_int":-126232,"col_bgint":3160,"col_char_2":"WY","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1412209682429,"col_dt":1224633600000,"col_booln":true,"col_dbl":450.283,"col_tm":62477170} +{"col_int":120079,"col_bgint":6736,"col_char_2":"CO","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882429,"col_dt":880243200000,"col_booln":true,"col_dbl":94963.943,"col_tm":16752380} +{"col_int":-179922,"col_bgint":198402,"col_char_2":"NE","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882429,"col_dt":1379289600000,"col_booln":false,"col_dbl":1145.5,"col_tm":25806550} +{"col_int":196285,"col_bgint":84560,"col_char_2":"IA","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1401668882430,"col_dt":-301622400000,"col_booln":false,"col_dbl":95854.701,"col_tm":7694500} +{"col_int":77907,"col_bgint":412832,"col_char_2":"FL","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1401668882430,"col_dt":1000944000000,"col_booln":false,"col_dbl":135568.86,"col_tm":21999400} +{"col_int":0,"col_bgint":0,"col_char_2":"FL","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1401668882430,"col_dt":1000944000000,"col_booln":false,"col_dbl":135568.86,"col_tm":21999400} +{"col_int":-185276,"col_bgint":163150,"col_char_2":"SD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882430,"col_dt":-521596800000,"col_booln":true,"col_dbl":9255.77,"col_tm":37363300} +{"col_int":-14479,"col_bgint":5192,"col_char_2":"IN","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1401668882430,"col_dt":948412800000,"col_booln":false,"col_dbl":1156.47,"col_tm":12482490} +{"col_int":-165881,"col_bgint":7104,"col_char_2":"SD","col_vchar_52":"HXXXXXXXXXXXXXXXXXXXXXXXXXIXXXXXXXXXXXXXXXXXXXXXXXXJ","col_tmstmp":1401668882430,"col_dt":750729600000,"col_booln":false,"col_dbl":14879.08,"col_tm":21046300} +{"col_int":155858,"col_bgint":4640,"col_char_2":"RI","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":991441682430,"col_dt":389750400000,"col_booln":true,"col_dbl":10227.57,"col_tm":40761560} +{"col_int":-8523,"col_bgint":696,"col_char_2":"MN","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1401668882430,"col_dt":-146361600000,"col_booln":true,"col_dbl":1026.051,"col_tm":17111380} +{"col_int":137899,"col_bgint":2799548,"col_char_2":"UT","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":959905682431,"col_dt":-459734400000,"col_booln":true,"col_dbl":1860.97,"col_tm":8261230} +{"col_int":1,"col_bgint":1,"col_char_2":"UT","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1306974482431,"col_dt":-459734400000,"col_booln":true,"col_dbl":1860.97,"col_tm":8261230} +{"col_int":-20449,"col_bgint":5172,"col_char_2":"NY","col_vchar_52":"DXXXXXXXXXXXXXXXXXXXXXXXXXEXXXXXXXXXXXXXXXXXXXXXXXXF","col_tmstmp":1338596882431,"col_dt":-51926400000,"col_booln":false,"col_dbl":438.068,"col_tm":18255480} +{"col_int":-86821,"col_bgint":11648,"col_char_2":"LA","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1401668882431,"col_dt":648172800000,"col_booln":true,"col_dbl":1231.61,"col_tm":82189300} +{"col_int":65535,"col_bgint":65535,"col_char_2":"LA","col_vchar_52":"GXXXXXXXXXXXXXXXXXXXXXXXXXHXXXXXXXXXXXXXXXXXXXXXXXXI","col_tmstmp":1370132882431,"col_dt":648172800000,"col_booln":true,"col_dbl":1231.61,"col_tm":82189300} \ No newline at end of file diff --git a/sql/src/test/resources/drill/window/datasources/t_alltype.parquet.json b/sql/src/test/resources/drill/window/datasources/t_alltype.parquet.json index bef5694f7c70..1663caec1ee2 100644 --- a/sql/src/test/resources/drill/window/datasources/t_alltype.parquet.json +++ b/sql/src/test/resources/drill/window/datasources/t_alltype.parquet.json @@ -1,145 +1,145 @@ -{"c1":1,"c2":592475043,"c3":616080519999272,"c4":"ObHeWTDEcbGzssDwPwurfs","c5":"0sZxIfZ CGwTOaLWZ6nWkUNx","c6":1456290852307,"c7":421426627200000,"c8":true,"c9":0.626179100469} -{"c1":2,"c2":1194343172,"c3":3136812789494,"c4":"bSrLdMAtGNmXsaFkmNpRaZnlPuUuSljiMqxJdgzoViIy","c5":"sluPVQz3991EyMTJL86YF8NEODzE1w2BtcKwPutL5TFUS7MM0c8pEYeWz2uq5pr0f0o0JcV5HRZs6gnwj3CPAdjisUk3LM5DvZcGUMkKpIEfziNrlcCrjRR10vWYVLeG6y5hG1ZsZgoSDWubDY2K1bZOaJTEP26AMDpYwIo","c6":1456290852308,"c7":420167260800000,"c8":true,"c9":0.0794280235964} -{"c1":3,"c2":-581053021,"c3":14567676734720,"c4":"zBmUwoxbiWhazyIFwkyTsCo","c5":"b4iHRz7x3jgWYQASSBusBaOS5KjIKpdxRqEOkVvZSqgwzwS3r1 5C81WnF5RWzLNDOi8qgJK0JrMMjVxOpFi13socmJ94NVelUSvb6umYkzBrZhpzYDFHZmXtAfWzRBkXfESrfYF2ME 5lI2v79oP54eucAvtIQApA1Bak8Fw9VgRznhGwE nKzuew1UpXk6dAW91ag099LyD29bViFQxWzCyf7FFDEy","c6":1456290852309,"c7":421521667200000,"c8":true,"c9":0.256111757801} -{"c1":4,"c2":719544129,"c3":26552329517384,"c4":"VlVwoLMKaardyJCdUttoBDIYVZ","c5":"TwDutiLBRsXHs0K0KvlzY6SHzNDJTpQFOigQ32YOYD7jCEpMJrT2SrvWBk9gJ7idoJhqIjW 4tPTI8u0cxFiEsU1IUNnONTYF5E3fGo8aXdA2Y0CAWqn4nHyY QPnVt3n5FnuQtQ88ayT3a0J86FOc641y4vCrTAqlN3jXVRJ1sg","c6":1456290852309,"c7":422532201600000,"c8":true,"c9":0.367266831393} -{"c1":5,"c2":-265354187,"c3":869394999808,"c4":"gwfrW","c5":"h79IKUK0fji8POwoapUs7YCKsC5WDOI1Oge25fe7QXMAQrxIgyEIhj3upa62rTJxOVA2vCMg6U 4koGrPZzda1aNjvGiK5Qjc0qUPnGCjoGdgjE87rfON4Uu02J5 Q7NiZ15CtSu8IuY6oqYyZclq47L6FC2grvhcuBTRiw9C1zgQ6d1523I2RCONHyYiZi7RrNhziA2tSZCPmI42GYHtjZ","c6":1456290852309,"c7":421190841600000,"c8":false,"c9":0.886914049583} -{"c1":6,"c2":-739409800,"c3":458112011400,"c4":"upOMZlypwcASQHtEkgpYybPwvjCtFHpuJkfNlQBSIrWqznQJEzEV","c5":"tmZET5agjU4yZaPXZDGW8iSPwRmkuGq4dpdkZqtv7edggkdZm3Im1j9okgoqqcuqPmo8r2EDK0bPZdk5YFXutZoAVhK5ecd06gGdNj2tWkSVKO7wqCUR2E7obM9ZYpZlgDecXTjzLvLUYuZy0TV sTjyt8DCU1QnKChPKD MbcopdpZkaJ5vWd5tIM8eYOB5kjdTiLfV3TVYb2LmZGt2f4xHbih odqbeq2ZDeEuFAwaoyL3UQI7Euj8","c6":1456290852310,"c7":421723670400000,"c8":true,"c9":0.492183947524} -{"c1":7,"c2":2022947631,"c3":122811962676,"c4":"ZAFOcferhjkcl","c5":"1wnKPdZ2a6nHOkC5kuo6lpCUtShnNjjjUd4f3vBs7AdhwQDoBPA CRMC7CCBTU VOx38gwZurb9HrSQNRrSd2kDuHB6WpqffMTwNfHPvqxnwHtbh4M8GwVEE0ocFsvYPkd4mIl7 uhdOOOS3H8jZpGa6Yt OoalDERUEcgZz","c6":1456290852311,"c7":420189379200000,"c8":false,"c9":0.60032636853} +{"c1":1,"c2":592475043,"c3":616080519999272,"c4":"ObHeWTDEcbGzssDwPwurfs","c5":"0sZxIfZ CGwTOaLWZ6nWkUNx","c6":1456290852307,"c7":-306979200000,"c8":true,"c9":0.626179100469} +{"c1":2,"c2":1194343172,"c3":3136812789494,"c4":"bSrLdMAtGNmXsaFkmNpRaZnlPuUuSljiMqxJdgzoViIy","c5":"sluPVQz3991EyMTJL86YF8NEODzE1w2BtcKwPutL5TFUS7MM0c8pEYeWz2uq5pr0f0o0JcV5HRZs6gnwj3CPAdjisUk3LM5DvZcGUMkKpIEfziNrlcCrjRR10vWYVLeG6y5hG1ZsZgoSDWubDY2K1bZOaJTEP26AMDpYwIo","c6":1456290852308,"c7":-1566345600000,"c8":true,"c9":0.0794280235964} +{"c1":3,"c2":-581053021,"c3":14567676734720,"c4":"zBmUwoxbiWhazyIFwkyTsCo","c5":"b4iHRz7x3jgWYQASSBusBaOS5KjIKpdxRqEOkVvZSqgwzwS3r1 5C81WnF5RWzLNDOi8qgJK0JrMMjVxOpFi13socmJ94NVelUSvb6umYkzBrZhpzYDFHZmXtAfWzRBkXfESrfYF2ME 5lI2v79oP54eucAvtIQApA1Bak8Fw9VgRznhGwE nKzuew1UpXk6dAW91ag099LyD29bViFQxWzCyf7FFDEy","c6":1456290852309,"c7":-211939200000,"c8":true,"c9":0.256111757801} +{"c1":4,"c2":719544129,"c3":26552329517384,"c4":"VlVwoLMKaardyJCdUttoBDIYVZ","c5":"TwDutiLBRsXHs0K0KvlzY6SHzNDJTpQFOigQ32YOYD7jCEpMJrT2SrvWBk9gJ7idoJhqIjW 4tPTI8u0cxFiEsU1IUNnONTYF5E3fGo8aXdA2Y0CAWqn4nHyY QPnVt3n5FnuQtQ88ayT3a0J86FOc641y4vCrTAqlN3jXVRJ1sg","c6":1456290852309,"c7":798595200000,"c8":true,"c9":0.367266831393} +{"c1":5,"c2":-265354187,"c3":869394999808,"c4":"gwfrW","c5":"h79IKUK0fji8POwoapUs7YCKsC5WDOI1Oge25fe7QXMAQrxIgyEIhj3upa62rTJxOVA2vCMg6U 4koGrPZzda1aNjvGiK5Qjc0qUPnGCjoGdgjE87rfON4Uu02J5 Q7NiZ15CtSu8IuY6oqYyZclq47L6FC2grvhcuBTRiw9C1zgQ6d1523I2RCONHyYiZi7RrNhziA2tSZCPmI42GYHtjZ","c6":1456290852309,"c7":-542764800000,"c8":false,"c9":0.886914049583} +{"c1":6,"c2":-739409800,"c3":458112011400,"c4":"upOMZlypwcASQHtEkgpYybPwvjCtFHpuJkfNlQBSIrWqznQJEzEV","c5":"tmZET5agjU4yZaPXZDGW8iSPwRmkuGq4dpdkZqtv7edggkdZm3Im1j9okgoqqcuqPmo8r2EDK0bPZdk5YFXutZoAVhK5ecd06gGdNj2tWkSVKO7wqCUR2E7obM9ZYpZlgDecXTjzLvLUYuZy0TV sTjyt8DCU1QnKChPKD MbcopdpZkaJ5vWd5tIM8eYOB5kjdTiLfV3TVYb2LmZGt2f4xHbih odqbeq2ZDeEuFAwaoyL3UQI7Euj8","c6":1456290852310,"c7":-9936000000,"c8":true,"c9":0.492183947524} +{"c1":7,"c2":2022947631,"c3":122811962676,"c4":"ZAFOcferhjkcl","c5":"1wnKPdZ2a6nHOkC5kuo6lpCUtShnNjjjUd4f3vBs7AdhwQDoBPA CRMC7CCBTU VOx38gwZurb9HrSQNRrSd2kDuHB6WpqffMTwNfHPvqxnwHtbh4M8GwVEE0ocFsvYPkd4mIl7 uhdOOOS3H8jZpGa6Yt OoalDERUEcgZz","c6":1456290852311,"c7":-1544227200000,"c8":false,"c9":0.60032636853} {"c1":8,"c2":null,"c3":null,"c4":null,"c5":null,"c6":null,"c7":null,"c8":null,"c9":null} -{"c1":9,"c2":358750156,"c3":128037619138,"c4":"rNMsKIDnkuQFIYoJorACrHkFprLYMpp","c5":"fEwIVF31I9jk4C04qBYtw6pxswxIuThE3id0UuKTp6CgcnP9eNlVwJh82xvwsN 8CmX1RSQhtozud6Umv6kLCKSVF7BQbxRS07V78HgbrH0ZDV","c6":1456290852311,"c7":420977606400000,"c8":false,"c9":0.361570558696} -{"c1":10,"c2":-116481491,"c3":362751773072,"c4":"IcStZtjaSEfWDmrulvsnCwUQvfgn","c5":"aTISWde3pj5OJd9l7Zo7j9Kn8RRdWimrrPlc5BDFN3xpqrliH3Che9OJERMsQgwiafBwavLrTe21ORPrcml4Bh44fDbC4fBVvMMLTPVWbmgvmXm02Ct7A1WBMTM2C74LLJmIdZwPpwMXumO5dYZg8Z3KU2FnJ2bl80qqgyjJNlv9","c6":1456290852312,"c7":422991244800000,"c8":true,"c9":0.488525932471} -{"c1":11,"c2":993964305,"c3":713109032528,"c4":"TuFaJOrTexEQKCXg","c5":"9VLdcEruZzhtTbrz6Tu5vvfwwIy7jVtc7R5XEeZY","c6":1456291198301,"c7":420906067200000,"c8":true,"c9":0.957695228383} -{"c1":12,"c2":-1735090787,"c3":841324401984,"c4":"dPRmWDinhineYImsqZzRZSSMx","c5":"srBmkYpJY7TC0W","c6":1456291198302,"c7":420699571200000,"c8":false,"c9":0.707961195747} -{"c1":13,"c2":-101621245,"c3":4569922715352,"c4":"KkQGklqtAFOBwaNXDWkN","c5":"WMhbfG37BBZSwtryJVwMlS67TYe5UjqLYa5pHES13GC","c6":1456291198302,"c7":421197494400000,"c8":true,"c9":0.156305915074} -{"c1":14,"c2":202631122,"c3":6199873199432,"c4":"qV","c5":"w5Cs5Jas0T","c6":1456291198303,"c7":421541020800000,"c8":false,"c9":0.709658352873} -{"c1":15,"c2":-1800226884,"c3":2408646998880,"c4":"AtfZqknYOrYBXcFCORVnzcKmXyaEe","c5":"xfxBmCGvTcaBxEFXSvPQTaCZRCgE9Cus","c6":1456291198303,"c7":421215984000000,"c8":false,"c9":0.22155866245} -{"c1":16,"c2":2042714193,"c3":2437409008036,"c4":"BQyDpxxWldiVnQlFFfasgfwIIzpgJd","c5":"YF6qr4rAyBrHa94CosX6BWpfbwE8EXWXrupuFPoekm G1PE6vTKeliuW gxuq","c6":1456291198304,"c7":420776899200000,"c8":false,"c9":0.305618728365} -{"c1":17,"c2":-1236268475,"c3":90275297566,"c4":"OGnxbGFEaWMZhrJ","c5":"Tc0A7vQFGyzGXnoa90wXRVEMaZMmSTix2IqRw48WKqE50hCw","c6":1456291198305,"c7":423092073600000,"c8":true,"c9":0.141061129745} -{"c1":18,"c2":-1451268845,"c3":7456257725280,"c4":"HAUtIjkTOkHLzjhucQeLuH","c5":"a","c6":1456291198305,"c7":420537052800000,"c8":false,"c9":0.555072055925} -{"c1":19,"c2":-148845,"c3":3757280,"c4":"HALzjhucQeLuH","c5":null,"c6":1456291198305,"c7":419905900800000,"c8":false,"c9":0.455072055925} -{"c1":20,"c2":533611126,"c3":784427291198608,"c4":"JgPGWgjgNEjMXYYmWtC","c5":"PY250MG5pFd3NgQJGckqfC9mwY0DNazIAFmqRy1J","c6":1456291198305,"c7":420459120000000,"c8":false,"c9":0.355503179385} -{"c1":21,"c2":-642124822,"c3":43598566290864,"c4":"syewpw","c5":"iV24XUsay9jBU2wZgUoCErzIYo","c6":1456291198306,"c7":421299705600000,"c8":true,"c9":0.456846886729} -{"c1":22,"c2":735561305,"c3":6307081519934,"c4":"tMi","c5":"ig9ClFlYmzIAb99UFoGaUyjSorP9E9qA34km539T4so3qm9kRZZTZ","c6":1456291198306,"c7":422750188800000,"c8":true,"c9":0.740283135928} -{"c1":23,"c2":-350986527,"c3":69653384392040,"c4":"DkPvPKYuCdSatlPrzU","c5":"zfSgmg7tAawKVSJhkipg2nSNuprAp75eKDJry0focwPij J4hE","c6":1456291198311,"c7":420485040000000,"c8":false,"c9":0.336419256965} -{"c1":24,"c2":1847465545,"c3":38629268606556,"c4":"PV","c5":"D9lY2D4VJGmFffgSV9MoyojaAjNVxcVyBiEdHN911nwK EBRi2wwFuWwbnyLl","c6":1456291198312,"c7":420271459200000,"c8":false,"c9":0.964243969107} -{"c1":25,"c2":1442790109,"c3":61368071783056,"c4":"myUrrzUHGnxasz","c5":"wyweWUTyBPuo3jOBJLPfSWqji","c6":1456291198313,"c7":422857238400000,"c8":false,"c9":0.507695339931} -{"c1":26,"c2":-2125195491,"c3":57004017502044,"c4":"iqwqmwkUhrtTliZiPXRTstVpqgm","c5":"yCko0ouh0ueXmXK0O9 MPvLcCmlp7d7AI4ca1ru8d4jGGtbPc7mPx","c6":1456291198314,"c7":420243120000000,"c8":false,"c9":0.962960554859} -{"c1":27,"c2":-603256047,"c3":64691852740816,"c4":"lXEgAlS","c5":"7ceX9a22fDB1wb9RUb6TQWqvkbE6sXp2Sq0Lt","c6":1456291198314,"c7":420876604800000,"c8":false,"c9":0.940132365478} -{"c1":28,"c2":-1806928495,"c3":73151265354384,"c4":"yfjoc","c5":"sqxWGArGIX5jKOvvOI6BjG2l","c6":1456291198315,"c7":423006883200000,"c8":true,"c9":0.769634808418} -{"c1":29,"c2":-926147543,"c3":18430182,"c4":"kyTyhomxLi","c5":"9TR790gkKg3KMkc5k47V9QAuos2Ojig04QwTdO5nB","c6":1456291198315,"c7":421728768000000,"c8":false,"c9":0.754223352027} -{"c1":30,"c2":626932646,"c3":3285206109420,"c4":"IWZriOkCaYLDGOzMSp","c5":"oSv1RhKIOtLgOLe","c6":1456291198316,"c7":422313868800000,"c8":false,"c9":0.444467141108} -{"c1":31,"c2":-430498956,"c3":1258459028142,"c4":"V","c5":"Q1Am3KtwYAQx Vj7kk9nsawCmN BRciIQiN3hF","c6":1456291701220,"c7":420287529600000,"c8":true,"c9":0.210929121391} -{"c1":32,"c2":-938167176,"c3":6017016766800,"c4":"PStTin","c5":"dfOY 50EejHegPw9axCPz","c6":1456291701221,"c7":420197328000000,"c8":false,"c9":0.827238030237} -{"c1":33,"c2":-464056232,"c3":269431279554,"c4":"HHqSmnhL","c5":"VVRz QWFjn96AtBYO7eR001KZwKGLUrEqeMrPVcKSbQowuQ90XXFrl3iG","c6":1456291701221,"c7":422397676800000,"c8":true,"c9":0.764629411376} -{"c1":34,"c2":-1564810747,"c3":471032170712,"c4":"XJF","c5":"8D9e1bT5wwFpLD1Hr92VKaCQJS","c6":1456291701222,"c7":421392844800000,"c8":true,"c9":0.804630256964} -{"c1":35,"c2":2047004122,"c3":6190065899528,"c4":"PAobaowvKNSaPsKEdhLtCRWe","c5":"wGlZo1sVGPg","c6":1456291701222,"c7":422983382400000,"c8":false,"c9":0.119950105444} -{"c1":36,"c2":-682355573,"c3":879651728,"c4":"BANiwCtAOccuLIqNMVOQGBIQKNw","c5":"KxgxdOznNSNaltnFxkxj94qZ7C05fwQVUyBkN","c6":1456291701222,"c7":423138556800000,"c8":true,"c9":0.152121113454} -{"c1":37,"c2":1168899469,"c3":311335712,"c4":"bQoLkPBFAUXqcMpcp","c5":"6YE84Kb8G6Z8 HR9qkTp30a7cnBh3T rC1uWP4o3S7DSm","c6":1456291701222,"c7":422246476800000,"c8":false,"c9":0.674319849007} -{"c1":38,"c2":-1678398290,"c3":895040440,"c4":"CSavGyXMbAANckDiCshpuNzCmBXuHbHw","c5":"V VabLjrkDF4IJ7twnT9gqTv","c6":1456291701223,"c7":420476140800000,"c8":false,"c9":0.249230799416} -{"c1":39,"c2":-1433668371,"c3":102790112,"c4":"yytBlhCMRSmV","c5":"fanhgAi1Cla 3lwYXQTvWYdIvTF5ziIBc","c6":1456291701223,"c7":421929648000000,"c8":false,"c9":0.538207272457} -{"c1":40,"c2":1300934512,"c3":1526006148,"c4":"WYqpkjPLSeCA","c5":"4wK m9vhE XTHlpHv1U","c6":1456291701224,"c7":420625958400000,"c8":true,"c9":0.0125838026238} -{"c1":41,"c2":67513000,"c3":8652621344,"c4":"cTPjdg","c5":"KvYiWTtwEwEBTWUArtiUnPciZY V8VzRIVI03Gyt","c6":1456291701225,"c7":421659302400000,"c8":true,"c9":0.0616766496679} -{"c1":42,"c2":1071705345,"c3":774763920,"c4":"YfwqGtgVkBewvkIlQnEEnt","c5":"EtNWvXm45 Tw5CI9YjwflvI4zVqHUUpLal rAt2f8X0Wfp","c6":1456291701225,"c7":421992201600000,"c8":false,"c9":0.881191135812} -{"c1":43,"c2":-705176971,"c3":1305480928,"c4":"xLYbWdnPrlTIt","c5":"mGVBbGVhQkAhjQdAhiWAwHlCNN5f1wggwKxRjsBBbmlvodajek4E1r","c6":1456291701225,"c7":420234825600000,"c8":false,"c9":0.0963362944467} -{"c1":44,"c2":-790060808,"c3":2091106612,"c4":"chvsFysOhXbqRnniYOGeLUppugM","c5":"XZkwRGa0gxPwmnAG4VOQ1bNNgzM9cO1RzrcynKKBssqEP3BeEhibq","c6":1456291701226,"c7":420386025600000,"c8":false,"c9":0.292481581027} -{"c1":45,"c2":1221413457,"c3":8339791280,"c4":"SeQaEfXkDgumVjpOKOglGiXVe","c5":"CwZrVQVWdAfMtFcqWFJzjTcrnpWT48Rbkd7CO","c6":1456291701227,"c7":421768425600000,"c8":false,"c9":0.648820911939} -{"c1":46,"c2":627701102,"c3":33308856,"c4":"qaOEIqTfNGD","c5":"OoDOYgbcJ09XmxqPv1e","c6":1456291701227,"c7":422446579200000,"c8":true,"c9":0.40799240898} -{"c1":47,"c2":-841849915,"c3":42746339248,"c4":"YPiESbIjBms","c5":"xFfL8aYVA5EiiSWmvKkHAYRGYCiqctdxQwdkH4DOP","c6":1456291701228,"c7":420577660800000,"c8":false,"c9":0.324089746843} -{"c1":48,"c2":735186776,"c3":61478943200,"c4":"BJIPsOpsMTNRCO","c5":"80Z7O0f6A6fj1Beww7oOkwLSZdjO","c6":1456291701228,"c7":421328044800000,"c8":false,"c9":0.359520992037} -{"c1":49,"c2":56927672,"c3":84551700064,"c4":"Y","c5":"Wvu9T8ilDl8k3oaB0PFNjHirDoMdwv1YYCah6ahqiuATp1","c6":1456291701229,"c7":421813180800000,"c8":true,"c9":0.328379339497} -{"c1":50,"c2":1182933670,"c3":45692038432,"c4":"whFjvGloFQxwYmvLkshjwnADhUQlV","c5":"yt49EB4Y2RAnPQXNwTqfp7qzgDH1Jf1rjY0FnpIp2y4","c6":1456292105544,"c7":423012153600000,"c8":true,"c9":0.835195212647} -{"c1":51,"c2":980460718,"c3":5971386168,"c4":"OMJEMdywCTpQgqJUYDuKDxAPBkWdEP","c5":"akbcHSDflWlG8K6MFnIOOLBMZ4z8NV2FecgqpLO8","c6":1456292105544,"c7":420768691200000,"c8":true,"c9":0.0594494786115} -{"c1":52,"c2":-1263020365,"c3":17414114976,"c4":"vkUYqgXGGfELNjVwyYKVJMd","c5":"7zP0naU","c6":1456292105545,"c7":422403206400000,"c8":false,"c9":0.128559830476} -{"c1":53,"c2":-2078473628,"c3":23813625600,"c4":"PVAKCnVrihXStlfqJf","c5":"HKyyDE7cHRTzEQX2F","c6":1456292105545,"c7":421790371200000,"c8":true,"c9":0.497832439707} -{"c1":54,"c2":-388853860,"c3":4882213296,"c4":"NkSynIivNZiIplsAegulLrz","c5":"2AWYA664YJkqeGXGZeI8vf3fhX06wjhlUoRdzRBJnylTOnUsrz3LcyxbTyIQHr1YCMXl9jFx6LyhnaOYZorN4rOazR44zI2","c6":1456292105546,"c7":422153337600000,"c8":false,"c9":0.806218120908} -{"c1":55,"c2":147766593,"c3":3544613368,"c4":"ByZRmalvDsZD","c5":"XgulsUB2lwxhZaMz0POOTcxIAt7mPaBialPFYzth6Aa54OPBoTY9nlJpXWf89oIczO0QVg5lbkmQQUlljIMEe2Mh8rjtDoYox2uDykAXeH0BXGVtOZ12EIwe","c6":1456292105546,"c7":421184448000000,"c8":true,"c9":0.189172246469} -{"c1":56,"c2":420230528,"c3":7209802880,"c4":"ZwiFgCchxUqJTEShealG","c5":"K7RQD052LFrkPBfuL9hIihch","c6":1456292105546,"c7":422883417600000,"c8":true,"c9":0.462810537514} -{"c1":57,"c2":-1894216997,"c3":5384805744,"c4":"eBKZaQYxrdPMRRwgeqPtJjxjqOBqUH","c5":"z7cJERSftFvbtxxgVbdF31jZCHmkHBmazWaHAa3eKAp1PPEObxkcuhjA1vf6cSlGe4TT8Yektdwqcr1Jd","c6":1456292105546,"c7":420506121600000,"c8":true,"c9":0.604145500315} -{"c1":58,"c2":-263032861,"c3":56565941904,"c4":"dqXVKoNjMFKcIszKFRXCotmbejjxGU","c5":"3QDSogOdQYe6NfDPkEPIHhtECUKeT3eXsRdbwCj3omYIHz3HX","c6":1456292105547,"c7":420541459200000,"c8":false,"c9":0.472430725946} -{"c1":59,"c2":-1661674051,"c3":9595495792,"c4":"atHZ","c5":"7SWlwF1qaCNs3Jea1NollJfLsgTK95yuo","c6":1456292105547,"c7":421871846400000,"c8":true,"c9":0.0923867105652} -{"c1":60,"c2":-1129907976,"c3":6907332688,"c4":"Mc","c5":"4FN","c6":1456292105547,"c7":421541020800000,"c8":false,"c9":0.701638057307} -{"c1":61,"c2":-514254242,"c3":195633336,"c4":"kenCPo","c5":"eqVUbd9TzGrQS2W1HuV1apKCt1rkYLRTHgED2RIk1jhowGYzlRa2DVMpzTVc8RVO44rm9stOD9uvJPLNE48jVMQfhLwtNDlKXUchY8N0FOEsMW2G37X7dYnzod","c6":1456292105547,"c7":422432323200000,"c8":true,"c9":0.511369563541} +{"c1":9,"c2":358750156,"c3":128037619138,"c4":"rNMsKIDnkuQFIYoJorACrHkFprLYMpp","c5":"fEwIVF31I9jk4C04qBYtw6pxswxIuThE3id0UuKTp6CgcnP9eNlVwJh82xvwsN 8CmX1RSQhtozud6Umv6kLCKSVF7BQbxRS07V78HgbrH0ZDV","c6":1456290852311,"c7":-756000000000,"c8":false,"c9":0.361570558696} +{"c1":10,"c2":-116481491,"c3":362751773072,"c4":"IcStZtjaSEfWDmrulvsnCwUQvfgn","c5":"aTISWde3pj5OJd9l7Zo7j9Kn8RRdWimrrPlc5BDFN3xpqrliH3Che9OJERMsQgwiafBwavLrTe21ORPrcml4Bh44fDbC4fBVvMMLTPVWbmgvmXm02Ct7A1WBMTM2C74LLJmIdZwPpwMXumO5dYZg8Z3KU2FnJ2bl80qqgyjJNlv9","c6":1456290852312,"c7":1257638400000,"c8":true,"c9":0.488525932471} +{"c1":11,"c2":993964305,"c3":713109032528,"c4":"TuFaJOrTexEQKCXg","c5":"9VLdcEruZzhtTbrz6Tu5vvfwwIy7jVtc7R5XEeZY","c6":1456291198301,"c7":-827539200000,"c8":true,"c9":0.957695228383} +{"c1":12,"c2":-1735090787,"c3":841324401984,"c4":"dPRmWDinhineYImsqZzRZSSMx","c5":"srBmkYpJY7TC0W","c6":1456291198302,"c7":-1034035200000,"c8":false,"c9":0.707961195747} +{"c1":13,"c2":-101621245,"c3":4569922715352,"c4":"KkQGklqtAFOBwaNXDWkN","c5":"WMhbfG37BBZSwtryJVwMlS67TYe5UjqLYa5pHES13GC","c6":1456291198302,"c7":-536112000000,"c8":true,"c9":0.156305915074} +{"c1":14,"c2":202631122,"c3":6199873199432,"c4":"qV","c5":"w5Cs5Jas0T","c6":1456291198303,"c7":-192585600000,"c8":false,"c9":0.709658352873} +{"c1":15,"c2":-1800226884,"c3":2408646998880,"c4":"AtfZqknYOrYBXcFCORVnzcKmXyaEe","c5":"xfxBmCGvTcaBxEFXSvPQTaCZRCgE9Cus","c6":1456291198303,"c7":-517622400000,"c8":false,"c9":0.22155866245} +{"c1":16,"c2":2042714193,"c3":2437409008036,"c4":"BQyDpxxWldiVnQlFFfasgfwIIzpgJd","c5":"YF6qr4rAyBrHa94CosX6BWpfbwE8EXWXrupuFPoekm G1PE6vTKeliuW gxuq","c6":1456291198304,"c7":-956707200000,"c8":false,"c9":0.305618728365} +{"c1":17,"c2":-1236268475,"c3":90275297566,"c4":"OGnxbGFEaWMZhrJ","c5":"Tc0A7vQFGyzGXnoa90wXRVEMaZMmSTix2IqRw48WKqE50hCw","c6":1456291198305,"c7":1358467200000,"c8":true,"c9":0.141061129745} +{"c1":18,"c2":-1451268845,"c3":7456257725280,"c4":"HAUtIjkTOkHLzjhucQeLuH","c5":"a","c6":1456291198305,"c7":-1196553600000,"c8":false,"c9":0.555072055925} +{"c1":19,"c2":-148845,"c3":3757280,"c4":"HALzjhucQeLuH","c5":null,"c6":1456291198305,"c7":-1827705600000,"c8":false,"c9":0.455072055925} +{"c1":20,"c2":533611126,"c3":784427291198608,"c4":"JgPGWgjgNEjMXYYmWtC","c5":"PY250MG5pFd3NgQJGckqfC9mwY0DNazIAFmqRy1J","c6":1456291198305,"c7":-1274486400000,"c8":false,"c9":0.355503179385} +{"c1":21,"c2":-642124822,"c3":43598566290864,"c4":"syewpw","c5":"iV24XUsay9jBU2wZgUoCErzIYo","c6":1456291198306,"c7":-433900800000,"c8":true,"c9":0.456846886729} +{"c1":22,"c2":735561305,"c3":6307081519934,"c4":"tMi","c5":"ig9ClFlYmzIAb99UFoGaUyjSorP9E9qA34km539T4so3qm9kRZZTZ","c6":1456291198306,"c7":1016582400000,"c8":true,"c9":0.740283135928} +{"c1":23,"c2":-350986527,"c3":69653384392040,"c4":"DkPvPKYuCdSatlPrzU","c5":"zfSgmg7tAawKVSJhkipg2nSNuprAp75eKDJry0focwPij J4hE","c6":1456291198311,"c7":-1248566400000,"c8":false,"c9":0.336419256965} +{"c1":24,"c2":1847465545,"c3":38629268606556,"c4":"PV","c5":"D9lY2D4VJGmFffgSV9MoyojaAjNVxcVyBiEdHN911nwK EBRi2wwFuWwbnyLl","c6":1456291198312,"c7":-1462147200000,"c8":false,"c9":0.964243969107} +{"c1":25,"c2":1442790109,"c3":61368071783056,"c4":"myUrrzUHGnxasz","c5":"wyweWUTyBPuo3jOBJLPfSWqji","c6":1456291198313,"c7":1123632000000,"c8":false,"c9":0.507695339931} +{"c1":26,"c2":-2125195491,"c3":57004017502044,"c4":"iqwqmwkUhrtTliZiPXRTstVpqgm","c5":"yCko0ouh0ueXmXK0O9 MPvLcCmlp7d7AI4ca1ru8d4jGGtbPc7mPx","c6":1456291198314,"c7":-1490486400000,"c8":false,"c9":0.962960554859} +{"c1":27,"c2":-603256047,"c3":64691852740816,"c4":"lXEgAlS","c5":"7ceX9a22fDB1wb9RUb6TQWqvkbE6sXp2Sq0Lt","c6":1456291198314,"c7":-857001600000,"c8":false,"c9":0.940132365478} +{"c1":28,"c2":-1806928495,"c3":73151265354384,"c4":"yfjoc","c5":"sqxWGArGIX5jKOvvOI6BjG2l","c6":1456291198315,"c7":1273276800000,"c8":true,"c9":0.769634808418} +{"c1":29,"c2":-926147543,"c3":18430182,"c4":"kyTyhomxLi","c5":"9TR790gkKg3KMkc5k47V9QAuos2Ojig04QwTdO5nB","c6":1456291198315,"c7":-4838400000,"c8":false,"c9":0.754223352027} +{"c1":30,"c2":626932646,"c3":3285206109420,"c4":"IWZriOkCaYLDGOzMSp","c5":"oSv1RhKIOtLgOLe","c6":1456291198316,"c7":580262400000,"c8":false,"c9":0.444467141108} +{"c1":31,"c2":-430498956,"c3":1258459028142,"c4":"V","c5":"Q1Am3KtwYAQx Vj7kk9nsawCmN BRciIQiN3hF","c6":1456291701220,"c7":-1446076800000,"c8":true,"c9":0.210929121391} +{"c1":32,"c2":-938167176,"c3":6017016766800,"c4":"PStTin","c5":"dfOY 50EejHegPw9axCPz","c6":1456291701221,"c7":-1536278400000,"c8":false,"c9":0.827238030237} +{"c1":33,"c2":-464056232,"c3":269431279554,"c4":"HHqSmnhL","c5":"VVRz QWFjn96AtBYO7eR001KZwKGLUrEqeMrPVcKSbQowuQ90XXFrl3iG","c6":1456291701221,"c7":664070400000,"c8":true,"c9":0.764629411376} +{"c1":34,"c2":-1564810747,"c3":471032170712,"c4":"XJF","c5":"8D9e1bT5wwFpLD1Hr92VKaCQJS","c6":1456291701222,"c7":-340761600000,"c8":true,"c9":0.804630256964} +{"c1":35,"c2":2047004122,"c3":6190065899528,"c4":"PAobaowvKNSaPsKEdhLtCRWe","c5":"wGlZo1sVGPg","c6":1456291701222,"c7":1249776000000,"c8":false,"c9":0.119950105444} +{"c1":36,"c2":-682355573,"c3":879651728,"c4":"BANiwCtAOccuLIqNMVOQGBIQKNw","c5":"KxgxdOznNSNaltnFxkxj94qZ7C05fwQVUyBkN","c6":1456291701222,"c7":1404950400000,"c8":true,"c9":0.152121113454} +{"c1":37,"c2":1168899469,"c3":311335712,"c4":"bQoLkPBFAUXqcMpcp","c5":"6YE84Kb8G6Z8 HR9qkTp30a7cnBh3T rC1uWP4o3S7DSm","c6":1456291701222,"c7":512870400000,"c8":false,"c9":0.674319849007} +{"c1":38,"c2":-1678398290,"c3":895040440,"c4":"CSavGyXMbAANckDiCshpuNzCmBXuHbHw","c5":"V VabLjrkDF4IJ7twnT9gqTv","c6":1456291701223,"c7":-1257465600000,"c8":false,"c9":0.249230799416} +{"c1":39,"c2":-1433668371,"c3":102790112,"c4":"yytBlhCMRSmV","c5":"fanhgAi1Cla 3lwYXQTvWYdIvTF5ziIBc","c6":1456291701223,"c7":196041600000,"c8":false,"c9":0.538207272457} +{"c1":40,"c2":1300934512,"c3":1526006148,"c4":"WYqpkjPLSeCA","c5":"4wK m9vhE XTHlpHv1U","c6":1456291701224,"c7":-1107648000000,"c8":true,"c9":0.0125838026238} +{"c1":41,"c2":67513000,"c3":8652621344,"c4":"cTPjdg","c5":"KvYiWTtwEwEBTWUArtiUnPciZY V8VzRIVI03Gyt","c6":1456291701225,"c7":-74304000000,"c8":true,"c9":0.0616766496679} +{"c1":42,"c2":1071705345,"c3":774763920,"c4":"YfwqGtgVkBewvkIlQnEEnt","c5":"EtNWvXm45 Tw5CI9YjwflvI4zVqHUUpLal rAt2f8X0Wfp","c6":1456291701225,"c7":258595200000,"c8":false,"c9":0.881191135812} +{"c1":43,"c2":-705176971,"c3":1305480928,"c4":"xLYbWdnPrlTIt","c5":"mGVBbGVhQkAhjQdAhiWAwHlCNN5f1wggwKxRjsBBbmlvodajek4E1r","c6":1456291701225,"c7":-1498780800000,"c8":false,"c9":0.0963362944467} +{"c1":44,"c2":-790060808,"c3":2091106612,"c4":"chvsFysOhXbqRnniYOGeLUppugM","c5":"XZkwRGa0gxPwmnAG4VOQ1bNNgzM9cO1RzrcynKKBssqEP3BeEhibq","c6":1456291701226,"c7":-1347580800000,"c8":false,"c9":0.292481581027} +{"c1":45,"c2":1221413457,"c3":8339791280,"c4":"SeQaEfXkDgumVjpOKOglGiXVe","c5":"CwZrVQVWdAfMtFcqWFJzjTcrnpWT48Rbkd7CO","c6":1456291701227,"c7":34819200000,"c8":false,"c9":0.648820911939} +{"c1":46,"c2":627701102,"c3":33308856,"c4":"qaOEIqTfNGD","c5":"OoDOYgbcJ09XmxqPv1e","c6":1456291701227,"c7":712972800000,"c8":true,"c9":0.40799240898} +{"c1":47,"c2":-841849915,"c3":42746339248,"c4":"YPiESbIjBms","c5":"xFfL8aYVA5EiiSWmvKkHAYRGYCiqctdxQwdkH4DOP","c6":1456291701228,"c7":-1155945600000,"c8":false,"c9":0.324089746843} +{"c1":48,"c2":735186776,"c3":61478943200,"c4":"BJIPsOpsMTNRCO","c5":"80Z7O0f6A6fj1Beww7oOkwLSZdjO","c6":1456291701228,"c7":-405561600000,"c8":false,"c9":0.359520992037} +{"c1":49,"c2":56927672,"c3":84551700064,"c4":"Y","c5":"Wvu9T8ilDl8k3oaB0PFNjHirDoMdwv1YYCah6ahqiuATp1","c6":1456291701229,"c7":79574400000,"c8":true,"c9":0.328379339497} +{"c1":50,"c2":1182933670,"c3":45692038432,"c4":"whFjvGloFQxwYmvLkshjwnADhUQlV","c5":"yt49EB4Y2RAnPQXNwTqfp7qzgDH1Jf1rjY0FnpIp2y4","c6":1456292105544,"c7":1278547200000,"c8":true,"c9":0.835195212647} +{"c1":51,"c2":980460718,"c3":5971386168,"c4":"OMJEMdywCTpQgqJUYDuKDxAPBkWdEP","c5":"akbcHSDflWlG8K6MFnIOOLBMZ4z8NV2FecgqpLO8","c6":1456292105544,"c7":-964915200000,"c8":true,"c9":0.0594494786115} +{"c1":52,"c2":-1263020365,"c3":17414114976,"c4":"vkUYqgXGGfELNjVwyYKVJMd","c5":"7zP0naU","c6":1456292105545,"c7":669600000000,"c8":false,"c9":0.128559830476} +{"c1":53,"c2":-2078473628,"c3":23813625600,"c4":"PVAKCnVrihXStlfqJf","c5":"HKyyDE7cHRTzEQX2F","c6":1456292105545,"c7":56764800000,"c8":true,"c9":0.497832439707} +{"c1":54,"c2":-388853860,"c3":4882213296,"c4":"NkSynIivNZiIplsAegulLrz","c5":"2AWYA664YJkqeGXGZeI8vf3fhX06wjhlUoRdzRBJnylTOnUsrz3LcyxbTyIQHr1YCMXl9jFx6LyhnaOYZorN4rOazR44zI2","c6":1456292105546,"c7":419731200000,"c8":false,"c9":0.806218120908} +{"c1":55,"c2":147766593,"c3":3544613368,"c4":"ByZRmalvDsZD","c5":"XgulsUB2lwxhZaMz0POOTcxIAt7mPaBialPFYzth6Aa54OPBoTY9nlJpXWf89oIczO0QVg5lbkmQQUlljIMEe2Mh8rjtDoYox2uDykAXeH0BXGVtOZ12EIwe","c6":1456292105546,"c7":-549158400000,"c8":true,"c9":0.189172246469} +{"c1":56,"c2":420230528,"c3":7209802880,"c4":"ZwiFgCchxUqJTEShealG","c5":"K7RQD052LFrkPBfuL9hIihch","c6":1456292105546,"c7":1149811200000,"c8":true,"c9":0.462810537514} +{"c1":57,"c2":-1894216997,"c3":5384805744,"c4":"eBKZaQYxrdPMRRwgeqPtJjxjqOBqUH","c5":"z7cJERSftFvbtxxgVbdF31jZCHmkHBmazWaHAa3eKAp1PPEObxkcuhjA1vf6cSlGe4TT8Yektdwqcr1Jd","c6":1456292105546,"c7":-1227484800000,"c8":true,"c9":0.604145500315} +{"c1":58,"c2":-263032861,"c3":56565941904,"c4":"dqXVKoNjMFKcIszKFRXCotmbejjxGU","c5":"3QDSogOdQYe6NfDPkEPIHhtECUKeT3eXsRdbwCj3omYIHz3HX","c6":1456292105547,"c7":-1192147200000,"c8":false,"c9":0.472430725946} +{"c1":59,"c2":-1661674051,"c3":9595495792,"c4":"atHZ","c5":"7SWlwF1qaCNs3Jea1NollJfLsgTK95yuo","c6":1456292105547,"c7":138240000000,"c8":true,"c9":0.0923867105652} +{"c1":60,"c2":-1129907976,"c3":6907332688,"c4":"Mc","c5":"4FN","c6":1456292105547,"c7":-192585600000,"c8":false,"c9":0.701638057307} +{"c1":61,"c2":-514254242,"c3":195633336,"c4":"kenCPo","c5":"eqVUbd9TzGrQS2W1HuV1apKCt1rkYLRTHgED2RIk1jhowGYzlRa2DVMpzTVc8RVO44rm9stOD9uvJPLNE48jVMQfhLwtNDlKXUchY8N0FOEsMW2G37X7dYnzod","c6":1456292105547,"c7":698716800000,"c8":true,"c9":0.511369563541} {"c1":62,"c2":null,"c3":null,"c4":null,"c5":null,"c6":null,"c7":null,"c8":null,"c9":null} -{"c1":63,"c2":-535361692,"c3":19818839912000624,"c4":"aAbGSv","c5":"yNVubV8dlc8KC8aijpwxEFyYSqtI8iiAQeZJAQMKUqTKMD5EqFSG4z3AraZ9dX","c6":1456292105548,"c7":422959968000000,"c8":true,"c9":0.587212121798} -{"c1":64,"c2":-960817944,"c3":295389276379024,"c4":"ToiqQVHAUTzNXZxhxT","c5":"pf7gyDzSkNhMD1Cio9GnoDpe7tFF6lPUfskrdSBrdmkPrwPN5YrF8cYArRXsqeiWiUwhbQ","c6":1456292105548,"c7":422200339200000,"c8":false,"c9":0.425544340933} -{"c1":65,"c2":2079413364,"c3":875274205296,"c4":"QiyvPpHnbIkkLsJeF","c5":"cuX2mutS6Dt23LpVfQ4RhuZ2upAZZxSDl3NQjHYecHX6UpRud5J5GUO2yKikEShe1AeqzPbW2W3GVn3pwpt5k9SFo5BbAQSgBpXWe7OUYuLB6XE0VPbSk6RK","c6":1456292105549,"c7":420572131200000,"c8":false,"c9":0.201374181269} -{"c1":66,"c2":-786819448,"c3":64868238648,"c4":"h","c5":"ScG74UmrI77csOCHrVQQMGnAtWw0IOpLtDTp6xF8eH2MxrvjwW5BhxTKxSelvvDK4LJlO0YhFW6CoZM62aUEkOmtXnTBp7KH4lAiCPW2lnC5DEHn","c6":1456292105549,"c7":420490656000000,"c8":true,"c9":0.795415967241} -{"c1":67,"c2":1250142164,"c3":6916992,"c4":"vpZxaEsZkTwnMmmWa","c5":"dQxtZCEAviuZYSdc4sgLjb","c6":1456292105549,"c7":422506281600000,"c8":false,"c9":0.556953353203} -{"c1":68,"c2":-38579995,"c3":233512622900,"c4":"JgwMVLyvDb","c5":"fwuYfa4PJlIQoxfetQdAaVY4VvbbX0N9E641","c6":1456292105550,"c7":423074275200000,"c8":false,"c9":0.453069633364} -{"c1":69,"c2":-1027828328,"c3":40672068432544096,"c4":"TZGIkEEfJb","c5":"RftjjeGNAAGDTikjbjJ6U4GxR8ZRGclneqPib9RyyXI37Rr8E3DstJ55jBpN4KY1j2Dp44l6NkRvDHQO","c6":1456292105550,"c7":422924976000000,"c8":false,"c9":0.998189105778} -{"c1":70,"c2":-569066973,"c3":8907959568528,"c4":"eah","c5":"2svWW0","c6":1456292148510,"c7":423076867200000,"c8":false,"c9":0.264360661376} -{"c1":71,"c2":815270244,"c3":15558122158,"c4":"l","c5":"5rZomJ4gkusDD","c6":1456292148510,"c7":420599520000000,"c8":true,"c9":0.85139020182} -{"c1":72,"c2":-2085514660,"c3":1345100636752,"c4":"Gb","c5":"VecY","c6":1456292148511,"c7":421304976000000,"c8":false,"c9":0.159955514577} -{"c1":73,"c2":-2086451715,"c3":778834561344,"c4":"LGGRD","c5":"Dv1","c6":1456292148511,"c7":422926185600000,"c8":false,"c9":0.892355433411} -{"c1":74,"c2":1317696149,"c3":13607285678,"c4":"Zf","c5":"h6rrw","c6":1456292148512,"c7":420486422400000,"c8":true,"c9":0.226484732} -{"c1":75,"c2":-475078365,"c3":591562831712,"c4":"Gas","c5":"Az81IOQGM1","c6":1456292148512,"c7":420418166400000,"c8":true,"c9":0.519357968945} -{"c1":76,"c2":-1610419012,"c3":987957004000,"c4":"u","c5":"RUUA2mTktOtMRpv","c6":1456292148512,"c7":421413148800000,"c8":true,"c9":0.283395173271} -{"c1":77,"c2":1,"c3":1,"c4":"gn","c5":"iyZ","c6":1456295748512,"c7":420525820800000,"c8":false,"c9":0.714975974474} -{"c1":78,"c2":841562550,"c3":5229353983640,"c4":"kfJpOk","c5":"BP4z","c6":1456292148512,"c7":420504998400000,"c8":true,"c9":0.773946465042} -{"c1":79,"c2":2049749227,"c3":7886072056192,"c4":"lJroaw","c5":"CS","c6":1456292148512,"c7":420713740800000,"c8":true,"c9":0.866341378246} -{"c1":80,"c2":-514969856,"c3":15673249928080,"c4":"BNnLZdPW","c5":"l5a0ZpK","c6":1456292148513,"c7":421434748800000,"c8":false,"c9":0.500069917482} -{"c1":81,"c2":-889738985,"c3":32298052657224,"c4":"xFDhe","c5":"yqzQp2PYA2w0r","c6":1456292148513,"c7":421726176000000,"c8":true,"c9":0.534138245169} -{"c1":82,"c2":743747735,"c3":42939563416968,"c4":"kcRx","c5":"ALGpDH9qQ","c6":1456292148513,"c7":420958080000000,"c8":true,"c9":0.0339015122383} -{"c1":83,"c2":-991380116,"c3":7521740669440,"c4":"I","c5":"VnrhwXNs5I7A","c6":1456292148513,"c7":420505689600000,"c8":false,"c9":0.729684203442} -{"c1":84,"c2":-605301438,"c3":6462434675584,"c4":"OXqgNP","c5":"XvH","c6":1456292148513,"c7":422746128000000,"c8":false,"c9":0.741169865031} -{"c1":85,"c2":-9600122,"c3":1150794800496,"c4":"XC","c5":"EZ5w","c6":1456292148545,"c7":421704144000000,"c8":false,"c9":0.00508533320078} -{"c1":86,"c2":-1304870155,"c3":7762439826812,"c4":"fOJJ","c5":"3kmqcAhqRv1JKH","c6":1456292148546,"c7":421705440000000,"c8":false,"c9":0.857763501506} -{"c1":87,"c2":-1151111063,"c3":3026615127030,"c4":"B","c5":"UsA2ijb5Q472","c6":1456292148546,"c7":422321299200000,"c8":true,"c9":0.852362483167} -{"c1":88,"c2":726080083,"c3":352777524,"c4":"pvjG","c5":"6DTPUc0kPXNDI","c6":1456292148546,"c7":422189884800000,"c8":true,"c9":0.499536294849} -{"c1":89,"c2":1269715757,"c3":298591968,"c4":"wUJle","c5":"P9hocYIzILG4d","c6":1456292148547,"c7":421664400000000,"c8":false,"c9":0.731465721495} -{"c1":90,"c2":469877353,"c3":5604128205368,"c4":"cgBBlTOr","c5":"0S09","c6":1456292148547,"c7":420358291200000,"c8":false,"c9":0.930318601251} -{"c1":91,"c2":1439825179,"c3":8448247315360,"c4":"GhHH","c5":"xU","c6":1456292148547,"c7":422529177600000,"c8":true,"c9":0.365706281943} -{"c1":92,"c2":-965564746,"c3":6461158733064,"c4":"ApKK","c5":"2MT6vQK7ILiMym","c6":1456292148548,"c7":422356982400000,"c8":true,"c9":0.160958193689} -{"c1":93,"c2":1396621364,"c3":5965143616184,"c4":"zavaYRc","c5":"m9Y","c6":1456292148548,"c7":421204924800000,"c8":true,"c9":0.123678441424} -{"c1":94,"c2":811012151,"c3":1275108040346,"c4":"yQmKx","c5":"ZHAGJpfsrd","c6":1456292148548,"c7":421316812800000,"c8":false,"c9":0.784623709976} -{"c1":95,"c2":1117245576,"c3":7044500976200,"c4":"fePHGR","c5":"pjLll4ngRT36ygIV","c6":1456292148548,"c7":421281993600000,"c8":false,"c9":0.187592141607} -{"c1":96,"c2":-450291430,"c3":7186198454512,"c4":"KhTYcGy","c5":"Y1l","c6":1456292148548,"c7":420275001600000,"c8":true,"c9":0.348668175704} -{"c1":97,"c2":0,"c3":2668027779964,"c4":"kdhbgC","c5":"ejaUw7d3DEIC7axy","c6":1456292148549,"c7":420673132800000,"c8":false,"c9":0.690933751147} -{"c1":98,"c2":-1807107154,"c3":667184558696,"c4":"C","c5":"M4GVt6c4s","c6":1456292148549,"c7":420653260800000,"c8":false,"c9":0.868842793576} -{"c1":99,"c2":-1610548040,"c3":269450722304,"c4":"UECld","c5":"DzTXQDe","c6":1456292148549,"c7":421828905600000,"c8":false,"c9":0.866249476344} -{"c1":100,"c2":1968262238,"c3":1853568964,"c4":"XY","c5":"O61h","c6":1456292148549,"c7":421527456000000,"c8":false,"c9":0.771913788526} -{"c1":101,"c2":547475512,"c3":5424751352,"c4":"Myf","c5":"u91","c6":1456292148549,"c7":421646774400000,"c8":false,"c9":0.020687569041} -{"c1":102,"c2":1347375329,"c3":7601674368,"c4":"PubTJ","c5":"B72D746BYbWS","c6":1456292148550,"c7":420430867200000,"c8":true,"c9":0.669628865357} -{"c1":103,"c2":-730200083,"c3":3734160392,"c4":"R","c5":"JF5b","c6":1456292148550,"c7":421339708800000,"c8":false,"c9":0.754789130107} -{"c1":104,"c2":-2145249349,"c3":8153964480,"c4":"BAGi","c5":"o69DyecndyD47","c6":1456292148550,"c7":421667078400000,"c8":true,"c9":0.669354481782} -{"c1":105,"c2":1922528937,"c3":36022570792,"c4":"lJy","c5":"8iirhhzlmMQeL","c6":1456292148550,"c7":422019849600000,"c8":false,"c9":0.53821290676} -{"c1":106,"c2":353908213,"c3":108831386830,"c4":"Z","c5":"vb32KaNk","c6":1456292148550,"c7":422921692800000,"c8":true,"c9":0.772742852356} -{"c1":107,"c2":-1,"c3":null,"c4":"kYEB","c5":"UY1wFk3nA6uIg","c6":1456292148550,"c7":423125078400000,"c8":false,"c9":0.00471118728446} -{"c1":108,"c2":465659139,"c3":196283469856,"c4":"RVVu","c5":"crs1mym","c6":1456292148550,"c7":422165001600000,"c8":true,"c9":0.510821715226} -{"c1":109,"c2":-1330396672,"c3":584831936,"c4":null,"c5":"XxXpO","c6":1456292302869,"c7":420166310400000,"c8":false,"c9":0.0730700338964} -{"c1":110,"c2":-220130197,"c3":17601020,"c4":"hjeac","c5":"n","c6":1456292302869,"c7":422323977600000,"c8":true,"c9":0.96826163121} -{"c1":111,"c2":-42902,"c3":562336,"c4":"f","c5":"LykOIn","c6":1456292302870,"c7":420630624000000,"c8":true,"c9":0.554463637243} -{"c1":112,"c2":765525961,"c3":28891422336265300,"c4":"demso","c5":"LZoFRza","c6":1456292302870,"c7":420894057600000,"c8":true,"c9":0.850373501413} -{"c1":113,"c2":-68207234,"c3":90427790806585824,"c4":"pnmrt","c5":"HFo","c6":null,"c7":420867878400000,"c8":true,"c9":0.71373237138} -{"c1":114,"c2":-1380251111,"c3":63163365737847936,"c4":"krg","c5":"JXzNCV","c6":1456292302871,"c7":421624569600000,"c8":true,"c9":0.445900639514} -{"c1":115,"c2":-1844719171,"c3":60499043191834664,"c4":"tdqfhi","c5":"SzMEux","c6":1456292302871,"c7":422194809600000,"c8":true,"c9":0.520455630248} -{"c1":116,"c2":1790522162,"c3":47372667161181496,"c4":"orbowc","c5":"n","c6":1456292302871,"c7":421364678400000,"c8":true,"c9":0.891198277906} -{"c1":117,"c2":-27319471,"c3":37102817894137256,"c4":"w","c5":"SYvkQ","c6":1456292302871,"c7":420918681600000,"c8":false,"c9":0.0359150523033} -{"c1":118,"c2":1317690445,"c3":61958708627376736,"c4":"aehmn","c5":"Vioq","c6":1456292302871,"c7":420640732800000,"c8":false,"c9":0.943878204382} -{"c1":119,"c2":1965293154,"c3":4216354032582922,"c4":"d","c5":"RSlQvgb","c6":1456292302872,"c7":420903561600000,"c8":true,"c9":0.300925886142} -{"c1":120,"c2":-1998776606,"c3":80843181252171408,"c4":"hntp","c5":"lt","c6":1456292302872,"c7":422202499200000,"c8":true,"c9":0.81436509096} +{"c1":63,"c2":-535361692,"c3":19818839912000624,"c4":"aAbGSv","c5":"yNVubV8dlc8KC8aijpwxEFyYSqtI8iiAQeZJAQMKUqTKMD5EqFSG4z3AraZ9dX","c6":1456292105548,"c7":1226361600000,"c8":true,"c9":0.587212121798} +{"c1":64,"c2":-960817944,"c3":295389276379024,"c4":"ToiqQVHAUTzNXZxhxT","c5":"pf7gyDzSkNhMD1Cio9GnoDpe7tFF6lPUfskrdSBrdmkPrwPN5YrF8cYArRXsqeiWiUwhbQ","c6":1456292105548,"c7":466732800000,"c8":false,"c9":0.425544340933} +{"c1":65,"c2":2079413364,"c3":875274205296,"c4":"QiyvPpHnbIkkLsJeF","c5":"cuX2mutS6Dt23LpVfQ4RhuZ2upAZZxSDl3NQjHYecHX6UpRud5J5GUO2yKikEShe1AeqzPbW2W3GVn3pwpt5k9SFo5BbAQSgBpXWe7OUYuLB6XE0VPbSk6RK","c6":1456292105549,"c7":-1161475200000,"c8":false,"c9":0.201374181269} +{"c1":66,"c2":-786819448,"c3":64868238648,"c4":"h","c5":"ScG74UmrI77csOCHrVQQMGnAtWw0IOpLtDTp6xF8eH2MxrvjwW5BhxTKxSelvvDK4LJlO0YhFW6CoZM62aUEkOmtXnTBp7KH4lAiCPW2lnC5DEHn","c6":1456292105549,"c7":-1242950400000,"c8":true,"c9":0.795415967241} +{"c1":67,"c2":1250142164,"c3":6916992,"c4":"vpZxaEsZkTwnMmmWa","c5":"dQxtZCEAviuZYSdc4sgLjb","c6":1456292105549,"c7":772675200000,"c8":false,"c9":0.556953353203} +{"c1":68,"c2":-38579995,"c3":233512622900,"c4":"JgwMVLyvDb","c5":"fwuYfa4PJlIQoxfetQdAaVY4VvbbX0N9E641","c6":1456292105550,"c7":1340668800000,"c8":false,"c9":0.453069633364} +{"c1":69,"c2":-1027828328,"c3":40672068432544096,"c4":"TZGIkEEfJb","c5":"RftjjeGNAAGDTikjbjJ6U4GxR8ZRGclneqPib9RyyXI37Rr8E3DstJ55jBpN4KY1j2Dp44l6NkRvDHQO","c6":1456292105550,"c7":1191369600000,"c8":false,"c9":0.998189105778} +{"c1":70,"c2":-569066973,"c3":8907959568528,"c4":"eah","c5":"2svWW0","c6":1456292148510,"c7":1343260800000,"c8":false,"c9":0.264360661376} +{"c1":71,"c2":815270244,"c3":15558122158,"c4":"l","c5":"5rZomJ4gkusDD","c6":1456292148510,"c7":-1134086400000,"c8":true,"c9":0.85139020182} +{"c1":72,"c2":-2085514660,"c3":1345100636752,"c4":"Gb","c5":"VecY","c6":1456292148511,"c7":-428630400000,"c8":false,"c9":0.159955514577} +{"c1":73,"c2":-2086451715,"c3":778834561344,"c4":"LGGRD","c5":"Dv1","c6":1456292148511,"c7":1192579200000,"c8":false,"c9":0.892355433411} +{"c1":74,"c2":1317696149,"c3":13607285678,"c4":"Zf","c5":"h6rrw","c6":1456292148512,"c7":-1247184000000,"c8":true,"c9":0.226484732} +{"c1":75,"c2":-475078365,"c3":591562831712,"c4":"Gas","c5":"Az81IOQGM1","c6":1456292148512,"c7":-1315440000000,"c8":true,"c9":0.519357968945} +{"c1":76,"c2":-1610419012,"c3":987957004000,"c4":"u","c5":"RUUA2mTktOtMRpv","c6":1456292148512,"c7":-320457600000,"c8":true,"c9":0.283395173271} +{"c1":77,"c2":1,"c3":1,"c4":"gn","c5":"iyZ","c6":1456295748512,"c7":-1207785600000,"c8":false,"c9":0.714975974474} +{"c1":78,"c2":841562550,"c3":5229353983640,"c4":"kfJpOk","c5":"BP4z","c6":1456292148512,"c7":-1228608000000,"c8":true,"c9":0.773946465042} +{"c1":79,"c2":2049749227,"c3":7886072056192,"c4":"lJroaw","c5":"CS","c6":1456292148512,"c7":-1019865600000,"c8":true,"c9":0.866341378246} +{"c1":80,"c2":-514969856,"c3":15673249928080,"c4":"BNnLZdPW","c5":"l5a0ZpK","c6":1456292148513,"c7":-298857600000,"c8":false,"c9":0.500069917482} +{"c1":81,"c2":-889738985,"c3":32298052657224,"c4":"xFDhe","c5":"yqzQp2PYA2w0r","c6":1456292148513,"c7":-7430400000,"c8":true,"c9":0.534138245169} +{"c1":82,"c2":743747735,"c3":42939563416968,"c4":"kcRx","c5":"ALGpDH9qQ","c6":1456292148513,"c7":-775526400000,"c8":true,"c9":0.0339015122383} +{"c1":83,"c2":-991380116,"c3":7521740669440,"c4":"I","c5":"VnrhwXNs5I7A","c6":1456292148513,"c7":-1227916800000,"c8":false,"c9":0.729684203442} +{"c1":84,"c2":-605301438,"c3":6462434675584,"c4":"OXqgNP","c5":"XvH","c6":1456292148513,"c7":1012521600000,"c8":false,"c9":0.741169865031} +{"c1":85,"c2":-9600122,"c3":1150794800496,"c4":"XC","c5":"EZ5w","c6":1456292148545,"c7":-29462400000,"c8":false,"c9":0.00508533320078} +{"c1":86,"c2":-1304870155,"c3":7762439826812,"c4":"fOJJ","c5":"3kmqcAhqRv1JKH","c6":1456292148546,"c7":-28166400000,"c8":false,"c9":0.857763501506} +{"c1":87,"c2":-1151111063,"c3":3026615127030,"c4":"B","c5":"UsA2ijb5Q472","c6":1456292148546,"c7":587692800000,"c8":true,"c9":0.852362483167} +{"c1":88,"c2":726080083,"c3":352777524,"c4":"pvjG","c5":"6DTPUc0kPXNDI","c6":1456292148546,"c7":456278400000,"c8":true,"c9":0.499536294849} +{"c1":89,"c2":1269715757,"c3":298591968,"c4":"wUJle","c5":"P9hocYIzILG4d","c6":1456292148547,"c7":-69206400000,"c8":false,"c9":0.731465721495} +{"c1":90,"c2":469877353,"c3":5604128205368,"c4":"cgBBlTOr","c5":"0S09","c6":1456292148547,"c7":-1375315200000,"c8":false,"c9":0.930318601251} +{"c1":91,"c2":1439825179,"c3":8448247315360,"c4":"GhHH","c5":"xU","c6":1456292148547,"c7":795571200000,"c8":true,"c9":0.365706281943} +{"c1":92,"c2":-965564746,"c3":6461158733064,"c4":"ApKK","c5":"2MT6vQK7ILiMym","c6":1456292148548,"c7":623376000000,"c8":true,"c9":0.160958193689} +{"c1":93,"c2":1396621364,"c3":5965143616184,"c4":"zavaYRc","c5":"m9Y","c6":1456292148548,"c7":-528681600000,"c8":true,"c9":0.123678441424} +{"c1":94,"c2":811012151,"c3":1275108040346,"c4":"yQmKx","c5":"ZHAGJpfsrd","c6":1456292148548,"c7":-416793600000,"c8":false,"c9":0.784623709976} +{"c1":95,"c2":1117245576,"c3":7044500976200,"c4":"fePHGR","c5":"pjLll4ngRT36ygIV","c6":1456292148548,"c7":-451612800000,"c8":false,"c9":0.187592141607} +{"c1":96,"c2":-450291430,"c3":7186198454512,"c4":"KhTYcGy","c5":"Y1l","c6":1456292148548,"c7":-1458604800000,"c8":true,"c9":0.348668175704} +{"c1":97,"c2":0,"c3":2668027779964,"c4":"kdhbgC","c5":"ejaUw7d3DEIC7axy","c6":1456292148549,"c7":-1060473600000,"c8":false,"c9":0.690933751147} +{"c1":98,"c2":-1807107154,"c3":667184558696,"c4":"C","c5":"M4GVt6c4s","c6":1456292148549,"c7":-1080345600000,"c8":false,"c9":0.868842793576} +{"c1":99,"c2":-1610548040,"c3":269450722304,"c4":"UECld","c5":"DzTXQDe","c6":1456292148549,"c7":95299200000,"c8":false,"c9":0.866249476344} +{"c1":100,"c2":1968262238,"c3":1853568964,"c4":"XY","c5":"O61h","c6":1456292148549,"c7":-206150400000,"c8":false,"c9":0.771913788526} +{"c1":101,"c2":547475512,"c3":5424751352,"c4":"Myf","c5":"u91","c6":1456292148549,"c7":-86832000000,"c8":false,"c9":0.020687569041} +{"c1":102,"c2":1347375329,"c3":7601674368,"c4":"PubTJ","c5":"B72D746BYbWS","c6":1456292148550,"c7":-1302739200000,"c8":true,"c9":0.669628865357} +{"c1":103,"c2":-730200083,"c3":3734160392,"c4":"R","c5":"JF5b","c6":1456292148550,"c7":-393897600000,"c8":false,"c9":0.754789130107} +{"c1":104,"c2":-2145249349,"c3":8153964480,"c4":"BAGi","c5":"o69DyecndyD47","c6":1456292148550,"c7":-66528000000,"c8":true,"c9":0.669354481782} +{"c1":105,"c2":1922528937,"c3":36022570792,"c4":"lJy","c5":"8iirhhzlmMQeL","c6":1456292148550,"c7":286243200000,"c8":false,"c9":0.53821290676} +{"c1":106,"c2":353908213,"c3":108831386830,"c4":"Z","c5":"vb32KaNk","c6":1456292148550,"c7":1188086400000,"c8":true,"c9":0.772742852356} +{"c1":107,"c2":-1,"c3":null,"c4":"kYEB","c5":"UY1wFk3nA6uIg","c6":1456292148550,"c7":1391472000000,"c8":false,"c9":0.00471118728446} +{"c1":108,"c2":465659139,"c3":196283469856,"c4":"RVVu","c5":"crs1mym","c6":1456292148550,"c7":431395200000,"c8":true,"c9":0.510821715226} +{"c1":109,"c2":-1330396672,"c3":584831936,"c4":null,"c5":"XxXpO","c6":1456292302869,"c7":-1567296000000,"c8":false,"c9":0.0730700338964} +{"c1":110,"c2":-220130197,"c3":17601020,"c4":"hjeac","c5":"n","c6":1456292302869,"c7":590371200000,"c8":true,"c9":0.96826163121} +{"c1":111,"c2":-42902,"c3":562336,"c4":"f","c5":"LykOIn","c6":1456292302870,"c7":-1102982400000,"c8":true,"c9":0.554463637243} +{"c1":112,"c2":765525961,"c3":28891422336265300,"c4":"demso","c5":"LZoFRza","c6":1456292302870,"c7":-839548800000,"c8":true,"c9":0.850373501413} +{"c1":113,"c2":-68207234,"c3":90427790806585824,"c4":"pnmrt","c5":"HFo","c6":null,"c7":-865728000000,"c8":true,"c9":0.71373237138} +{"c1":114,"c2":-1380251111,"c3":63163365737847936,"c4":"krg","c5":"JXzNCV","c6":1456292302871,"c7":-109036800000,"c8":true,"c9":0.445900639514} +{"c1":115,"c2":-1844719171,"c3":60499043191834664,"c4":"tdqfhi","c5":"SzMEux","c6":1456292302871,"c7":461203200000,"c8":true,"c9":0.520455630248} +{"c1":116,"c2":1790522162,"c3":47372667161181496,"c4":"orbowc","c5":"n","c6":1456292302871,"c7":-368928000000,"c8":true,"c9":0.891198277906} +{"c1":117,"c2":-27319471,"c3":37102817894137256,"c4":"w","c5":"SYvkQ","c6":1456292302871,"c7":-814924800000,"c8":false,"c9":0.0359150523033} +{"c1":118,"c2":1317690445,"c3":61958708627376736,"c4":"aehmn","c5":"Vioq","c6":1456292302871,"c7":-1092873600000,"c8":false,"c9":0.943878204382} +{"c1":119,"c2":1965293154,"c3":4216354032582922,"c4":"d","c5":"RSlQvgb","c6":1456292302872,"c7":-830044800000,"c8":true,"c9":0.300925886142} +{"c1":120,"c2":-1998776606,"c3":80843181252171408,"c4":"hntp","c5":"lt","c6":1456292302872,"c7":468892800000,"c8":true,"c9":0.81436509096} {"c1":121,"c2":-759066837,"c3":56811856992247296,"c4":"gbfr","c5":"RXwJTUQL","c6":1456292302872,"c7":null,"c8":true,"c9":0.602622967887} -{"c1":122,"c2":null,"c3":16079752775114834,"c4":"i","c5":"wOKgo","c6":1456292302872,"c7":421707340800000,"c8":false,"c9":0.314540418049} -{"c1":123,"c2":-1393583038,"c3":21198598572581100,"c4":"cg","c5":"jJo","c6":1456292302872,"c7":421884806400000,"c8":true,"c9":0.863833034127} -{"c1":124,"c2":-359360839,"c3":10812882337641318,"c4":"yn","c5":"pp","c6":1456292302872,"c7":422279222400000,"c8":true,"c9":0.984219215225} -{"c1":125,"c2":-135559442,"c3":26079995480527800,"c4":"u","c5":"PpZ","c6":1456292302872,"c7":421338672000000,"c8":true,"c9":0.112619968355} -{"c1":126,"c2":-963314220,"c3":39899141337524696,"c4":"r","c5":"Kv","c6":1456292302872,"c7":421093209600000,"c8":false,"c9":0.928182322637} -{"c1":127,"c2":-603033839,"c3":91979853046157776,"c4":"iknfwt","c5":"UxrG","c6":1456292302873,"c7":422923593600000,"c8":true,"c9":0.436065582677} -{"c1":128,"c2":1730933740,"c3":52988296769210224,"c4":null,"c5":"SQreQ","c6":1456292338864,"c7":420160435200000,"c8":null,"c9":0.709400581459} -{"c1":129,"c2":-1190592568,"c3":29537626363643852,"c4":null,"c5":"JNq","c6":1456292338864,"c7":421020892800000,"c8":false,"c9":0.426506472311} -{"c1":130,"c2":-1311152842,"c3":24893851443643300,"c4":null,"c5":"VZmvS","c6":1456292338865,"c7":421283203200000,"c8":true,"c9":0.891508292788} -{"c1":131,"c2":-612732312,"c3":14972217694439486,"c4":null,"c5":"yZYlsOH","c6":1456292338865,"c7":420777676800000,"c8":true,"c9":0.682577092573} -{"c1":132,"c2":-1948510563,"c3":2686369516214692,"c4":null,"c5":"HcwNvv","c6":1456292338865,"c7":420190416000000,"c8":true,"c9":0.496484780895} -{"c1":133,"c2":1726823975,"c3":64270113732818952,"c4":null,"c5":"UPYQXFGA","c6":1456292338865,"c7":421703625600000,"c8":true,"c9":0.858728636519} -{"c1":134,"c2":220535371,"c3":15937600070688400,"c4":null,"c5":"tTsISx","c6":1456292338866,"c7":421422134400000,"c8":null,"c9":0.0978174122941} -{"c1":135,"c2":-278647794,"c3":52598911986023288,"c4":null,"c5":"JzQY","c6":1456292338866,"c7":421918416000000,"c8":false,"c9":0.0918752610245} -{"c1":136,"c2":288414270,"c3":8695637273720187,"c4":null,"c5":"OpFxaJUK","c6":1456292338866,"c7":420629328000000,"c8":true,"c9":0.0241314164497} -{"c1":137,"c2":-1033256154,"c3":2397384354833930,"c4":null,"c5":null,"c6":1456292369484,"c7":421578086400000,"c8":true,"c9":0.817785665204} -{"c1":138,"c2":-461761396,"c3":78042258136748336,"c4":null,"c5":null,"c6":1456292369484,"c7":421621632000000,"c8":true,"c9":0.514550507111} -{"c1":139,"c2":-1863053037,"c3":35173898947893320,"c4":null,"c5":null,"c6":1456292369485,"c7":420712531200000,"c8":true,"c9":0.641830766022} -{"c1":140,"c2":-775202711,"c3":21011901540311080,"c4":null,"c5":null,"c6":1456292369485,"c7":420698448000000,"c8":false,"c9":0.563296650508} -{"c1":141,"c2":-109815917,"c3":46096729108954488,"c4":null,"c5":null,"c6":1456292369485,"c7":421707772800000,"c8":null,"c9":0.82789510574} -{"c1":142,"c2":1733733471,"c3":84276421148786976,"c4":null,"c5":null,"c6":1456292369485,"c7":420706828800000,"c8":true,"c9":0.737905542986} -{"c1":143,"c2":1559768019,"c3":91381489058732016,"c4":null,"c5":null,"c6":1456292369486,"c7":422574019200000,"c8":true,"c9":null} -{"c1":144,"c2":-1054306811,"c3":null,"c4":null,"c5":null,"c6":1456292369486,"c7":421684876800000,"c8":false,"c9":0.273335960277} -{"c1":145,"c2":1580853588,"c3":17990322900862228,"c4":null,"c5":null,"c6":1456292369486,"c7":422222025600000,"c8":false,"c9":0.668501595682} \ No newline at end of file +{"c1":122,"c2":null,"c3":16079752775114834,"c4":"i","c5":"wOKgo","c6":1456292302872,"c7":-26265600000,"c8":false,"c9":0.314540418049} +{"c1":123,"c2":-1393583038,"c3":21198598572581100,"c4":"cg","c5":"jJo","c6":1456292302872,"c7":151200000000,"c8":true,"c9":0.863833034127} +{"c1":124,"c2":-359360839,"c3":10812882337641318,"c4":"yn","c5":"pp","c6":1456292302872,"c7":545616000000,"c8":true,"c9":0.984219215225} +{"c1":125,"c2":-135559442,"c3":26079995480527800,"c4":"u","c5":"PpZ","c6":1456292302872,"c7":-394934400000,"c8":true,"c9":0.112619968355} +{"c1":126,"c2":-963314220,"c3":39899141337524696,"c4":"r","c5":"Kv","c6":1456292302872,"c7":-640396800000,"c8":false,"c9":0.928182322637} +{"c1":127,"c2":-603033839,"c3":91979853046157776,"c4":"iknfwt","c5":"UxrG","c6":1456292302873,"c7":1189987200000,"c8":true,"c9":0.436065582677} +{"c1":128,"c2":1730933740,"c3":52988296769210224,"c4":null,"c5":"SQreQ","c6":1456292338864,"c7":-1573171200000,"c8":null,"c9":0.709400581459} +{"c1":129,"c2":-1190592568,"c3":29537626363643852,"c4":null,"c5":"JNq","c6":1456292338864,"c7":-712713600000,"c8":false,"c9":0.426506472311} +{"c1":130,"c2":-1311152842,"c3":24893851443643300,"c4":null,"c5":"VZmvS","c6":1456292338865,"c7":-450403200000,"c8":true,"c9":0.891508292788} +{"c1":131,"c2":-612732312,"c3":14972217694439486,"c4":null,"c5":"yZYlsOH","c6":1456292338865,"c7":-955929600000,"c8":true,"c9":0.682577092573} +{"c1":132,"c2":-1948510563,"c3":2686369516214692,"c4":null,"c5":"HcwNvv","c6":1456292338865,"c7":-1543190400000,"c8":true,"c9":0.496484780895} +{"c1":133,"c2":1726823975,"c3":64270113732818952,"c4":null,"c5":"UPYQXFGA","c6":1456292338865,"c7":-29980800000,"c8":true,"c9":0.858728636519} +{"c1":134,"c2":220535371,"c3":15937600070688400,"c4":null,"c5":"tTsISx","c6":1456292338866,"c7":-311472000000,"c8":null,"c9":0.0978174122941} +{"c1":135,"c2":-278647794,"c3":52598911986023288,"c4":null,"c5":"JzQY","c6":1456292338866,"c7":184809600000,"c8":false,"c9":0.0918752610245} +{"c1":136,"c2":288414270,"c3":8695637273720187,"c4":null,"c5":"OpFxaJUK","c6":1456292338866,"c7":-1104278400000,"c8":true,"c9":0.0241314164497} +{"c1":137,"c2":-1033256154,"c3":2397384354833930,"c4":null,"c5":null,"c6":1456292369484,"c7":-155520000000,"c8":true,"c9":0.817785665204} +{"c1":138,"c2":-461761396,"c3":78042258136748336,"c4":null,"c5":null,"c6":1456292369484,"c7":-111974400000,"c8":true,"c9":0.514550507111} +{"c1":139,"c2":-1863053037,"c3":35173898947893320,"c4":null,"c5":null,"c6":1456292369485,"c7":-1021075200000,"c8":true,"c9":0.641830766022} +{"c1":140,"c2":-775202711,"c3":21011901540311080,"c4":null,"c5":null,"c6":1456292369485,"c7":-1035158400000,"c8":false,"c9":0.563296650508} +{"c1":141,"c2":-109815917,"c3":46096729108954488,"c4":null,"c5":null,"c6":1456292369485,"c7":-25833600000,"c8":null,"c9":0.82789510574} +{"c1":142,"c2":1733733471,"c3":84276421148786976,"c4":null,"c5":null,"c6":1456292369485,"c7":-1026777600000,"c8":true,"c9":0.737905542986} +{"c1":143,"c2":1559768019,"c3":91381489058732016,"c4":null,"c5":null,"c6":1456292369486,"c7":840412800000,"c8":true,"c9":null} +{"c1":144,"c2":-1054306811,"c3":null,"c4":null,"c5":null,"c6":1456292369486,"c7":-48729600000,"c8":false,"c9":0.273335960277} +{"c1":145,"c2":1580853588,"c3":17990322900862228,"c4":null,"c5":null,"c6":1456292369486,"c7":488419200000,"c8":false,"c9":0.668501595682} \ No newline at end of file From 869bc5d3dfd321e8d1f616c3bd5d4721cc35a0c4 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Fri, 13 Oct 2023 05:56:18 +0000 Subject: [PATCH 058/100] checkstyle --- .../java/org/apache/druid/data/input/parquet/ParquetToJson.java | 2 +- .../druid/data/input/parquet/simple/ParquetGroupConverter.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/ParquetToJson.java b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/ParquetToJson.java index 301c6e15eee7..e75b17960ac4 100644 --- a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/ParquetToJson.java +++ b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/ParquetToJson.java @@ -44,7 +44,7 @@ * appending ".json" to the old file name. Will overwrite any output file that * already exists. */ -@Command(name="ParquetToJson") +@Command(name = "ParquetToJson") public class ParquetToJson implements Callable { diff --git a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java index 4831e9bf3290..4bdfbe39684f 100644 --- a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java +++ b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java @@ -455,7 +455,7 @@ private Object convertPrimitiveField(Group g, int fieldIndex, int index) private long convertDateToMillis(int value) { - if(convertCorruptDates) { + if (convertCorruptDates) { value -= CORRECT_CORRUPT_DATE_SHIFT; } return value * MILLIS_IN_DAY; From c3bab1685db50d03809e33d249c47aad594ef043 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Fri, 13 Oct 2023 06:36:57 +0000 Subject: [PATCH 059/100] add dep --- extensions-core/parquet-extensions/pom.xml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/extensions-core/parquet-extensions/pom.xml b/extensions-core/parquet-extensions/pom.xml index 14c524d70a5a..b72afc7d8902 100644 --- a/extensions-core/parquet-extensions/pom.xml +++ b/extensions-core/parquet-extensions/pom.xml @@ -162,6 +162,11 @@ avro ${avro.version} + + com.github.rvesse + airline + provided + junit junit From b80018028136caad7914053ca512d23064215200 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Fri, 13 Oct 2023 13:07:29 +0000 Subject: [PATCH 060/100] add exception --- .../semantic/DefaultColumnSelectorFactoryMaker.java | 4 ++++ .../apache/druid/sql/calcite/rel/VirtualColumnRegistry.java | 3 +++ .../resources/calcite/tests/window/virtualColumns.sqlTest | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/processing/src/main/java/org/apache/druid/query/rowsandcols/semantic/DefaultColumnSelectorFactoryMaker.java b/processing/src/main/java/org/apache/druid/query/rowsandcols/semantic/DefaultColumnSelectorFactoryMaker.java index 7bf6bc3bde31..ec5335f1b46e 100644 --- a/processing/src/main/java/org/apache/druid/query/rowsandcols/semantic/DefaultColumnSelectorFactoryMaker.java +++ b/processing/src/main/java/org/apache/druid/query/rowsandcols/semantic/DefaultColumnSelectorFactoryMaker.java @@ -175,9 +175,13 @@ public ColumnCapabilities getColumnCapabilities(String column) private T withColumnAccessor(String column, Function fn) { + @Nullable ColumnAccessor retVal = accessorCache.get(column); if (retVal == null) { Column racColumn = rac.findColumn(column); + if (racColumn == null) { + throw DruidException.defensive("didnt expected this!"); + } retVal = racColumn == null ? null : racColumn.toAccessor(); accessorCache.put(column, retVal); } diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java index b44be8b43890..52c87e02a613 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java @@ -88,6 +88,9 @@ public static VirtualColumnRegistry create( ); } + public boolean isEmpty() { + return virtualColumnsByExpression.isEmpty(); + } /** * Check if a {@link VirtualColumn} is defined by column name */ diff --git a/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest b/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest index 967853bd1e39..d11e6c09a19e 100644 --- a/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest @@ -3,7 +3,7 @@ type: "operatorValidation" sql: | SELECT '_'||dim1, - MIN(cast(0 as double)) OVER (), + MIN(cast(42 as double)) OVER (), MIN(cast((cnt||cnt) as bigint)) OVER () FROM foo From 4431b7a9c52555ea47844f851595e59095d8c0bf Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Fri, 13 Oct 2023 13:33:25 +0000 Subject: [PATCH 061/100] move construction phase into separate method --- .../query/operator/WindowOperatorQuery.java | 60 ++++++++++++------- 1 file changed, 37 insertions(+), 23 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java index a07bad0d082c..96c87a9003c2 100644 --- a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java +++ b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java @@ -82,27 +82,20 @@ private static DataSource validateMaybeRewriteDataSource(DataSource dataSource, private final List operators; private final List leafOperators; - @JsonCreator + public WindowOperatorQuery( - @JsonProperty("dataSource") DataSource dataSource, - @JsonProperty("intervals") QuerySegmentSpec intervals, - @JsonProperty("context") Map context, - @JsonProperty("outputSignature") RowSignature rowSignature, - @JsonProperty("operatorDefinition") List operators, - @JsonProperty("leafOperators") List leafOperators - ) - { - super( - validateMaybeRewriteDataSource(dataSource, leafOperators != null), - intervals, - false, - context - ); - this.rowSignature = rowSignature; - this.operators = operators; + DataSource dataSource, + QuerySegmentSpec intervals, + Map context, + RowSignature rowSignature, + List operators + ) { + this(dataSource,intervals,context,rowSignature,operators,buildLeafOperatos(dataSource)); + } - if (leafOperators == null) { - this.leafOperators = new ArrayList<>(); + private static List buildLeafOperatos(DataSource dataSource) + { + List leafOperators = new ArrayList<>(); // We have to double check again because this was validated in a static context before passing to the `super()` // and we cannot save state from that... Ah well. @@ -123,21 +116,42 @@ public WindowOperatorQuery( ); } - this.leafOperators.add( + leafOperators.add( new ScanOperatorFactory( null, scan.getFilter(), (int) scan.getScanRowsLimit(), scan.getColumns(), scan.getVirtualColumns(), +// vc_union(scan.getVirtualColumns(),virtualColumns), ordering ) ); } } - } else { - this.leafOperators = leafOperators; - } + + return leafOperators; + } + + @JsonCreator + public WindowOperatorQuery( + @JsonProperty("dataSource") DataSource dataSource, + @JsonProperty("intervals") QuerySegmentSpec intervals, + @JsonProperty("context") Map context, + @JsonProperty("outputSignature") RowSignature rowSignature, + @JsonProperty("operatorDefinition") List operators, + @JsonProperty("leafOperators") List leafOperators + ) + { + super( + validateMaybeRewriteDataSource(dataSource, leafOperators != null), + intervals, + false, + context + ); + this.rowSignature = rowSignature; + this.operators = operators; + this.leafOperators = leafOperators; } @JsonProperty("operatorDefinition") From f7f75c72878cd478b3b32ef9036e27f63ce2d8dc Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 07:42:31 +0000 Subject: [PATCH 062/100] uncommitted state --- .../query/operator/WindowOperatorQuery.java | 86 ++++++++++--------- .../apache/druid/segment/VirtualColumns.java | 5 ++ .../operator/WindowOperatorQueryTest.java | 3 +- .../druid/sql/calcite/rel/DruidQuery.java | 3 +- 4 files changed, 54 insertions(+), 43 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java index 96c87a9003c2..7e951bc6604d 100644 --- a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java +++ b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java @@ -21,6 +21,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.common.base.Preconditions; import org.apache.druid.java.util.common.IAE; import org.apache.druid.query.BaseQuery; import org.apache.druid.query.DataSource; @@ -31,6 +32,7 @@ import org.apache.druid.query.rowsandcols.RowsAndColumns; import org.apache.druid.query.scan.ScanQuery; import org.apache.druid.query.spec.QuerySegmentSpec; +import org.apache.druid.segment.VirtualColumns; import org.apache.druid.segment.column.RowSignature; import javax.annotation.Nullable; @@ -51,12 +53,9 @@ */ public class WindowOperatorQuery extends BaseQuery { - private static DataSource validateMaybeRewriteDataSource(DataSource dataSource, boolean hasLeafs) + // FIXME: zip together buildLeafOperatos & rewriteDataSource; they are 2 sides of the same steps + private static DataSource rewriteDataSource(DataSource dataSource) { - if (hasLeafs) { - return dataSource; - } - // We can re-write scan-style sub queries into an operator instead of doing the actual Scan query. So, we // check for that and, if we are going to do the rewrite, then we return the sub datasource such that the // parent constructor in BaseQuery stores the actual data source that we want to be distributed to. @@ -88,49 +87,54 @@ public WindowOperatorQuery( QuerySegmentSpec intervals, Map context, RowSignature rowSignature, - List operators + List operators, + VirtualColumns virtualColumns ) { - this(dataSource,intervals,context,rowSignature,operators,buildLeafOperatos(dataSource)); + this(rewriteDataSource(dataSource), intervals, context, rowSignature, operators, buildLeafOperatos(dataSource,virtualColumns)); } - private static List buildLeafOperatos(DataSource dataSource) + private static List buildLeafOperatos(DataSource dataSource, VirtualColumns virtualColumns) { - List leafOperators = new ArrayList<>(); - // We have to double check again because this was validated in a static context before passing to the `super()` - // and we cannot save state from that... Ah well. - - if (dataSource instanceof QueryDataSource) { - final Query subQuery = ((QueryDataSource) dataSource).getQuery(); - if (subQuery instanceof ScanQuery) { - ScanQuery scan = (ScanQuery) subQuery; + List leafOperators = new ArrayList<>(); + // We have to double check again because this was validated in a static + // context before passing to the `super()` + // and we cannot save state from that... Ah well. - ArrayList ordering = new ArrayList<>(); - for (ScanQuery.OrderBy orderBy : scan.getOrderBys()) { - ordering.add( - new ColumnWithDirection( - orderBy.getColumnName(), - ScanQuery.Order.DESCENDING == orderBy.getOrder() - ? ColumnWithDirection.Direction.DESC - : ColumnWithDirection.Direction.ASC - ) - ); - } + if (dataSource instanceof QueryDataSource) { + final Query subQuery = ((QueryDataSource) dataSource).getQuery(); + if (subQuery instanceof ScanQuery) { + ScanQuery scan = (ScanQuery) subQuery; - leafOperators.add( - new ScanOperatorFactory( - null, - scan.getFilter(), - (int) scan.getScanRowsLimit(), - scan.getColumns(), - scan.getVirtualColumns(), -// vc_union(scan.getVirtualColumns(),virtualColumns), - ordering - ) - ); + ArrayList ordering = new ArrayList<>(); + for (ScanQuery.OrderBy orderBy : scan.getOrderBys()) { + ordering.add( + new ColumnWithDirection( + orderBy.getColumnName(), + ScanQuery.Order.DESCENDING == orderBy.getOrder() + ? ColumnWithDirection.Direction.DESC + : ColumnWithDirection.Direction.ASC)); } + + leafOperators.add( + new ScanOperatorFactory( + null, + scan.getFilter(), + (int) scan.getScanRowsLimit(), + scan.getColumns(), +// scan.getVirtualColumns(), + vc_union(scan.getVirtualColumns(),virtualColumns), + ordering)); } + } + return leafOperators; + } - return leafOperators; + private static VirtualColumns vc_union(VirtualColumns virtualColumns, VirtualColumns virtualColumns2) + { + if (virtualColumns2.isEmpty()) { + return virtualColumns; + } + throw new RuntimeException("Unimplemented!"); } @JsonCreator @@ -144,14 +148,14 @@ public WindowOperatorQuery( ) { super( - validateMaybeRewriteDataSource(dataSource, leafOperators != null), + dataSource, intervals, false, context ); this.rowSignature = rowSignature; this.operators = operators; - this.leafOperators = leafOperators; + this.leafOperators = Preconditions.checkNotNull(leafOperators, "leafOperators may not be null at this point!"); } @JsonProperty("operatorDefinition") diff --git a/processing/src/main/java/org/apache/druid/segment/VirtualColumns.java b/processing/src/main/java/org/apache/druid/segment/VirtualColumns.java index f26e297684b5..b189a33dddd9 100644 --- a/processing/src/main/java/org/apache/druid/segment/VirtualColumns.java +++ b/processing/src/main/java/org/apache/druid/segment/VirtualColumns.java @@ -519,4 +519,9 @@ public boolean equals(Object obj) ((VirtualColumns) obj).virtualColumns.isEmpty(); } } + + public boolean isEmpty() + { + return virtualColumns.isEmpty(); + } } diff --git a/processing/src/test/java/org/apache/druid/query/operator/WindowOperatorQueryTest.java b/processing/src/test/java/org/apache/druid/query/operator/WindowOperatorQueryTest.java index 69712c06493c..d4ba3e8f1295 100644 --- a/processing/src/test/java/org/apache/druid/query/operator/WindowOperatorQueryTest.java +++ b/processing/src/test/java/org/apache/druid/query/operator/WindowOperatorQueryTest.java @@ -25,6 +25,7 @@ import org.apache.druid.query.QueryContext; import org.apache.druid.query.TableDataSource; import org.apache.druid.query.spec.LegacySegmentSpec; +import org.apache.druid.segment.VirtualColumns; import org.apache.druid.segment.column.RowSignature; import org.junit.Assert; import org.junit.Before; @@ -55,7 +56,7 @@ public void setUp() ImmutableMap.of("sally", "sue"), RowSignature.empty(), new ArrayList<>(), - null + (VirtualColumns)null ); } diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java index 9294432d8fa6..a67ee7574927 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java @@ -1443,13 +1443,14 @@ private WindowOperatorQuery toWindowQuery() return null; } + VirtualColumns vcs=getVirtualColumns(false); return new WindowOperatorQuery( dataSource, new LegacySegmentSpec(Intervals.ETERNITY), plannerContext.queryContextMap(), windowing.getSignature(), windowing.getOperators(), - null + vcs ); } From f64a615f7e76d7f7d444ececd2f1f84e28d5464a Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 11:30:02 +0000 Subject: [PATCH 063/100] one fix --- .../query/operator/WindowOperatorQuery.java | 23 ++++++++++++++++--- .../apache/druid/segment/VirtualColumns.java | 6 +++++ .../druid/sql/calcite/rel/DruidQuery.java | 15 ++++++++++++ .../calcite/rel/VirtualColumnRegistry.java | 19 +++++++++++++++ .../tests/window/virtualColumns.sqlTest | 12 +++++----- 5 files changed, 66 insertions(+), 9 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java index 7e951bc6604d..410b7dda5c88 100644 --- a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java +++ b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java @@ -22,6 +22,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; import org.apache.druid.java.util.common.IAE; import org.apache.druid.query.BaseQuery; import org.apache.druid.query.DataSource; @@ -32,6 +33,7 @@ import org.apache.druid.query.rowsandcols.RowsAndColumns; import org.apache.druid.query.scan.ScanQuery; import org.apache.druid.query.spec.QuerySegmentSpec; +import org.apache.druid.segment.VirtualColumn; import org.apache.druid.segment.VirtualColumns; import org.apache.druid.segment.column.RowSignature; @@ -120,8 +122,11 @@ private static List buildLeafOperatos(DataSource dataSource, Vi null, scan.getFilter(), (int) scan.getScanRowsLimit(), - scan.getColumns(), -// scan.getVirtualColumns(), + ImmutableList + . builder() + .addAll(scan.getColumns()) + .addAll(virtualColumns.getColumnNames()) + .build(), vc_union(scan.getVirtualColumns(),virtualColumns), ordering)); } @@ -134,7 +139,19 @@ private static VirtualColumns vc_union(VirtualColumns virtualColumns, VirtualCol if (virtualColumns2.isEmpty()) { return virtualColumns; } - throw new RuntimeException("Unimplemented!"); + + VirtualColumn[] aa = virtualColumns.getVirtualColumns(); + VirtualColumn[] aa2 = virtualColumns2.getVirtualColumns(); + List vcs=new ArrayList(); + for (VirtualColumn virtualColumn : aa) { + vcs.add(virtualColumn); + + } + for (VirtualColumn virtualColumn : aa2) { + vcs.add(virtualColumn); + + } + return VirtualColumns.create(vcs); } @JsonCreator diff --git a/processing/src/main/java/org/apache/druid/segment/VirtualColumns.java b/processing/src/main/java/org/apache/druid/segment/VirtualColumns.java index b189a33dddd9..5ce1af24a17e 100644 --- a/processing/src/main/java/org/apache/druid/segment/VirtualColumns.java +++ b/processing/src/main/java/org/apache/druid/segment/VirtualColumns.java @@ -52,6 +52,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; /** * Class allowing lookup and usage of virtual columns. @@ -524,4 +525,9 @@ public boolean isEmpty() { return virtualColumns.isEmpty(); } + + public List getColumnNames() + { + return virtualColumns.stream().map(v -> v.getOutputName()).collect(Collectors.toList()); + } } diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java index a67ee7574927..703187613e3c 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java @@ -721,6 +721,7 @@ VirtualColumns getVirtualColumns(final boolean includeDimensions) } }); + if(false) { // we always want to add any virtual columns used by the query level DimFilter if (filter != null) { for (String columnName : filter.getRequiredColumns()) { @@ -776,9 +777,23 @@ VirtualColumns getVirtualColumns(final boolean includeDimensions) } } + }else { + Set exclude=new HashSet<>(); + if (grouping != null) { + if (!includeDimensions) { + for (DimensionExpression expression : grouping.getDimensions()) { + exclude.add(expression.getVirtualColumn()); + } + } + } + virtualColumns = virtualColumnRegistry.build(exclude); + } + // sort for predictable output List columns = new ArrayList<>(virtualColumns); columns.sort(Comparator.comparing(VirtualColumn::getOutputName)); + + return VirtualColumns.create(columns); } diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java index 52c87e02a613..8c0421cff878 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java @@ -34,11 +34,14 @@ import java.util.ArrayDeque; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Objects; import java.util.Optional; import java.util.Queue; +import java.util.Set; import java.util.stream.Collectors; /** @@ -353,4 +356,20 @@ public int hashCode() return Objects.hash(expression, typeHint); } } + + public Set build(Set exclude) + { + Set ret = new HashSet<>(); + if(virtualColumnsByName == null ) { + return ret; + } + + for (Entry entry : virtualColumnsByName.entrySet()) { + if(exclude.contains(entry.getKey())) { + continue; + } + ret.add(getVirtualColumn(entry.getKey())); + } + return ret; + } } diff --git a/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest b/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest index d11e6c09a19e..ebcc263b4ba8 100644 --- a/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest @@ -18,9 +18,9 @@ expectedOperators: - { type: "longMin", name: "w1", fieldName: "v1" } expectedResults: - - ["_",null,11] - - ["_10.1",null,11] - - ["_2",null,11] - - ["_1",null,11] - - ["_def",null,11] - - ["_abc",null,11] + - ["_",42.0,11] + - ["_10.1",42.0,11] + - ["_2",42.0,11] + - ["_1",42.0,11] + - ["_def",42.0,11] + - ["_abc",42.0,11] From 41fca506b103f1d779749b2239f59b87b06ea6cd Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 11:58:34 +0000 Subject: [PATCH 064/100] checkstyle --- .../druid/query/operator/WindowOperatorQuery.java | 12 ++++++------ .../query/operator/WindowOperatorQueryTest.java | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java index 410b7dda5c88..1c75de6cdf30 100644 --- a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java +++ b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java @@ -91,8 +91,9 @@ public WindowOperatorQuery( RowSignature rowSignature, List operators, VirtualColumns virtualColumns - ) { - this(rewriteDataSource(dataSource), intervals, context, rowSignature, operators, buildLeafOperatos(dataSource,virtualColumns)); + ) + { + this(rewriteDataSource(dataSource), intervals, context, rowSignature, operators, buildLeafOperatos(dataSource, virtualColumns)); } private static List buildLeafOperatos(DataSource dataSource, VirtualColumns virtualColumns) @@ -122,12 +123,11 @@ private static List buildLeafOperatos(DataSource dataSource, Vi null, scan.getFilter(), (int) scan.getScanRowsLimit(), - ImmutableList - . builder() + ImmutableList.builder() .addAll(scan.getColumns()) .addAll(virtualColumns.getColumnNames()) .build(), - vc_union(scan.getVirtualColumns(),virtualColumns), + vc_union(scan.getVirtualColumns(), virtualColumns), ordering)); } } @@ -142,7 +142,7 @@ private static VirtualColumns vc_union(VirtualColumns virtualColumns, VirtualCol VirtualColumn[] aa = virtualColumns.getVirtualColumns(); VirtualColumn[] aa2 = virtualColumns2.getVirtualColumns(); - List vcs=new ArrayList(); + List vcs = new ArrayList(); for (VirtualColumn virtualColumn : aa) { vcs.add(virtualColumn); diff --git a/processing/src/test/java/org/apache/druid/query/operator/WindowOperatorQueryTest.java b/processing/src/test/java/org/apache/druid/query/operator/WindowOperatorQueryTest.java index d4ba3e8f1295..d3d76dd95cf0 100644 --- a/processing/src/test/java/org/apache/druid/query/operator/WindowOperatorQueryTest.java +++ b/processing/src/test/java/org/apache/druid/query/operator/WindowOperatorQueryTest.java @@ -56,7 +56,7 @@ public void setUp() ImmutableMap.of("sally", "sue"), RowSignature.empty(), new ArrayList<>(), - (VirtualColumns)null + (VirtualColumns) null ); } From d51f8f15fe1b15dc19feaae3c1f41948ce762225 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 12:00:21 +0000 Subject: [PATCH 065/100] cleanup/etc --- .../druid/sql/calcite/rel/DruidQuery.java | 68 ++----------------- .../calcite/rel/VirtualColumnRegistry.java | 8 ++- 2 files changed, 10 insertions(+), 66 deletions(-) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java index 703187613e3c..ae838c4e23be 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java @@ -721,73 +721,15 @@ VirtualColumns getVirtualColumns(final boolean includeDimensions) } }); - if(false) { - // we always want to add any virtual columns used by the query level DimFilter - if (filter != null) { - for (String columnName : filter.getRequiredColumns()) { - if (virtualColumnRegistry.isVirtualColumnDefined(columnName)) { - virtualColumns.add(virtualColumnRegistry.getVirtualColumn(columnName)); - } - } - } - - if (selectProjection != null) { - for (String columnName : selectProjection.getVirtualColumns()) { - if (virtualColumnRegistry.isVirtualColumnDefined(columnName)) { - virtualColumns.add(virtualColumnRegistry.getVirtualColumn(columnName)); - } - } - } - + Set exclude = new HashSet<>(); if (grouping != null) { - if (includeDimensions) { + if (!includeDimensions) { for (DimensionExpression expression : grouping.getDimensions()) { - if (virtualColumnRegistry.isVirtualColumnDefined(expression.getVirtualColumn())) { - virtualColumns.add(virtualColumnRegistry.getVirtualColumn(expression.getVirtualColumn())); - } - } - } - - for (Aggregation aggregation : grouping.getAggregations()) { - virtualColumns.addAll(virtualColumnRegistry.getAllVirtualColumns(aggregation.getRequiredColumns())); - } - } - - if (sorting != null && sorting.getProjection() != null && grouping == null) { - // Sorting without grouping means we might have some post-sort Projection virtual columns. - - for (String columnName : sorting.getProjection().getVirtualColumns()) { - if (virtualColumnRegistry.isVirtualColumnDefined(columnName)) { - virtualColumns.add(virtualColumnRegistry.getVirtualColumn(columnName)); - } - } - } - - if (dataSource instanceof JoinDataSource) { - for (String expression : ((JoinDataSource) dataSource).getVirtualColumnCandidates()) { - if (virtualColumnRegistry.isVirtualColumnDefined(expression)) { - virtualColumns.add(virtualColumnRegistry.getVirtualColumn(expression)); - } - } - } - - for (String columnName : specialized) { - if (virtualColumnRegistry.isVirtualColumnDefined(columnName)) { - virtualColumns.add(virtualColumnRegistry.getVirtualColumn(columnName)); - } - } - - }else { - Set exclude=new HashSet<>(); - if (grouping != null) { - if (!includeDimensions) { - for (DimensionExpression expression : grouping.getDimensions()) { - exclude.add(expression.getVirtualColumn()); - } + exclude.add(expression.getVirtualColumn()); } } - virtualColumns = virtualColumnRegistry.build(exclude); } + virtualColumns = virtualColumnRegistry.build(exclude); // sort for predictable output List columns = new ArrayList<>(virtualColumns); @@ -1458,7 +1400,7 @@ private WindowOperatorQuery toWindowQuery() return null; } - VirtualColumns vcs=getVirtualColumns(false); + VirtualColumns vcs = getVirtualColumns(false); return new WindowOperatorQuery( dataSource, new LegacySegmentSpec(Intervals.ETERNITY), diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java index 8c0421cff878..82ea40240355 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java @@ -91,9 +91,11 @@ public static VirtualColumnRegistry create( ); } - public boolean isEmpty() { + public boolean isEmpty() + { return virtualColumnsByExpression.isEmpty(); } + /** * Check if a {@link VirtualColumn} is defined by column name */ @@ -360,12 +362,12 @@ public int hashCode() public Set build(Set exclude) { Set ret = new HashSet<>(); - if(virtualColumnsByName == null ) { + if (virtualColumnsByName == null) { return ret; } for (Entry entry : virtualColumnsByName.entrySet()) { - if(exclude.contains(entry.getKey())) { + if (exclude.contains(entry.getKey())) { continue; } ret.add(getVirtualColumn(entry.getKey())); From 7d8e568f3dd8cc5edc95cbe8a7bd19ebf46df7d9 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 12:16:42 +0000 Subject: [PATCH 066/100] put back --- .../druid/sql/calcite/rel/DruidQuery.java | 68 +++++++++++++++++-- 1 file changed, 63 insertions(+), 5 deletions(-) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java index ae838c4e23be..71369d1d7870 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java @@ -721,15 +721,73 @@ VirtualColumns getVirtualColumns(final boolean includeDimensions) } }); - Set exclude = new HashSet<>(); + if(true) { + // we always want to add any virtual columns used by the query level DimFilter + if (filter != null) { + for (String columnName : filter.getRequiredColumns()) { + if (virtualColumnRegistry.isVirtualColumnDefined(columnName)) { + virtualColumns.add(virtualColumnRegistry.getVirtualColumn(columnName)); + } + } + } + + if (selectProjection != null) { + for (String columnName : selectProjection.getVirtualColumns()) { + if (virtualColumnRegistry.isVirtualColumnDefined(columnName)) { + virtualColumns.add(virtualColumnRegistry.getVirtualColumn(columnName)); + } + } + } + if (grouping != null) { - if (!includeDimensions) { + if (includeDimensions) { for (DimensionExpression expression : grouping.getDimensions()) { - exclude.add(expression.getVirtualColumn()); + if (virtualColumnRegistry.isVirtualColumnDefined(expression.getVirtualColumn())) { + virtualColumns.add(virtualColumnRegistry.getVirtualColumn(expression.getVirtualColumn())); + } + } + } + + for (Aggregation aggregation : grouping.getAggregations()) { + virtualColumns.addAll(virtualColumnRegistry.getAllVirtualColumns(aggregation.getRequiredColumns())); + } + } + + if (sorting != null && sorting.getProjection() != null && grouping == null) { + // Sorting without grouping means we might have some post-sort Projection virtual columns. + + for (String columnName : sorting.getProjection().getVirtualColumns()) { + if (virtualColumnRegistry.isVirtualColumnDefined(columnName)) { + virtualColumns.add(virtualColumnRegistry.getVirtualColumn(columnName)); + } + } + } + + if (dataSource instanceof JoinDataSource) { + for (String expression : ((JoinDataSource) dataSource).getVirtualColumnCandidates()) { + if (virtualColumnRegistry.isVirtualColumnDefined(expression)) { + virtualColumns.add(virtualColumnRegistry.getVirtualColumn(expression)); + } + } + } + + for (String columnName : specialized) { + if (virtualColumnRegistry.isVirtualColumnDefined(columnName)) { + virtualColumns.add(virtualColumnRegistry.getVirtualColumn(columnName)); + } + } + + }else { + Set exclude=new HashSet<>(); + if (grouping != null) { + if (!includeDimensions) { + for (DimensionExpression expression : grouping.getDimensions()) { + exclude.add(expression.getVirtualColumn()); + } } } + virtualColumns = virtualColumnRegistry.build(exclude); } - virtualColumns = virtualColumnRegistry.build(exclude); // sort for predictable output List columns = new ArrayList<>(virtualColumns); @@ -1400,7 +1458,7 @@ private WindowOperatorQuery toWindowQuery() return null; } - VirtualColumns vcs = getVirtualColumns(false); + VirtualColumns vcs=getVirtualColumns(false); return new WindowOperatorQuery( dataSource, new LegacySegmentSpec(Intervals.ETERNITY), From 9904ce9d37fadf452e33bf6c3484a17a384f0c34 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 12:16:47 +0000 Subject: [PATCH 067/100] wat/abc test --- .../org/apache/druid/sql/calcite/CalciteQueryTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java index 08fdbc3bfaa0..b5a85cb596f7 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java @@ -13724,7 +13724,7 @@ public void testReturnEmptyRowWhenGroupByIsConvertedToTimeseriesWithMultipleCons { skipVectorize(); testQuery( - "SELECT 'A', dim1 from foo WHERE m1 = 50 AND dim1 = 'wat' GROUP BY dim1", + "SELECT 'A', dim1 from foo WHERE m1 = 6 AND dim1 = 'abc' GROUP BY dim1", ImmutableList.of( Druids.newTimeseriesQueryBuilder() .dataSource(CalciteTests.DATASOURCE1) @@ -13732,15 +13732,15 @@ public void testReturnEmptyRowWhenGroupByIsConvertedToTimeseriesWithMultipleCons .filters( and( NullHandling.replaceWithDefault() - ? selector("m1", "50") - : equality("m1", 50.0, ColumnType.FLOAT), - equality("dim1", "wat", ColumnType.STRING) + ? selector("m1", "6") + : equality("m1", 6.0, ColumnType.FLOAT), + equality("dim1", "abc", ColumnType.STRING) ) ) .granularity(Granularities.ALL) .postAggregators( new ExpressionPostAggregator("p0", "'A'", null, ExprMacroTable.nil()), - new ExpressionPostAggregator("p1", "'wat'", null, ExprMacroTable.nil()) + new ExpressionPostAggregator("p1", "'abc'", null, ExprMacroTable.nil()) ) .context(QUERY_CONTEXT_DO_SKIP_EMPTY_BUCKETS) .build() From 6e8731a357b13081039766285f9585f628b17661 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 12:16:50 +0000 Subject: [PATCH 068/100] Revert "wat/abc test" This reverts commit 9904ce9d37fadf452e33bf6c3484a17a384f0c34. --- .../org/apache/druid/sql/calcite/CalciteQueryTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java index b5a85cb596f7..08fdbc3bfaa0 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java @@ -13724,7 +13724,7 @@ public void testReturnEmptyRowWhenGroupByIsConvertedToTimeseriesWithMultipleCons { skipVectorize(); testQuery( - "SELECT 'A', dim1 from foo WHERE m1 = 6 AND dim1 = 'abc' GROUP BY dim1", + "SELECT 'A', dim1 from foo WHERE m1 = 50 AND dim1 = 'wat' GROUP BY dim1", ImmutableList.of( Druids.newTimeseriesQueryBuilder() .dataSource(CalciteTests.DATASOURCE1) @@ -13732,15 +13732,15 @@ public void testReturnEmptyRowWhenGroupByIsConvertedToTimeseriesWithMultipleCons .filters( and( NullHandling.replaceWithDefault() - ? selector("m1", "6") - : equality("m1", 6.0, ColumnType.FLOAT), - equality("dim1", "abc", ColumnType.STRING) + ? selector("m1", "50") + : equality("m1", 50.0, ColumnType.FLOAT), + equality("dim1", "wat", ColumnType.STRING) ) ) .granularity(Granularities.ALL) .postAggregators( new ExpressionPostAggregator("p0", "'A'", null, ExprMacroTable.nil()), - new ExpressionPostAggregator("p1", "'abc'", null, ExprMacroTable.nil()) + new ExpressionPostAggregator("p1", "'wat'", null, ExprMacroTable.nil()) ) .context(QUERY_CONTEXT_DO_SKIP_EMPTY_BUCKETS) .build() From b2ac570c4aa4801e0a1fe9b2e892a18566b8c9a1 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 12:33:50 +0000 Subject: [PATCH 069/100] weed out prev sol --- .../druid/sql/calcite/rel/DruidQuery.java | 17 +---------------- .../sql/calcite/rel/VirtualColumnRegistry.java | 15 +++++++++------ 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java index 71369d1d7870..1e9c8d39f38e 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java @@ -721,7 +721,6 @@ VirtualColumns getVirtualColumns(final boolean includeDimensions) } }); - if(true) { // we always want to add any virtual columns used by the query level DimFilter if (filter != null) { for (String columnName : filter.getRequiredColumns()) { @@ -777,23 +776,9 @@ VirtualColumns getVirtualColumns(final boolean includeDimensions) } } - }else { - Set exclude=new HashSet<>(); - if (grouping != null) { - if (!includeDimensions) { - for (DimensionExpression expression : grouping.getDimensions()) { - exclude.add(expression.getVirtualColumn()); - } - } - } - virtualColumns = virtualColumnRegistry.build(exclude); - } - // sort for predictable output List columns = new ArrayList<>(virtualColumns); columns.sort(Comparator.comparing(VirtualColumn::getOutputName)); - - return VirtualColumns.create(columns); } @@ -1458,7 +1443,7 @@ private WindowOperatorQuery toWindowQuery() return null; } - VirtualColumns vcs=getVirtualColumns(false); + VirtualColumns vcs = virtualColumnRegistry.build(Collections.emptySet()); return new WindowOperatorQuery( dataSource, new LegacySegmentSpec(Intervals.ETERNITY), diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java index 82ea40240355..3503838d6fd7 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/VirtualColumnRegistry.java @@ -22,6 +22,7 @@ import org.apache.calcite.rel.type.RelDataType; import org.apache.calcite.sql.type.SqlTypeName; import org.apache.druid.segment.VirtualColumn; +import org.apache.druid.segment.VirtualColumns; import org.apache.druid.segment.column.ColumnCapabilities; import org.apache.druid.segment.column.ColumnType; import org.apache.druid.segment.column.RowSignature; @@ -32,9 +33,10 @@ import javax.annotation.Nullable; import java.util.ArrayDeque; +import java.util.ArrayList; import java.util.Collection; +import java.util.Comparator; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -359,19 +361,20 @@ public int hashCode() } } - public Set build(Set exclude) + public VirtualColumns build(Set exclude) { - Set ret = new HashSet<>(); + List columns = new ArrayList<>(); if (virtualColumnsByName == null) { - return ret; + return VirtualColumns.EMPTY; } for (Entry entry : virtualColumnsByName.entrySet()) { if (exclude.contains(entry.getKey())) { continue; } - ret.add(getVirtualColumn(entry.getKey())); + columns.add(getVirtualColumn(entry.getKey())); } - return ret; + columns.sort(Comparator.comparing(VirtualColumn::getOutputName)); + return VirtualColumns.create(columns); } } From b0a3e1aeb652aaf7b93d863bb155cc7f644b041d Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 13:12:20 +0000 Subject: [PATCH 070/100] add comment --- .../main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java | 1 + 1 file changed, 1 insertion(+) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java index 1e9c8d39f38e..0b660704b69a 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java @@ -1443,6 +1443,7 @@ private WindowOperatorQuery toWindowQuery() return null; } + // all virtual cols are needed - these columns are only referenced from the aggregates VirtualColumns vcs = virtualColumnRegistry.build(Collections.emptySet()); return new WindowOperatorQuery( dataSource, From adeaf59909f6bf35f5122a066944228229347c4e Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 13:23:24 +0000 Subject: [PATCH 071/100] mark some calls unsupported --- .../query/operator/WindowOperatorQuery.java | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java index 1c75de6cdf30..811ce531cb25 100644 --- a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java +++ b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java @@ -24,6 +24,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import org.apache.druid.java.util.common.IAE; +import org.apache.druid.java.util.common.ISE; import org.apache.druid.query.BaseQuery; import org.apache.druid.query.DataSource; import org.apache.druid.query.InlineDataSource; @@ -229,27 +230,13 @@ public Query withOverriddenContext(Map contextOv @Override public Query withQuerySegmentSpec(QuerySegmentSpec spec) { - return new WindowOperatorQuery( - getDataSource(), - getQuerySegmentSpec(), - getContext(), - rowSignature, - operators, - leafOperators - ); + throw new ISE("Unsupported operation"); } @Override public Query withDataSource(DataSource dataSource) { - return new WindowOperatorQuery( - dataSource, - getQuerySegmentSpec(), - getContext(), - rowSignature, - operators, - leafOperators - ); + throw new ISE("Unsupported operation"); } @Override From 35ab7484d8891d16dc67c806658396d47c4c1e39 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 13:26:13 +0000 Subject: [PATCH 072/100] put them back :facepalm: --- .../query/operator/WindowOperatorQuery.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java index 811ce531cb25..8d56d2a6ebe8 100644 --- a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java +++ b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java @@ -24,7 +24,6 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import org.apache.druid.java.util.common.IAE; -import org.apache.druid.java.util.common.ISE; import org.apache.druid.query.BaseQuery; import org.apache.druid.query.DataSource; import org.apache.druid.query.InlineDataSource; @@ -230,13 +229,27 @@ public Query withOverriddenContext(Map contextOv @Override public Query withQuerySegmentSpec(QuerySegmentSpec spec) { - throw new ISE("Unsupported operation"); + return new WindowOperatorQuery( + getDataSource(), + spec, + getContext(), + rowSignature, + operators, + leafOperators + ); } @Override public Query withDataSource(DataSource dataSource) { - throw new ISE("Unsupported operation"); + return new WindowOperatorQuery( + dataSource, + getQuerySegmentSpec(), + getContext(), + rowSignature, + operators, + leafOperators + ); } @Override From 24bcd03f0be35994b562ca588c4b97a684808c96 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 13:43:23 +0000 Subject: [PATCH 073/100] zip the two stuff --- .../query/operator/WindowOperatorQuery.java | 48 +++++-------------- .../operator/WindowOperatorQueryTest.java | 2 +- .../druid/sql/calcite/rel/DruidQuery.java | 2 +- 3 files changed, 13 insertions(+), 39 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java index 8d56d2a6ebe8..f0b9662ae723 100644 --- a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java +++ b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java @@ -55,36 +55,11 @@ */ public class WindowOperatorQuery extends BaseQuery { - // FIXME: zip together buildLeafOperatos & rewriteDataSource; they are 2 sides of the same steps - private static DataSource rewriteDataSource(DataSource dataSource) - { - // We can re-write scan-style sub queries into an operator instead of doing the actual Scan query. So, we - // check for that and, if we are going to do the rewrite, then we return the sub datasource such that the - // parent constructor in BaseQuery stores the actual data source that we want to be distributed to. - - // At this point, we could also reach into a QueryDataSource and validate that the ordering expected by the - // partitioning at least aligns with the ordering coming from the underlying query. We unfortunately don't - // have enough information to validate that the underlying ordering aligns with expectations for the actual - // window operator queries, but maybe we could get that and validate it here too. - if (dataSource instanceof QueryDataSource) { - final Query subQuery = ((QueryDataSource) dataSource).getQuery(); - if (subQuery instanceof ScanQuery) { - return subQuery.getDataSource(); - } - return dataSource; - } else if (dataSource instanceof InlineDataSource) { - return dataSource; - } else { - throw new IAE("WindowOperatorQuery must run on top of a query or inline data source, got [%s]", dataSource); - } - } - private final RowSignature rowSignature; private final List operators; private final List leafOperators; - - public WindowOperatorQuery( + public static WindowOperatorQuery build( DataSource dataSource, QuerySegmentSpec intervals, Map context, @@ -93,20 +68,14 @@ public WindowOperatorQuery( VirtualColumns virtualColumns ) { - this(rewriteDataSource(dataSource), intervals, context, rowSignature, operators, buildLeafOperatos(dataSource, virtualColumns)); - } - - private static List buildLeafOperatos(DataSource dataSource, VirtualColumns virtualColumns) - { - List leafOperators = new ArrayList<>(); - // We have to double check again because this was validated in a static - // context before passing to the `super()` - // and we cannot save state from that... Ah well. + List leafOperators = new ArrayList(); if (dataSource instanceof QueryDataSource) { final Query subQuery = ((QueryDataSource) dataSource).getQuery(); if (subQuery instanceof ScanQuery) { + // transform the scan query into a leaf operator ScanQuery scan = (ScanQuery) subQuery; + dataSource = subQuery.getDataSource(); ArrayList ordering = new ArrayList<>(); for (ScanQuery.OrderBy orderBy : scan.getOrderBys()) { @@ -123,15 +92,20 @@ private static List buildLeafOperatos(DataSource dataSource, Vi null, scan.getFilter(), (int) scan.getScanRowsLimit(), - ImmutableList.builder() + ImmutableList. builder() .addAll(scan.getColumns()) .addAll(virtualColumns.getColumnNames()) .build(), vc_union(scan.getVirtualColumns(), virtualColumns), ordering)); } + } else if (dataSource instanceof InlineDataSource) { + // ok + } else { + throw new IAE("WindowOperatorQuery must run on top of a query or inline data source, got [%s]", dataSource); } - return leafOperators; + + return new WindowOperatorQuery(dataSource, intervals, context, rowSignature, operators, leafOperators); } private static VirtualColumns vc_union(VirtualColumns virtualColumns, VirtualColumns virtualColumns2) diff --git a/processing/src/test/java/org/apache/druid/query/operator/WindowOperatorQueryTest.java b/processing/src/test/java/org/apache/druid/query/operator/WindowOperatorQueryTest.java index d3d76dd95cf0..9e6355a8c7ef 100644 --- a/processing/src/test/java/org/apache/druid/query/operator/WindowOperatorQueryTest.java +++ b/processing/src/test/java/org/apache/druid/query/operator/WindowOperatorQueryTest.java @@ -50,7 +50,7 @@ public class WindowOperatorQueryTest @Before public void setUp() { - query = new WindowOperatorQuery( + query = WindowOperatorQuery.build( InlineDataSource.fromIterable(new ArrayList<>(), RowSignature.empty()), new LegacySegmentSpec(Intervals.ETERNITY), ImmutableMap.of("sally", "sue"), diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java index 0b660704b69a..c4296d1bb552 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java @@ -1445,7 +1445,7 @@ private WindowOperatorQuery toWindowQuery() // all virtual cols are needed - these columns are only referenced from the aggregates VirtualColumns vcs = virtualColumnRegistry.build(Collections.emptySet()); - return new WindowOperatorQuery( + return WindowOperatorQuery.build( dataSource, new LegacySegmentSpec(Intervals.ETERNITY), plannerContext.queryContextMap(), From 91077bedfbdb2c058b9b2d5094b6794a60a95489 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 15:07:11 +0000 Subject: [PATCH 074/100] blocked by non-existent type; columnselectyorfactorymaker#fromRAC / etc --- .../query/operator/WindowOperatorQuery.java | 22 ++++++++++++++----- .../LazilyDecoratedRowsAndColumns.java | 18 ++++++++------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java index f0b9662ae723..b58bd06d8b34 100644 --- a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java +++ b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java @@ -22,7 +22,6 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; import org.apache.druid.java.util.common.IAE; import org.apache.druid.query.BaseQuery; import org.apache.druid.query.DataSource; @@ -92,11 +91,13 @@ public static WindowOperatorQuery build( null, scan.getFilter(), (int) scan.getScanRowsLimit(), - ImmutableList. builder() - .addAll(scan.getColumns()) - .addAll(virtualColumns.getColumnNames()) - .build(), - vc_union(scan.getVirtualColumns(), virtualColumns), + scan.getColumns(), + scan.getVirtualColumns(), +// ImmutableList. builder() +// .addAll(scan.getColumns()) +// .addAll(virtualColumns.getColumnNames()) +// .build(), +// vc_union(scan.getVirtualColumns(), virtualColumns), ordering)); } } else if (dataSource instanceof InlineDataSource) { @@ -104,6 +105,15 @@ ImmutableList. builder() } else { throw new IAE("WindowOperatorQuery must run on top of a query or inline data source, got [%s]", dataSource); } + if(!virtualColumns.isEmpty()) { + leafOperators.add(new ScanOperatorFactory( + null, + null, + null, + null, + virtualColumns, + null)); + } return new WindowOperatorQuery(dataSource, intervals, context, rowSignature, operators, leafOperators); } diff --git a/processing/src/main/java/org/apache/druid/query/rowsandcols/LazilyDecoratedRowsAndColumns.java b/processing/src/main/java/org/apache/druid/query/rowsandcols/LazilyDecoratedRowsAndColumns.java index 29368ffe0518..9b367ec92a1c 100644 --- a/processing/src/main/java/org/apache/druid/query/rowsandcols/LazilyDecoratedRowsAndColumns.java +++ b/processing/src/main/java/org/apache/druid/query/rowsandcols/LazilyDecoratedRowsAndColumns.java @@ -30,7 +30,6 @@ import org.apache.druid.java.util.common.ISE; import org.apache.druid.java.util.common.Intervals; import org.apache.druid.java.util.common.Pair; -import org.apache.druid.java.util.common.UOE; import org.apache.druid.java.util.common.granularity.Granularities; import org.apache.druid.java.util.common.guava.Sequence; import org.apache.druid.query.filter.Filter; @@ -46,6 +45,7 @@ import org.apache.druid.segment.ColumnSelectorFactory; import org.apache.druid.segment.Cursor; import org.apache.druid.segment.StorageAdapter; +import org.apache.druid.segment.VirtualColumn; import org.apache.druid.segment.VirtualColumns; import org.apache.druid.segment.column.ColumnCapabilities; import org.apache.druid.segment.column.RowSignature; @@ -328,17 +328,15 @@ private Pair naiveMaterialize(RowsAndColumns rac) } } - if (virtualColumns != null) { - throw new UOE("Cannot apply virtual columns [%s] with naive apply.", virtualColumns); - } ArrayList columnsToGenerate = new ArrayList<>(); if (viewableColumns != null) { columnsToGenerate.addAll(viewableColumns); } else { columnsToGenerate.addAll(rac.getColumnNames()); - // When/if we support virtual columns from here, we should auto-add them to the list here as well as they expand - // the implicit project when no projection is defined + if (virtualColumns != null) { + columnsToGenerate.addAll(virtualColumns.getColumnNames()); + } } // There is all sorts of sub-optimal things in this code, but we just ignore them for now as it is difficult to @@ -354,13 +352,17 @@ private Pair naiveMaterialize(RowsAndColumns rac) final RowSignature.Builder sigBob = RowSignature.builder(); final ArenaMemoryAllocatorFactory memFactory = new ArenaMemoryAllocatorFactory(200 << 20); + for (String column : columnsToGenerate) { final Column racColumn = rac.findColumn(column); - if (racColumn == null) { + if (racColumn != null) { + sigBob.add(column, racColumn.toAccessor().getType()); continue; } + final VirtualColumn vc; + if (virtualColumns != null && (vc = virtualColumns.getVirtualColumn(column)) != null) { - sigBob.add(column, racColumn.toAccessor().getType()); + } } final int limitedNumRows; From 16fac3e62f92cf81ae89a05b61e50c5e28c53798 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 15:08:18 +0000 Subject: [PATCH 075/100] Revert "blocked by non-existent type; columnselectyorfactorymaker#fromRAC / etc" This reverts commit 91077bedfbdb2c058b9b2d5094b6794a60a95489. --- .../query/operator/WindowOperatorQuery.java | 22 +++++-------------- .../LazilyDecoratedRowsAndColumns.java | 18 +++++++-------- 2 files changed, 14 insertions(+), 26 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java index b58bd06d8b34..f0b9662ae723 100644 --- a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java +++ b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java @@ -22,6 +22,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; import org.apache.druid.java.util.common.IAE; import org.apache.druid.query.BaseQuery; import org.apache.druid.query.DataSource; @@ -91,13 +92,11 @@ public static WindowOperatorQuery build( null, scan.getFilter(), (int) scan.getScanRowsLimit(), - scan.getColumns(), - scan.getVirtualColumns(), -// ImmutableList. builder() -// .addAll(scan.getColumns()) -// .addAll(virtualColumns.getColumnNames()) -// .build(), -// vc_union(scan.getVirtualColumns(), virtualColumns), + ImmutableList. builder() + .addAll(scan.getColumns()) + .addAll(virtualColumns.getColumnNames()) + .build(), + vc_union(scan.getVirtualColumns(), virtualColumns), ordering)); } } else if (dataSource instanceof InlineDataSource) { @@ -105,15 +104,6 @@ public static WindowOperatorQuery build( } else { throw new IAE("WindowOperatorQuery must run on top of a query or inline data source, got [%s]", dataSource); } - if(!virtualColumns.isEmpty()) { - leafOperators.add(new ScanOperatorFactory( - null, - null, - null, - null, - virtualColumns, - null)); - } return new WindowOperatorQuery(dataSource, intervals, context, rowSignature, operators, leafOperators); } diff --git a/processing/src/main/java/org/apache/druid/query/rowsandcols/LazilyDecoratedRowsAndColumns.java b/processing/src/main/java/org/apache/druid/query/rowsandcols/LazilyDecoratedRowsAndColumns.java index 9b367ec92a1c..29368ffe0518 100644 --- a/processing/src/main/java/org/apache/druid/query/rowsandcols/LazilyDecoratedRowsAndColumns.java +++ b/processing/src/main/java/org/apache/druid/query/rowsandcols/LazilyDecoratedRowsAndColumns.java @@ -30,6 +30,7 @@ import org.apache.druid.java.util.common.ISE; import org.apache.druid.java.util.common.Intervals; import org.apache.druid.java.util.common.Pair; +import org.apache.druid.java.util.common.UOE; import org.apache.druid.java.util.common.granularity.Granularities; import org.apache.druid.java.util.common.guava.Sequence; import org.apache.druid.query.filter.Filter; @@ -45,7 +46,6 @@ import org.apache.druid.segment.ColumnSelectorFactory; import org.apache.druid.segment.Cursor; import org.apache.druid.segment.StorageAdapter; -import org.apache.druid.segment.VirtualColumn; import org.apache.druid.segment.VirtualColumns; import org.apache.druid.segment.column.ColumnCapabilities; import org.apache.druid.segment.column.RowSignature; @@ -328,15 +328,17 @@ private Pair naiveMaterialize(RowsAndColumns rac) } } + if (virtualColumns != null) { + throw new UOE("Cannot apply virtual columns [%s] with naive apply.", virtualColumns); + } ArrayList columnsToGenerate = new ArrayList<>(); if (viewableColumns != null) { columnsToGenerate.addAll(viewableColumns); } else { columnsToGenerate.addAll(rac.getColumnNames()); - if (virtualColumns != null) { - columnsToGenerate.addAll(virtualColumns.getColumnNames()); - } + // When/if we support virtual columns from here, we should auto-add them to the list here as well as they expand + // the implicit project when no projection is defined } // There is all sorts of sub-optimal things in this code, but we just ignore them for now as it is difficult to @@ -352,17 +354,13 @@ private Pair naiveMaterialize(RowsAndColumns rac) final RowSignature.Builder sigBob = RowSignature.builder(); final ArenaMemoryAllocatorFactory memFactory = new ArenaMemoryAllocatorFactory(200 << 20); - for (String column : columnsToGenerate) { final Column racColumn = rac.findColumn(column); - if (racColumn != null) { - sigBob.add(column, racColumn.toAccessor().getType()); + if (racColumn == null) { continue; } - final VirtualColumn vc; - if (virtualColumns != null && (vc = virtualColumns.getVirtualColumn(column)) != null) { - } + sigBob.add(column, racColumn.toAccessor().getType()); } final int limitedNumRows; From 77eeb603675b34aa6dec10d66f498329af76ce0f Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 15:14:59 +0000 Subject: [PATCH 076/100] ensure no invalid use --- .../apache/druid/query/operator/WindowOperatorQuery.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java index f0b9662ae723..7f1bdb4443a3 100644 --- a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java +++ b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java @@ -23,6 +23,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; +import org.apache.druid.error.DruidException; import org.apache.druid.java.util.common.IAE; import org.apache.druid.query.BaseQuery; import org.apache.druid.query.DataSource; @@ -69,6 +70,7 @@ public static WindowOperatorQuery build( ) { List leafOperators = new ArrayList(); + boolean virtualColumnsHandled = false; if (dataSource instanceof QueryDataSource) { final Query subQuery = ((QueryDataSource) dataSource).getQuery(); @@ -87,6 +89,7 @@ public static WindowOperatorQuery build( : ColumnWithDirection.Direction.ASC)); } + virtualColumnsHandled = true; leafOperators.add( new ScanOperatorFactory( null, @@ -105,6 +108,10 @@ ImmutableList. builder() throw new IAE("WindowOperatorQuery must run on top of a query or inline data source, got [%s]", dataSource); } + if (!virtualColumns.isEmpty() && !virtualColumnsHandled) { + throw DruidException.defensive("Not-yet able to handle virtualColumns without a scanQuery!"); + } + return new WindowOperatorQuery(dataSource, intervals, context, rowSignature, operators, leafOperators); } From 21ff7f5ee82fd7271f4ea5153fb9fe67fb51e3b3 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 15:25:17 +0000 Subject: [PATCH 077/100] checkstyle --- .../org/apache/druid/query/operator/WindowOperatorQuery.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java index 7f1bdb4443a3..b824305835e1 100644 --- a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java +++ b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java @@ -95,7 +95,7 @@ public static WindowOperatorQuery build( null, scan.getFilter(), (int) scan.getScanRowsLimit(), - ImmutableList. builder() + ImmutableList.builder() .addAll(scan.getColumns()) .addAll(virtualColumns.getColumnNames()) .build(), From 21ee013d825a4510b67dfa858fab615ed030d080 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Mon, 16 Oct 2023 17:37:19 +0000 Subject: [PATCH 078/100] ugly-fix --- .../calcite/planner/DruidOperatorTable.java | 6 ++++ .../calcite/tests/window/simpleSum.sqlTest | 31 +++++++++---------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java index 6c432c800d89..063199cdb59c 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java @@ -489,6 +489,12 @@ public void lookupOperatorOverloads( if (opName == null || opName.names.size() != 1) { return; } + if(syntax == SqlSyntax.POSTFIX) { + int asd=1; + operatorList.add( + SqlStdOperatorTable.DESC); +// throw new RuntimeException("POPP"); + } final OperatorKey operatorKey = OperatorKey.of(opName.getSimple(), syntax); diff --git a/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest b/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest index d4affc6ec563..49ff2ca5688e 100644 --- a/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest @@ -1,26 +1,25 @@ type: "operatorValidation" sql: | - SELECT - FLOOR(__time TO DAY) t, - SUM(cnt) c, - SUM(SUM(cnt)) OVER (ORDER BY FLOOR(__time TO DAY)) cc - FROM foo - GROUP BY FLOOR(__time TO DAY) + SELECT + channel, + cityName, + __time,delta, + SUM(delta) OVER (ORDER BY __time desc ) windowedDelta + FROM wikipedia + where cityName = 'Beijing' + LIMIT 20 expectedOperators: - - { type: "naivePartition", partitionColumns: [ ] } + - {type: "naiveSort", columns: [{column: "d0", direction: "ASC"}, {column: "d1", direction: "DESC"}]} + - { type: "naivePartition", partitionColumns: [ "d0" ] } - type: "window" processor: type: "framedAgg" - frame: { peerType: "ROWS", lowUnbounded: true, lowOffset: 0, uppUnbounded: false, uppOffset: 0 } + frame: { peerType: "ROWS", lowUnbounded: false, lowOffset: 3, uppUnbounded: false, uppOffset: 2 } aggregations: - { type: "longSum", name: "w0", fieldName: "a0" } - -expectedResults: - - [ 946684800000, 1, 1 ] - - [ 946771200000, 1, 2 ] - - [ 946857600000, 1, 3 ] - - [ 978307200000, 1, 4 ] - - [ 978393600000, 1, 5 ] - - [ 978480000000, 1, 6 ] + - { type: "naiveSort", columns: [ { column: "d1", direction: "ASC" }, { column: "a0", direction: "DESC"} ]} + - { type: "naivePartition", partitionColumns: [ "d1" ] } + - type: "window" + processor: { type: "rowNumber", outputColumn: "w1"} From f9493f8f8e48859b58fae6e1be188b8968ff1cb3 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 06:51:44 +0000 Subject: [PATCH 079/100] fix time/long --- .../calcite/planner/DruidOperatorTable.java | 7 +-- .../sql/calcite/DrillWindowQueryTest.java | 43 +++++-------------- 2 files changed, 14 insertions(+), 36 deletions(-) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java index 063199cdb59c..e41743076028 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java @@ -491,9 +491,10 @@ public void lookupOperatorOverloads( } if(syntax == SqlSyntax.POSTFIX) { int asd=1; - operatorList.add( - SqlStdOperatorTable.DESC); -// throw new RuntimeException("POPP"); + if (opName.names.contains("DESC")) { + operatorList.add( + SqlStdOperatorTable.DESC); + } } final OperatorKey operatorKey = OperatorKey.of(opName.getSimple(), syntax); diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java index e592340c2e53..0946be6e840b 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java @@ -450,7 +450,8 @@ private static Object parseLongValue(final String val) } try { LocalTime v = LocalTime.parse(val); - return v.getMillisOfDay(); + Long l = (long) v.getMillisOfDay(); + return l; } catch (Exception e) { } @@ -4385,7 +4386,7 @@ public void test_nestedAggs_nstdWinView01() windowQueryTest(); } - @NotYetSupported(Modes.MISSING_DESC) + @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("aggregates/winFnQry_63") @Test public void test_aggregates_winFnQry_63() @@ -4393,7 +4394,7 @@ public void test_aggregates_winFnQry_63() windowQueryTest(); } - @NotYetSupported(Modes.MISSING_DESC) + @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/winFnQry_83") @Test public void test_aggregates_winFnQry_83() @@ -4401,7 +4402,7 @@ public void test_aggregates_winFnQry_83() windowQueryTest(); } - @NotYetSupported(Modes.MISSING_DESC) + @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("frameclause/multipl_wnwds/mulwind_01") @Test public void test_frameclause_multipl_wnwds_mulwind_01() @@ -4409,7 +4410,7 @@ public void test_frameclause_multipl_wnwds_mulwind_01() windowQueryTest(); } - @NotYetSupported(Modes.MISSING_DESC) + @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("frameclause/multipl_wnwds/mulwind_06") @Test public void test_frameclause_multipl_wnwds_mulwind_06() @@ -4417,7 +4418,7 @@ public void test_frameclause_multipl_wnwds_mulwind_06() windowQueryTest(); } - @NotYetSupported(Modes.MISSING_DESC) + @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("frameclause/multipl_wnwds/mulwind_07") @Test public void test_frameclause_multipl_wnwds_mulwind_07() @@ -4425,7 +4426,6 @@ public void test_frameclause_multipl_wnwds_mulwind_07() windowQueryTest(); } - @NotYetSupported(Modes.MISSING_DESC) @DrillTest("lag_func/lag_Fn_108") @Test public void test_lag_func_lag_Fn_108() @@ -4433,7 +4433,6 @@ public void test_lag_func_lag_Fn_108() windowQueryTest(); } - @NotYetSupported(Modes.MISSING_DESC) @DrillTest("lag_func/lag_Fn_109") @Test public void test_lag_func_lag_Fn_109() @@ -4441,7 +4440,7 @@ public void test_lag_func_lag_Fn_109() windowQueryTest(); } - @NotYetSupported(Modes.MISSING_DESC) + @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_69") @Test public void test_lag_func_lag_Fn_69() @@ -4449,7 +4448,6 @@ public void test_lag_func_lag_Fn_69() windowQueryTest(); } - @NotYetSupported(Modes.MISSING_DESC) @DrillTest("lead_func/lead_Fn_103") @Test public void test_lead_func_lead_Fn_103() @@ -4457,7 +4455,6 @@ public void test_lead_func_lead_Fn_103() windowQueryTest(); } - @NotYetSupported(Modes.MISSING_DESC) @DrillTest("lead_func/lead_Fn_104") @Test public void test_lead_func_lead_Fn_104() @@ -4465,7 +4462,7 @@ public void test_lead_func_lead_Fn_104() windowQueryTest(); } - @NotYetSupported(Modes.MISSING_DESC) + @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_69") @Test public void test_lead_func_lead_Fn_69() @@ -4473,7 +4470,7 @@ public void test_lead_func_lead_Fn_69() windowQueryTest(); } - @NotYetSupported(Modes.MISSING_DESC) + @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("nestedAggs/multiWin_7") @Test public void test_nestedAggs_multiWin_7() @@ -6463,7 +6460,6 @@ public void test_aggregates_winFnQry_8() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/wo_OrdrBy_17") @Test public void test_aggregates_wo_OrdrBy_17() @@ -6471,7 +6467,6 @@ public void test_aggregates_wo_OrdrBy_17() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/wo_OrdrBy_18") @Test public void test_aggregates_wo_OrdrBy_18() @@ -6479,7 +6474,6 @@ public void test_aggregates_wo_OrdrBy_18() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/wo_OrdrBy_19") @Test public void test_aggregates_wo_OrdrBy_19() @@ -6487,7 +6481,6 @@ public void test_aggregates_wo_OrdrBy_19() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/wo_OrdrBy_20") @Test public void test_aggregates_wo_OrdrBy_20() @@ -6495,7 +6488,6 @@ public void test_aggregates_wo_OrdrBy_20() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/wo_OrdrBy_21") @Test public void test_aggregates_wo_OrdrBy_21() @@ -6674,7 +6666,6 @@ public void test_aggregates_woPrtnBy_9() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("first_val/firstValFn_17") @Test public void test_first_val_firstValFn_17() @@ -6807,7 +6798,6 @@ public void test_frameclause_defaultFrame_RBUPACR_dt_2() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("frameclause/defaultFrame/RBUPACR_dt_4") @Test public void test_frameclause_defaultFrame_RBUPACR_dt_4() @@ -7268,7 +7258,6 @@ public void test_frameclause_RBUPAUF_RBUPAUF_dt_2() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("frameclause/RBUPAUF/RBUPAUF_dt_4") @Test public void test_frameclause_RBUPAUF_RBUPAUF_dt_4() @@ -7338,7 +7327,6 @@ public void test_frameclause_subQueries_frmInSubQry_58() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("frameclause/subQueries/frmInSubQry_59") @Test public void test_frameclause_subQueries_frmInSubQry_59() @@ -7346,7 +7334,6 @@ public void test_frameclause_subQueries_frmInSubQry_59() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("frameclause/subQueries/frmInSubQry_60") @Test public void test_frameclause_subQueries_frmInSubQry_60() @@ -7362,7 +7349,6 @@ public void test_frameclause_subQueries_frmInSubQry_61() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("frameclause/subQueries/frmInSubQry_62") @Test public void test_frameclause_subQueries_frmInSubQry_62() @@ -7581,7 +7567,6 @@ public void test_lead_func_lead_Fn_51() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("lead_func/lead_Fn_54") @Test public void test_lead_func_lead_Fn_54() @@ -7596,7 +7581,6 @@ public void test_lead_func_lead_Fn_60() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("lead_func/lead_Fn_63") @Test public void test_lead_func_lead_Fn_63() @@ -7618,7 +7602,6 @@ public void test_lead_func_lead_Fn_77() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("lead_func/lead_Fn_90") @Test public void test_lead_func_lead_Fn_90() @@ -7633,7 +7616,6 @@ public void test_lead_func_lead_Fn_96() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("lead_func/lead_Fn_9") @Test public void test_lead_func_lead_Fn_9() @@ -7649,7 +7631,6 @@ public void test_nestedAggs_basic_3() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("nestedAggs/basic_5") @Test public void test_nestedAggs_basic_5() @@ -7735,7 +7716,6 @@ public void test_nestedAggs_woutPrtnBy_5() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("ntile_func/ntileFn_15") @Test public void test_ntile_func_ntileFn_15() @@ -7844,7 +7824,6 @@ public void test_frameclause_RBUPACR_RBUPACR_dt_2() windowQueryTest(); } - @NotYetSupported(Modes.T_ALLTYPES_ISSUES) @DrillTest("frameclause/RBUPACR/RBUPACR_dt_4") @Test public void test_frameclause_RBUPACR_RBUPACR_dt_4() @@ -7905,7 +7884,6 @@ public void test_lag_func_lag_Fn_60() windowQueryTest(); } - @NotYetSupported(Modes.T_ALLTYPES_ISSUES) @DrillTest("lag_func/lag_Fn_77") @Test public void test_lag_func_lag_Fn_77() @@ -7913,7 +7891,6 @@ public void test_lag_func_lag_Fn_77() windowQueryTest(); } - @NotYetSupported(Modes.T_ALLTYPES_ISSUES) @DrillTest("lag_func/lag_Fn_95") @Test public void test_lag_func_lag_Fn_95() From 8d28b75a6f912300189f8252d4677ebe7381bbf2 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 06:59:40 +0000 Subject: [PATCH 080/100] try nulls first/last --- .../druid/sql/calcite/planner/DruidOperatorTable.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java index e41743076028..bd7f24dcbe60 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java @@ -495,6 +495,14 @@ public void lookupOperatorOverloads( operatorList.add( SqlStdOperatorTable.DESC); } + if (opName.names.contains("NULLS FIRST")) { + operatorList.add( + SqlStdOperatorTable.NULLS_FIRST); + } + if (opName.names.contains("NULLS_LAST")) { + operatorList.add( + SqlStdOperatorTable.NULLS_LAST); + } } final OperatorKey operatorKey = OperatorKey.of(opName.getSimple(), syntax); From 41239d1af4d0abb8c8ef63f0f51428fea3c75cc5 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 08:42:59 +0000 Subject: [PATCH 081/100] change order in file --- .../parquet/simple/ParquetGroupConverter.java | 83 +++++++++---------- 1 file changed, 41 insertions(+), 42 deletions(-) diff --git a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java index 4bdfbe39684f..4571da3d7246 100644 --- a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java +++ b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java @@ -51,6 +51,47 @@ public class ParquetGroupConverter private static final long MILLIS_IN_DAY = TimeUnit.DAYS.toMillis(1); private static final long NANOS_PER_MILLISECOND = TimeUnit.MILLISECONDS.toNanos(1); + /** + * https://github.com/apache/drill/blob/2ab46a9411a52f12a0f9acb1144a318059439bc4/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetReaderUtility.java#L89 + */ + public static final long CORRECT_CORRUPT_DATE_SHIFT = 2 * JULIAN_EPOCH_OFFSET_DAYS; + + private final boolean binaryAsString; + private final boolean convertCorruptDates; + + public ParquetGroupConverter(boolean binaryAsString, boolean convertCorruptDates) + { + this.binaryAsString = binaryAsString; + this.convertCorruptDates = convertCorruptDates; + } + + /** + * Recursively converts a group into native Java Map + * + * @param g the group + * @return the native Java object + */ + public Object convertGroup(Group g) + { + Map retVal = new LinkedHashMap<>(); + + for (Type field : g.getType().getFields()) { + final String fieldName = field.getName(); + retVal.put(fieldName, convertField(g, fieldName)); + } + + return retVal; + } + + Object unwrapListElement(Object o) + { + if (o instanceof Group) { + Group g = (Group) o; + return convertListElement(g); + } + return o; + } + /** * Convert a parquet group field as though it were a map. Logical types of 'list' and 'map' will be transformed * into java lists and maps respectively ({@link ParquetGroupConverter#convertLogicalList} and @@ -447,12 +488,6 @@ private Object convertPrimitiveField(Group g, int fieldIndex, int index) } } - /** - * https://github.com/apache/drill/blob/2ab46a9411a52f12a0f9acb1144a318059439bc4/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetReaderUtility.java#L89 - */ - public static final long JULIAN_DAY_NUMBER_FOR_UNIX_EPOCH = 2440588; - public static final long CORRECT_CORRUPT_DATE_SHIFT = 2 * JULIAN_DAY_NUMBER_FOR_UNIX_EPOCH; - private long convertDateToMillis(int value) { if (convertCorruptDates) { @@ -508,40 +543,4 @@ private static BigDecimal convertBinaryToDecimal(Binary value, int precision, in return new BigDecimal(new BigInteger(value.getBytes()), scale); } } - - private final boolean binaryAsString; - private final boolean convertCorruptDates; - - public ParquetGroupConverter(boolean binaryAsString, boolean convertCorruptDates) - { - this.binaryAsString = binaryAsString; - this.convertCorruptDates = convertCorruptDates; - } - - /** - * Recursively converts a group into native Java Map - * - * @param g the group - * @return the native Java object - */ - public Object convertGroup(Group g) - { - Map retVal = new LinkedHashMap<>(); - - for (Type field : g.getType().getFields()) { - final String fieldName = field.getName(); - retVal.put(fieldName, convertField(g, fieldName)); - } - - return retVal; - } - - Object unwrapListElement(Object o) - { - if (o instanceof Group) { - Group g = (Group) o; - return convertListElement(g); - } - return o; - } } From c330f6c756062f18c134eca768b466868a5a8334 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 08:45:11 +0000 Subject: [PATCH 082/100] fixed by null+this --- .../org/apache/druid/sql/calcite/DrillWindowQueryTest.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java index a9cd83bad946..4a090ebc6abd 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java @@ -6807,7 +6807,6 @@ public void test_frameclause_defaultFrame_RBUPACR_dt_2() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("frameclause/defaultFrame/RBUPACR_dt_4") @Test public void test_frameclause_defaultFrame_RBUPACR_dt_4() @@ -7268,7 +7267,6 @@ public void test_frameclause_RBUPAUF_RBUPAUF_dt_2() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("frameclause/RBUPAUF/RBUPAUF_dt_4") @Test public void test_frameclause_RBUPAUF_RBUPAUF_dt_4() @@ -7338,7 +7336,6 @@ public void test_frameclause_subQueries_frmInSubQry_58() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("frameclause/subQueries/frmInSubQry_59") @Test public void test_frameclause_subQueries_frmInSubQry_59() @@ -7346,7 +7343,6 @@ public void test_frameclause_subQueries_frmInSubQry_59() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("frameclause/subQueries/frmInSubQry_60") @Test public void test_frameclause_subQueries_frmInSubQry_60() @@ -7362,7 +7358,6 @@ public void test_frameclause_subQueries_frmInSubQry_61() windowQueryTest(); } - @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("frameclause/subQueries/frmInSubQry_62") @Test public void test_frameclause_subQueries_frmInSubQry_62() @@ -7844,7 +7839,6 @@ public void test_frameclause_RBUPACR_RBUPACR_dt_2() windowQueryTest(); } - @NotYetSupported(Modes.T_ALLTYPES_ISSUES) @DrillTest("frameclause/RBUPACR/RBUPACR_dt_4") @Test public void test_frameclause_RBUPACR_RBUPACR_dt_4() From 0d7309e47fe4bf4ec7bf2a604184760e7a2d205c Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 08:47:29 +0000 Subject: [PATCH 083/100] private const --- .../druid/data/input/parquet/simple/ParquetGroupConverter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java index 4571da3d7246..4d1bb5d6f110 100644 --- a/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java +++ b/extensions-core/parquet-extensions/src/main/java/org/apache/druid/data/input/parquet/simple/ParquetGroupConverter.java @@ -54,7 +54,7 @@ public class ParquetGroupConverter /** * https://github.com/apache/drill/blob/2ab46a9411a52f12a0f9acb1144a318059439bc4/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetReaderUtility.java#L89 */ - public static final long CORRECT_CORRUPT_DATE_SHIFT = 2 * JULIAN_EPOCH_OFFSET_DAYS; + private static final long CORRECT_CORRUPT_DATE_SHIFT = 2 * JULIAN_EPOCH_OFFSET_DAYS; private final boolean binaryAsString; private final boolean convertCorruptDates; From 8fa322e70840dc09421db2c23a372c98be51b313 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 11:56:52 +0000 Subject: [PATCH 084/100] fix/changes/etc --- .../planner/DescOperatorConversion.java | 52 +++++++++++++++++++ .../calcite/planner/DruidOperatorTable.java | 26 +++++----- .../calcite/planner/DruidSqlValidator.java | 27 ++++++++++ .../sql/calcite/DrillWindowQueryTest.java | 9 ---- .../tests/window/orderByDescNulls.sqlTest | 24 +++++++++ .../calcite/tests/window/simpleSum.sqlTest | 11 ++-- 6 files changed, 121 insertions(+), 28 deletions(-) create mode 100644 sql/src/main/java/org/apache/druid/sql/calcite/planner/DescOperatorConversion.java create mode 100644 sql/src/test/resources/calcite/tests/window/orderByDescNulls.sqlTest diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DescOperatorConversion.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DescOperatorConversion.java new file mode 100644 index 000000000000..e7195866c7b0 --- /dev/null +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DescOperatorConversion.java @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.druid.sql.calcite.planner; + +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.sql.SqlOperator; +import org.apache.calcite.sql.SqlPostfixOperator; +import org.apache.druid.segment.column.RowSignature; +import org.apache.druid.sql.calcite.expression.DruidExpression; +import org.apache.druid.sql.calcite.expression.SqlOperatorConversion; + +public class DescOperatorConversion implements SqlOperatorConversion +{ + + private SqlPostfixOperator desc; + + public DescOperatorConversion(SqlPostfixOperator desc) + { + this.desc = desc; + + } + + @Override + public SqlOperator calciteOperator() + { + return desc; + } + + @Override + public DruidExpression toDruidExpression(PlannerContext plannerContext, RowSignature rowSignature, RexNode rexNode) + { + throw new RuntimeException("Never expected to get a call to this method"); + } + +} diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java index bd7f24dcbe60..695690d04e92 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java @@ -350,6 +350,9 @@ public class DruidOperatorTable implements SqlOperatorTable ImmutableList.builder() .add(new DirectOperatorConversion(SqlStdOperatorTable.ABS, "abs")) .add(new CaseOperatorConversion()) + .add(new DescOperatorConversion(SqlStdOperatorTable.DESC)) + .add(new DescOperatorConversion(SqlStdOperatorTable.NULLS_FIRST)) + .add(new DescOperatorConversion(SqlStdOperatorTable.NULLS_LAST)) .add(new DirectOperatorConversion(SqlStdOperatorTable.CHAR_LENGTH, "strlen")) .add(CHARACTER_LENGTH_CONVERSION) .add(new AliasedOperatorConversion(CHARACTER_LENGTH_CONVERSION, "LENGTH")) @@ -490,19 +493,16 @@ public void lookupOperatorOverloads( return; } if(syntax == SqlSyntax.POSTFIX) { - int asd=1; - if (opName.names.contains("DESC")) { - operatorList.add( - SqlStdOperatorTable.DESC); - } - if (opName.names.contains("NULLS FIRST")) { - operatorList.add( - SqlStdOperatorTable.NULLS_FIRST); - } - if (opName.names.contains("NULLS_LAST")) { - operatorList.add( - SqlStdOperatorTable.NULLS_LAST); - } + int asd = 1; +// if (opName.names.contains("DESC")) { +// operatorList.add(SqlStdOperatorTable.DESC); +// } +// if (opName.names.contains("NULLS FIRST")) { +// operatorList.add(SqlStdOperatorTable.NULLS_FIRST); +// } +// if (opName.names.contains("NULLS_LAST")) { +// operatorList.add(SqlStdOperatorTable.NULLS_LAST); +// } } final OperatorKey operatorKey = OperatorKey.of(opName.getSimple(), syntax); diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java index 5a901c72296e..ab3d1ba2e6b0 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java @@ -22,7 +22,12 @@ import org.apache.calcite.adapter.java.JavaTypeFactory; import org.apache.calcite.prepare.BaseDruidSqlValidator; import org.apache.calcite.prepare.CalciteCatalogReader; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.SqlOperatorTable; +import org.apache.calcite.sql.validate.SqlValidatorScope; +import org.apache.calcite.util.Static; /** * Druid extended SQL validator. (At present, it doesn't actually @@ -39,4 +44,26 @@ protected DruidSqlValidator( { super(opTab, catalogReader, typeFactory, validatorConfig); } + + @Override + public void validateCall(SqlCall call, SqlValidatorScope scope) + { + if(call.getKind() == SqlKind.NULLS_FIRST) { + SqlNode op0 = call.getOperandList().get(0); + if(op0.getKind() == SqlKind.DESCENDING) { + throw newValidationError(call, + Static.RESOURCE.functionMatchRecognizeOnly("JADAJADA!")); + } + } + if(call.getKind() == SqlKind.NULLS_LAST) { + SqlNode op0 = call.getOperandList().get(0); + if(op0.getKind() != SqlKind.DESCENDING) { + throw newValidationError(call, + Static.RESOURCE.functionMatchRecognizeOnly("JADAJADA2!")); + } + + } + + super.validateCall(call, scope); + } } diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java index 0946be6e840b..5fd97d00fcae 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java @@ -5462,7 +5462,6 @@ public void test_aggregates_winFnQry_82() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_10") @Test public void test_lag_func_lag_Fn_10() @@ -5470,7 +5469,6 @@ public void test_lag_func_lag_Fn_10() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_11") @Test public void test_lag_func_lag_Fn_11() @@ -5478,7 +5476,6 @@ public void test_lag_func_lag_Fn_11() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_12") @Test public void test_lag_func_lag_Fn_12() @@ -5486,7 +5483,6 @@ public void test_lag_func_lag_Fn_12() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_13") @Test public void test_lag_func_lag_Fn_13() @@ -5494,7 +5490,6 @@ public void test_lag_func_lag_Fn_13() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_14") @Test public void test_lag_func_lag_Fn_14() @@ -5502,7 +5497,6 @@ public void test_lag_func_lag_Fn_14() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_15") @Test public void test_lag_func_lag_Fn_15() @@ -5510,7 +5504,6 @@ public void test_lag_func_lag_Fn_15() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_16") @Test public void test_lag_func_lag_Fn_16() @@ -5518,7 +5511,6 @@ public void test_lag_func_lag_Fn_16() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_17") @Test public void test_lag_func_lag_Fn_17() @@ -5526,7 +5518,6 @@ public void test_lag_func_lag_Fn_17() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_18") @Test public void test_lag_func_lag_Fn_18() diff --git a/sql/src/test/resources/calcite/tests/window/orderByDescNulls.sqlTest b/sql/src/test/resources/calcite/tests/window/orderByDescNulls.sqlTest new file mode 100644 index 000000000000..8b7496149238 --- /dev/null +++ b/sql/src/test/resources/calcite/tests/window/orderByDescNulls.sqlTest @@ -0,0 +1,24 @@ +type: "operatorValidation" + +sql: | + SELECT + cityName, + __time, + ROW_NUMBER() OVER (ORDER BY cityName desc nulls last, __time ) windowedDelta, + ROW_NUMBER() OVER (ORDER BY cityName nulls first, __time ) windowedDelta + FROM wikipedia + where page < '0' and channel like '#en%' + +expectedOperators: + - {type: "naiveSort", columns: [{column: "d0", direction: "ASC"}, {column: "d1", direction: "DESC"}]} + - { type: "naivePartition", partitionColumns: [ "d0" ] } + - type: "window" + processor: + type: "framedAgg" + frame: { peerType: "ROWS", lowUnbounded: false, lowOffset: 3, uppUnbounded: false, uppOffset: 2 } + aggregations: + - { type: "longSum", name: "w0", fieldName: "a0" } + - { type: "naiveSort", columns: [ { column: "d1", direction: "ASC" }, { column: "a0", direction: "DESC"} ]} + - { type: "naivePartition", partitionColumns: [ "d1" ] } + - type: "window" + processor: { type: "rowNumber", outputColumn: "w1"} diff --git a/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest b/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest index 49ff2ca5688e..8b7496149238 100644 --- a/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest @@ -2,13 +2,12 @@ type: "operatorValidation" sql: | SELECT - channel, - cityName, - __time,delta, - SUM(delta) OVER (ORDER BY __time desc ) windowedDelta + cityName, + __time, + ROW_NUMBER() OVER (ORDER BY cityName desc nulls last, __time ) windowedDelta, + ROW_NUMBER() OVER (ORDER BY cityName nulls first, __time ) windowedDelta FROM wikipedia - where cityName = 'Beijing' - LIMIT 20 + where page < '0' and channel like '#en%' expectedOperators: - {type: "naiveSort", columns: [{column: "d0", direction: "ASC"}, {column: "d1", direction: "DESC"}]} From ddceef6b64f2cfa88720126c3d3845947ae4e914 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 12:02:06 +0000 Subject: [PATCH 085/100] fixes/etc --- .../tests/window/orderByDescNulls.sqlTest | 39 ++++++++++++++----- .../calcite/tests/window/simpleSum.sqlTest | 30 +++++++------- 2 files changed, 46 insertions(+), 23 deletions(-) diff --git a/sql/src/test/resources/calcite/tests/window/orderByDescNulls.sqlTest b/sql/src/test/resources/calcite/tests/window/orderByDescNulls.sqlTest index 8b7496149238..320b448c7488 100644 --- a/sql/src/test/resources/calcite/tests/window/orderByDescNulls.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/orderByDescNulls.sqlTest @@ -10,15 +10,36 @@ sql: | where page < '0' and channel like '#en%' expectedOperators: - - {type: "naiveSort", columns: [{column: "d0", direction: "ASC"}, {column: "d1", direction: "DESC"}]} - - { type: "naivePartition", partitionColumns: [ "d0" ] } + - type: "naiveSort" + columns: + - column: "cityName" + direction: "DESC" + - column: "__time" + direction: "ASC" + - type: "naivePartition" + partitionColumns: [ ] - type: "window" processor: - type: "framedAgg" - frame: { peerType: "ROWS", lowUnbounded: false, lowOffset: 3, uppUnbounded: false, uppOffset: 2 } - aggregations: - - { type: "longSum", name: "w0", fieldName: "a0" } - - { type: "naiveSort", columns: [ { column: "d1", direction: "ASC" }, { column: "a0", direction: "DESC"} ]} - - { type: "naivePartition", partitionColumns: [ "d1" ] } + type: "rowNumber" + outputColumn: "w0" + - type: "naiveSort" + columns: + - column: "cityName" + direction: "ASC" + - column: "__time" + direction: "ASC" + - type: "naivePartition" + partitionColumns: [ ] - type: "window" - processor: { type: "rowNumber", outputColumn: "w1"} + processor: + type: "rowNumber" + outputColumn: "w1" +expectedResults: + - [null,1442019358364,3,1] + - [null,1442021099146,4,2] + - [null,1442033539153,5,3] + - [null,1442095704125,6,4] + - [null,1442096110867,7,5] + - [null,1442100368226,8,6] + - ["Crescent City",1442035449448,2,7] + - ["Vinnytsya",1442100940306,1,8] diff --git a/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest b/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest index 8b7496149238..d4affc6ec563 100644 --- a/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/simpleSum.sqlTest @@ -1,24 +1,26 @@ type: "operatorValidation" sql: | - SELECT - cityName, - __time, - ROW_NUMBER() OVER (ORDER BY cityName desc nulls last, __time ) windowedDelta, - ROW_NUMBER() OVER (ORDER BY cityName nulls first, __time ) windowedDelta - FROM wikipedia - where page < '0' and channel like '#en%' + SELECT + FLOOR(__time TO DAY) t, + SUM(cnt) c, + SUM(SUM(cnt)) OVER (ORDER BY FLOOR(__time TO DAY)) cc + FROM foo + GROUP BY FLOOR(__time TO DAY) expectedOperators: - - {type: "naiveSort", columns: [{column: "d0", direction: "ASC"}, {column: "d1", direction: "DESC"}]} - - { type: "naivePartition", partitionColumns: [ "d0" ] } + - { type: "naivePartition", partitionColumns: [ ] } - type: "window" processor: type: "framedAgg" - frame: { peerType: "ROWS", lowUnbounded: false, lowOffset: 3, uppUnbounded: false, uppOffset: 2 } + frame: { peerType: "ROWS", lowUnbounded: true, lowOffset: 0, uppUnbounded: false, uppOffset: 0 } aggregations: - { type: "longSum", name: "w0", fieldName: "a0" } - - { type: "naiveSort", columns: [ { column: "d1", direction: "ASC" }, { column: "a0", direction: "DESC"} ]} - - { type: "naivePartition", partitionColumns: [ "d1" ] } - - type: "window" - processor: { type: "rowNumber", outputColumn: "w1"} + +expectedResults: + - [ 946684800000, 1, 1 ] + - [ 946771200000, 1, 2 ] + - [ 946857600000, 1, 3 ] + - [ 978307200000, 1, 4 ] + - [ 978393600000, 1, 5 ] + - [ 978480000000, 1, 6 ] From d37093e44a6c89056701197a18a97a6964e8a346 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 12:18:06 +0000 Subject: [PATCH 086/100] better stuff --- .../calcite/planner/DescOperatorConversion.java | 1 - .../sql/calcite/planner/DruidSqlValidator.java | 17 +++++++---------- .../druid/sql/calcite/CalciteQueryTest.java | 13 +++++++++++++ 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DescOperatorConversion.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DescOperatorConversion.java index e7195866c7b0..c6582552cc3d 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DescOperatorConversion.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DescOperatorConversion.java @@ -34,7 +34,6 @@ public class DescOperatorConversion implements SqlOperatorConversion public DescOperatorConversion(SqlPostfixOperator desc) { this.desc = desc; - } @Override diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java index ab3d1ba2e6b0..d7665604ecce 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java @@ -27,7 +27,7 @@ import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.SqlOperatorTable; import org.apache.calcite.sql.validate.SqlValidatorScope; -import org.apache.calcite.util.Static; +import org.apache.druid.error.InvalidSqlInput; /** * Druid extended SQL validator. (At present, it doesn't actually @@ -48,20 +48,17 @@ protected DruidSqlValidator( @Override public void validateCall(SqlCall call, SqlValidatorScope scope) { - if(call.getKind() == SqlKind.NULLS_FIRST) { + if (call.getKind() == SqlKind.NULLS_FIRST) { SqlNode op0 = call.getOperandList().get(0); - if(op0.getKind() == SqlKind.DESCENDING) { - throw newValidationError(call, - Static.RESOURCE.functionMatchRecognizeOnly("JADAJADA!")); + if (op0.getKind() == SqlKind.DESCENDING) { + throw InvalidSqlInput.exception("DESCENDING ordering with NULLS FIRST is not supported!"); } } - if(call.getKind() == SqlKind.NULLS_LAST) { + if (call.getKind() == SqlKind.NULLS_LAST) { SqlNode op0 = call.getOperandList().get(0); - if(op0.getKind() != SqlKind.DESCENDING) { - throw newValidationError(call, - Static.RESOURCE.functionMatchRecognizeOnly("JADAJADA2!")); + if (op0.getKind() != SqlKind.DESCENDING) { + throw InvalidSqlInput.exception("ASCENDING ordering with NULLS LAST is not supported!"); } - } super.validateCall(call, scope); diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java index 08fdbc3bfaa0..26cbd5d47c22 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java @@ -137,6 +137,9 @@ import java.util.Map; import java.util.stream.Collectors; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertThrows; + public class CalciteQueryTest extends BaseCalciteQueryTest { @Test @@ -14247,4 +14250,14 @@ public void testLatestByOnStringColumnWithoutMaxBytesSpecified() new Object[] {"abc", defaultString, "def", defaultString, "def", defaultString} )); } + + @Test + public void testUnSupportedNullsFirst() + { + DruidException e = assertThrows(DruidException.class, () -> testBuilder() + .queryContext(ImmutableMap.of(PlannerContext.CTX_ENABLE_WINDOW_FNS, true)) + .sql("SELECT dim1,ROW_NUMBER() OVER (ORDER BY dim1 DESC NULLS FIRST) from druid.foo") + .run()); + assertTrue(e.getMessage().contains("JADA")); + } } From c0d3095f1de49800a7d2db56771ee48138f0cf81 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 12:30:54 +0000 Subject: [PATCH 087/100] move around --- .../planner/DescOperatorConversion.java | 1 - .../planner/DruidSqlPostfixOperator.java | 74 +++++++++++++++++++ 2 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlPostfixOperator.java diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DescOperatorConversion.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DescOperatorConversion.java index c6582552cc3d..17a518fb513a 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DescOperatorConversion.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DescOperatorConversion.java @@ -28,7 +28,6 @@ public class DescOperatorConversion implements SqlOperatorConversion { - private SqlPostfixOperator desc; public DescOperatorConversion(SqlPostfixOperator desc) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlPostfixOperator.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlPostfixOperator.java new file mode 100644 index 000000000000..b9964f8f572c --- /dev/null +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlPostfixOperator.java @@ -0,0 +1,74 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.druid.sql.calcite.planner; + +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlPostfixOperator; +import org.apache.calcite.sql.fun.SqlStdOperatorTable; +import org.apache.calcite.sql.validate.SqlValidator; +import org.apache.calcite.sql.validate.SqlValidatorScope; +import org.apache.druid.error.InvalidSqlInput; + +public abstract class DruidSqlPostfixOperator extends SqlPostfixOperator { + + static final SqlPostfixOperator DRUID_NULLS_FIRST = new DruidSqlPostfixOperator(SqlStdOperatorTable.NULLS_FIRST) { + @Override + void validateCall(SqlCall call) + { + if (call.getOperandList().get(0).getKind() == SqlKind.DESCENDING) { + throw InvalidSqlInput.exception("DESCENDING ordering with NULLS FIRST is not supported!"); + } + } + }; + + static final SqlPostfixOperator DRUID_NULLS_LAST = new DruidSqlPostfixOperator(SqlStdOperatorTable.NULLS_FIRST) { + @Override + void validateCall(SqlCall call) + { + if (call.getOperandList().get(0).getKind() != SqlKind.DESCENDING) { + throw InvalidSqlInput.exception("ASCENDING ordering with NULLS LAST is not supported!"); + } + } + }; + + public DruidSqlPostfixOperator(SqlPostfixOperator core) + { + super(core.getName(), + core.getKind(), + core.getLeftPrec(), + core.getReturnTypeInference(), + core.getOperandTypeInference(), + core.getOperandTypeChecker() + ); + + assert(core.getLeftPrec() == getLeftPrec()); + assert(core.getRightPrec() == getRightPrec()); + } + + abstract void validateCall(SqlCall call); + + @Override + public final void validateCall(SqlCall call, SqlValidator validator, SqlValidatorScope scope, SqlValidatorScope operandScope) + { + validateCall(call); + super.validateCall(call, validator, scope, operandScope); + } +} \ No newline at end of file From cff91098969f952dc8aecc316fd45412a55832d2 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 12:38:58 +0000 Subject: [PATCH 088/100] add tests; move check to sqloperator --- .../planner/DescOperatorConversion.java | 50 ------------------- .../calcite/planner/DruidOperatorTable.java | 15 ------ .../planner/DruidSqlPostfixOperator.java | 4 +- .../calcite/planner/DruidSqlValidator.java | 24 --------- .../convertlet/DruidConvertletTable.java | 4 ++ .../druid/sql/calcite/CalciteQueryTest.java | 16 ++++-- 6 files changed, 19 insertions(+), 94 deletions(-) delete mode 100644 sql/src/main/java/org/apache/druid/sql/calcite/planner/DescOperatorConversion.java diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DescOperatorConversion.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DescOperatorConversion.java deleted file mode 100644 index 17a518fb513a..000000000000 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DescOperatorConversion.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.druid.sql.calcite.planner; - -import org.apache.calcite.rex.RexNode; -import org.apache.calcite.sql.SqlOperator; -import org.apache.calcite.sql.SqlPostfixOperator; -import org.apache.druid.segment.column.RowSignature; -import org.apache.druid.sql.calcite.expression.DruidExpression; -import org.apache.druid.sql.calcite.expression.SqlOperatorConversion; - -public class DescOperatorConversion implements SqlOperatorConversion -{ - private SqlPostfixOperator desc; - - public DescOperatorConversion(SqlPostfixOperator desc) - { - this.desc = desc; - } - - @Override - public SqlOperator calciteOperator() - { - return desc; - } - - @Override - public DruidExpression toDruidExpression(PlannerContext plannerContext, RowSignature rowSignature, RexNode rexNode) - { - throw new RuntimeException("Never expected to get a call to this method"); - } - -} diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java index 695690d04e92..6c432c800d89 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidOperatorTable.java @@ -350,9 +350,6 @@ public class DruidOperatorTable implements SqlOperatorTable ImmutableList.builder() .add(new DirectOperatorConversion(SqlStdOperatorTable.ABS, "abs")) .add(new CaseOperatorConversion()) - .add(new DescOperatorConversion(SqlStdOperatorTable.DESC)) - .add(new DescOperatorConversion(SqlStdOperatorTable.NULLS_FIRST)) - .add(new DescOperatorConversion(SqlStdOperatorTable.NULLS_LAST)) .add(new DirectOperatorConversion(SqlStdOperatorTable.CHAR_LENGTH, "strlen")) .add(CHARACTER_LENGTH_CONVERSION) .add(new AliasedOperatorConversion(CHARACTER_LENGTH_CONVERSION, "LENGTH")) @@ -492,18 +489,6 @@ public void lookupOperatorOverloads( if (opName == null || opName.names.size() != 1) { return; } - if(syntax == SqlSyntax.POSTFIX) { - int asd = 1; -// if (opName.names.contains("DESC")) { -// operatorList.add(SqlStdOperatorTable.DESC); -// } -// if (opName.names.contains("NULLS FIRST")) { -// operatorList.add(SqlStdOperatorTable.NULLS_FIRST); -// } -// if (opName.names.contains("NULLS_LAST")) { -// operatorList.add(SqlStdOperatorTable.NULLS_LAST); -// } - } final OperatorKey operatorKey = OperatorKey.of(opName.getSimple(), syntax); diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlPostfixOperator.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlPostfixOperator.java index b9964f8f572c..e05c7a68c5d3 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlPostfixOperator.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlPostfixOperator.java @@ -29,7 +29,7 @@ public abstract class DruidSqlPostfixOperator extends SqlPostfixOperator { - static final SqlPostfixOperator DRUID_NULLS_FIRST = new DruidSqlPostfixOperator(SqlStdOperatorTable.NULLS_FIRST) { + public static final SqlPostfixOperator DRUID_NULLS_FIRST = new DruidSqlPostfixOperator(SqlStdOperatorTable.NULLS_FIRST) { @Override void validateCall(SqlCall call) { @@ -39,7 +39,7 @@ void validateCall(SqlCall call) } }; - static final SqlPostfixOperator DRUID_NULLS_LAST = new DruidSqlPostfixOperator(SqlStdOperatorTable.NULLS_FIRST) { + public static final SqlPostfixOperator DRUID_NULLS_LAST = new DruidSqlPostfixOperator(SqlStdOperatorTable.NULLS_LAST) { @Override void validateCall(SqlCall call) { diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java index d7665604ecce..5a901c72296e 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java @@ -22,12 +22,7 @@ import org.apache.calcite.adapter.java.JavaTypeFactory; import org.apache.calcite.prepare.BaseDruidSqlValidator; import org.apache.calcite.prepare.CalciteCatalogReader; -import org.apache.calcite.sql.SqlCall; -import org.apache.calcite.sql.SqlKind; -import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.SqlOperatorTable; -import org.apache.calcite.sql.validate.SqlValidatorScope; -import org.apache.druid.error.InvalidSqlInput; /** * Druid extended SQL validator. (At present, it doesn't actually @@ -44,23 +39,4 @@ protected DruidSqlValidator( { super(opTab, catalogReader, typeFactory, validatorConfig); } - - @Override - public void validateCall(SqlCall call, SqlValidatorScope scope) - { - if (call.getKind() == SqlKind.NULLS_FIRST) { - SqlNode op0 = call.getOperandList().get(0); - if (op0.getKind() == SqlKind.DESCENDING) { - throw InvalidSqlInput.exception("DESCENDING ordering with NULLS FIRST is not supported!"); - } - } - if (call.getKind() == SqlKind.NULLS_LAST) { - SqlNode op0 = call.getOperandList().get(0); - if (op0.getKind() != SqlKind.DESCENDING) { - throw InvalidSqlInput.exception("ASCENDING ordering with NULLS LAST is not supported!"); - } - } - - super.validateCall(call, scope); - } } diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/convertlet/DruidConvertletTable.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/convertlet/DruidConvertletTable.java index 59ad4ef24f05..278c0aab6412 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/convertlet/DruidConvertletTable.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/convertlet/DruidConvertletTable.java @@ -29,6 +29,7 @@ import org.apache.calcite.sql2rel.SqlRexConvertletTable; import org.apache.calcite.sql2rel.StandardConvertletTable; import org.apache.druid.sql.calcite.expression.builtin.NestedDataOperatorConversions; +import org.apache.druid.sql.calcite.planner.DruidSqlPostfixOperator; import org.apache.druid.sql.calcite.planner.PlannerContext; import java.util.ArrayList; @@ -67,6 +68,9 @@ public class DruidConvertletTable implements SqlRexConvertletTable .add(SqlStdOperatorTable.NULLIF) .add(SqlStdOperatorTable.COALESCE) .add(SqlLibraryOperators.NVL) + .add(SqlStdOperatorTable.DESC) + .add(DruidSqlPostfixOperator.DRUID_NULLS_FIRST) + .add(DruidSqlPostfixOperator.DRUID_NULLS_LAST) .build(); private final Map table; diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java index 26cbd5d47c22..cfce3ec42e56 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java @@ -137,7 +137,7 @@ import java.util.Map; import java.util.stream.Collectors; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; public class CalciteQueryTest extends BaseCalciteQueryTest @@ -14258,6 +14258,16 @@ public void testUnSupportedNullsFirst() .queryContext(ImmutableMap.of(PlannerContext.CTX_ENABLE_WINDOW_FNS, true)) .sql("SELECT dim1,ROW_NUMBER() OVER (ORDER BY dim1 DESC NULLS FIRST) from druid.foo") .run()); - assertTrue(e.getMessage().contains("JADA")); + assertEquals("DESCENDING ordering with NULLS FIRST is not supported!", e.getMessage()); } -} + + @Test + public void testUnSupportedNullsLast() + { + DruidException e = assertThrows(DruidException.class, () -> testBuilder() + .queryContext(ImmutableMap.of(PlannerContext.CTX_ENABLE_WINDOW_FNS, true)) + .sql("SELECT dim1,ROW_NUMBER() OVER (ORDER BY dim1 NULLS LAST) from druid.foo") + .run()); + assertEquals("ASCENDING ordering with NULLS LAST is not supported!", e.getMessage()); + } +} \ No newline at end of file From fca23c2a5566b713b4a18f06fd50150ae68d0833 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 12:45:46 +0000 Subject: [PATCH 089/100] accept passing testcases --- .../sql/calcite/DrillWindowQueryTest.java | 36 ------------------- 1 file changed, 36 deletions(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java index 5fd97d00fcae..0f0dbf14ead7 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java @@ -4440,7 +4440,6 @@ public void test_lag_func_lag_Fn_109() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_69") @Test public void test_lag_func_lag_Fn_69() @@ -4462,7 +4461,6 @@ public void test_lead_func_lead_Fn_104() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_69") @Test public void test_lead_func_lead_Fn_69() @@ -5525,7 +5523,6 @@ public void test_lag_func_lag_Fn_18() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_19") @Test public void test_lag_func_lag_Fn_19() @@ -5533,7 +5530,6 @@ public void test_lag_func_lag_Fn_19() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_20") @Test public void test_lag_func_lag_Fn_20() @@ -5541,7 +5537,6 @@ public void test_lag_func_lag_Fn_20() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_21") @Test public void test_lag_func_lag_Fn_21() @@ -5549,7 +5544,6 @@ public void test_lag_func_lag_Fn_21() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_22") @Test public void test_lag_func_lag_Fn_22() @@ -5565,7 +5559,6 @@ public void test_lag_func_lag_Fn_23() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_24") @Test public void test_lag_func_lag_Fn_24() @@ -5573,7 +5566,6 @@ public void test_lag_func_lag_Fn_24() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_25") @Test public void test_lag_func_lag_Fn_25() @@ -5581,7 +5573,6 @@ public void test_lag_func_lag_Fn_25() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_26") @Test public void test_lag_func_lag_Fn_26() @@ -5589,7 +5580,6 @@ public void test_lag_func_lag_Fn_26() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_54") @Test public void test_lag_func_lag_Fn_54() @@ -5597,7 +5587,6 @@ public void test_lag_func_lag_Fn_54() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_64") @Test public void test_lag_func_lag_Fn_64() @@ -5605,7 +5594,6 @@ public void test_lag_func_lag_Fn_64() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_65") @Test public void test_lag_func_lag_Fn_65() @@ -5613,7 +5601,6 @@ public void test_lag_func_lag_Fn_65() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_66") @Test public void test_lag_func_lag_Fn_66() @@ -5621,7 +5608,6 @@ public void test_lag_func_lag_Fn_66() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_67") @Test public void test_lag_func_lag_Fn_67() @@ -5629,7 +5615,6 @@ public void test_lag_func_lag_Fn_67() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_68") @Test public void test_lag_func_lag_Fn_68() @@ -5637,7 +5622,6 @@ public void test_lag_func_lag_Fn_68() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_71") @Test public void test_lag_func_lag_Fn_71() @@ -5645,7 +5629,6 @@ public void test_lag_func_lag_Fn_71() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lag_func/lag_Fn_72") @Test public void test_lag_func_lag_Fn_72() @@ -5653,7 +5636,6 @@ public void test_lag_func_lag_Fn_72() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_10") @Test public void test_lead_func_lead_Fn_10() @@ -5661,7 +5643,6 @@ public void test_lead_func_lead_Fn_10() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_11") @Test public void test_lead_func_lead_Fn_11() @@ -5669,7 +5650,6 @@ public void test_lead_func_lead_Fn_11() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_12") @Test public void test_lead_func_lead_Fn_12() @@ -5677,7 +5657,6 @@ public void test_lead_func_lead_Fn_12() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_13") @Test public void test_lead_func_lead_Fn_13() @@ -5685,7 +5664,6 @@ public void test_lead_func_lead_Fn_13() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_14") @Test public void test_lead_func_lead_Fn_14() @@ -5693,7 +5671,6 @@ public void test_lead_func_lead_Fn_14() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_15") @Test public void test_lead_func_lead_Fn_15() @@ -5701,7 +5678,6 @@ public void test_lead_func_lead_Fn_15() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_16") @Test public void test_lead_func_lead_Fn_16() @@ -5709,7 +5685,6 @@ public void test_lead_func_lead_Fn_16() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_17") @Test public void test_lead_func_lead_Fn_17() @@ -5717,7 +5692,6 @@ public void test_lead_func_lead_Fn_17() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_18") @Test public void test_lead_func_lead_Fn_18() @@ -5725,7 +5699,6 @@ public void test_lead_func_lead_Fn_18() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_19") @Test public void test_lead_func_lead_Fn_19() @@ -5741,7 +5714,6 @@ public void test_lead_func_lead_Fn_20() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_21") @Test public void test_lead_func_lead_Fn_21() @@ -5749,7 +5721,6 @@ public void test_lead_func_lead_Fn_21() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_22") @Test public void test_lead_func_lead_Fn_22() @@ -5781,7 +5752,6 @@ public void test_lead_func_lead_Fn_25() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_64") @Test public void test_lead_func_lead_Fn_64() @@ -5789,7 +5759,6 @@ public void test_lead_func_lead_Fn_64() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_65") @Test public void test_lead_func_lead_Fn_65() @@ -5797,7 +5766,6 @@ public void test_lead_func_lead_Fn_65() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_66") @Test public void test_lead_func_lead_Fn_66() @@ -5805,7 +5773,6 @@ public void test_lead_func_lead_Fn_66() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_67") @Test public void test_lead_func_lead_Fn_67() @@ -5813,7 +5780,6 @@ public void test_lead_func_lead_Fn_67() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_68") @Test public void test_lead_func_lead_Fn_68() @@ -5821,7 +5787,6 @@ public void test_lead_func_lead_Fn_68() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_71") @Test public void test_lead_func_lead_Fn_71() @@ -5829,7 +5794,6 @@ public void test_lead_func_lead_Fn_71() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("lead_func/lead_Fn_72") @Test public void test_lead_func_lead_Fn_72() From 71d25d8f9a42c3d0390dfe8775ab63f844f9caf2 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 12:55:42 +0000 Subject: [PATCH 090/100] move back to use validator --- .../planner/DruidSqlPostfixOperator.java | 74 ------------------- .../calcite/planner/DruidSqlValidator.java | 24 ++++++ 2 files changed, 24 insertions(+), 74 deletions(-) delete mode 100644 sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlPostfixOperator.java diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlPostfixOperator.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlPostfixOperator.java deleted file mode 100644 index e05c7a68c5d3..000000000000 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlPostfixOperator.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.druid.sql.calcite.planner; - -import org.apache.calcite.sql.SqlCall; -import org.apache.calcite.sql.SqlKind; -import org.apache.calcite.sql.SqlPostfixOperator; -import org.apache.calcite.sql.fun.SqlStdOperatorTable; -import org.apache.calcite.sql.validate.SqlValidator; -import org.apache.calcite.sql.validate.SqlValidatorScope; -import org.apache.druid.error.InvalidSqlInput; - -public abstract class DruidSqlPostfixOperator extends SqlPostfixOperator { - - public static final SqlPostfixOperator DRUID_NULLS_FIRST = new DruidSqlPostfixOperator(SqlStdOperatorTable.NULLS_FIRST) { - @Override - void validateCall(SqlCall call) - { - if (call.getOperandList().get(0).getKind() == SqlKind.DESCENDING) { - throw InvalidSqlInput.exception("DESCENDING ordering with NULLS FIRST is not supported!"); - } - } - }; - - public static final SqlPostfixOperator DRUID_NULLS_LAST = new DruidSqlPostfixOperator(SqlStdOperatorTable.NULLS_LAST) { - @Override - void validateCall(SqlCall call) - { - if (call.getOperandList().get(0).getKind() != SqlKind.DESCENDING) { - throw InvalidSqlInput.exception("ASCENDING ordering with NULLS LAST is not supported!"); - } - } - }; - - public DruidSqlPostfixOperator(SqlPostfixOperator core) - { - super(core.getName(), - core.getKind(), - core.getLeftPrec(), - core.getReturnTypeInference(), - core.getOperandTypeInference(), - core.getOperandTypeChecker() - ); - - assert(core.getLeftPrec() == getLeftPrec()); - assert(core.getRightPrec() == getRightPrec()); - } - - abstract void validateCall(SqlCall call); - - @Override - public final void validateCall(SqlCall call, SqlValidator validator, SqlValidatorScope scope, SqlValidatorScope operandScope) - { - validateCall(call); - super.validateCall(call, validator, scope, operandScope); - } -} \ No newline at end of file diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java index 5a901c72296e..d7665604ecce 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/DruidSqlValidator.java @@ -22,7 +22,12 @@ import org.apache.calcite.adapter.java.JavaTypeFactory; import org.apache.calcite.prepare.BaseDruidSqlValidator; import org.apache.calcite.prepare.CalciteCatalogReader; +import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.SqlOperatorTable; +import org.apache.calcite.sql.validate.SqlValidatorScope; +import org.apache.druid.error.InvalidSqlInput; /** * Druid extended SQL validator. (At present, it doesn't actually @@ -39,4 +44,23 @@ protected DruidSqlValidator( { super(opTab, catalogReader, typeFactory, validatorConfig); } + + @Override + public void validateCall(SqlCall call, SqlValidatorScope scope) + { + if (call.getKind() == SqlKind.NULLS_FIRST) { + SqlNode op0 = call.getOperandList().get(0); + if (op0.getKind() == SqlKind.DESCENDING) { + throw InvalidSqlInput.exception("DESCENDING ordering with NULLS FIRST is not supported!"); + } + } + if (call.getKind() == SqlKind.NULLS_LAST) { + SqlNode op0 = call.getOperandList().get(0); + if (op0.getKind() != SqlKind.DESCENDING) { + throw InvalidSqlInput.exception("ASCENDING ordering with NULLS LAST is not supported!"); + } + } + + super.validateCall(call, scope); + } } From 0936b3ad913e25e718a0c89714e08f03954130e1 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 13:16:35 +0000 Subject: [PATCH 091/100] accept passing cases/etc --- .../convertlet/DruidConvertletTable.java | 5 +- .../sql/calcite/DrillWindowQueryTest.java | 56 ++++++++++++------- .../druid/sql/calcite/NotYetSupported.java | 3 +- 3 files changed, 39 insertions(+), 25 deletions(-) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/planner/convertlet/DruidConvertletTable.java b/sql/src/main/java/org/apache/druid/sql/calcite/planner/convertlet/DruidConvertletTable.java index 278c0aab6412..eadd2e48268d 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/planner/convertlet/DruidConvertletTable.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/planner/convertlet/DruidConvertletTable.java @@ -29,7 +29,6 @@ import org.apache.calcite.sql2rel.SqlRexConvertletTable; import org.apache.calcite.sql2rel.StandardConvertletTable; import org.apache.druid.sql.calcite.expression.builtin.NestedDataOperatorConversions; -import org.apache.druid.sql.calcite.planner.DruidSqlPostfixOperator; import org.apache.druid.sql.calcite.planner.PlannerContext; import java.util.ArrayList; @@ -69,8 +68,8 @@ public class DruidConvertletTable implements SqlRexConvertletTable .add(SqlStdOperatorTable.COALESCE) .add(SqlLibraryOperators.NVL) .add(SqlStdOperatorTable.DESC) - .add(DruidSqlPostfixOperator.DRUID_NULLS_FIRST) - .add(DruidSqlPostfixOperator.DRUID_NULLS_LAST) + .add(SqlStdOperatorTable.NULLS_FIRST) + .add(SqlStdOperatorTable.NULLS_LAST) .build(); private final Map table; diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java index 0f0dbf14ead7..fa3f64462321 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/DrillWindowQueryTest.java @@ -4988,7 +4988,7 @@ public void test_aggregates_winFnQry_7() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_COUNT_MISMATCH) @DrillTest("aggregates/testW_Nulls_10") @Test public void test_aggregates_testW_Nulls_10() @@ -4996,7 +4996,7 @@ public void test_aggregates_testW_Nulls_10() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/testW_Nulls_11") @Test public void test_aggregates_testW_Nulls_11() @@ -5148,7 +5148,7 @@ public void test_aggregates_testW_Nulls_29() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/testW_Nulls_2") @Test public void test_aggregates_testW_Nulls_2() @@ -5236,7 +5236,7 @@ public void test_aggregates_testW_Nulls_39() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_COUNT_MISMATCH) @DrillTest("aggregates/testW_Nulls_3") @Test public void test_aggregates_testW_Nulls_3() @@ -5244,7 +5244,7 @@ public void test_aggregates_testW_Nulls_3() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/testW_Nulls_4") @Test public void test_aggregates_testW_Nulls_4() @@ -5252,7 +5252,7 @@ public void test_aggregates_testW_Nulls_4() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.COLUMN_NOT_FOUND) @DrillTest("aggregates/testW_Nulls_5") @Test public void test_aggregates_testW_Nulls_5() @@ -5260,7 +5260,7 @@ public void test_aggregates_testW_Nulls_5() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.COLUMN_NOT_FOUND) @DrillTest("aggregates/testW_Nulls_6") @Test public void test_aggregates_testW_Nulls_6() @@ -5268,7 +5268,7 @@ public void test_aggregates_testW_Nulls_6() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/testW_Nulls_7") @Test public void test_aggregates_testW_Nulls_7() @@ -5276,7 +5276,6 @@ public void test_aggregates_testW_Nulls_7() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) @DrillTest("aggregates/testW_Nulls_8") @Test public void test_aggregates_testW_Nulls_8() @@ -5284,7 +5283,7 @@ public void test_aggregates_testW_Nulls_8() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/testW_Nulls_9") @Test public void test_aggregates_testW_Nulls_9() @@ -5292,7 +5291,7 @@ public void test_aggregates_testW_Nulls_9() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/winFnQry_61") @Test public void test_aggregates_winFnQry_61() @@ -5300,7 +5299,7 @@ public void test_aggregates_winFnQry_61() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/winFnQry_62") @Test public void test_aggregates_winFnQry_62() @@ -5308,7 +5307,7 @@ public void test_aggregates_winFnQry_62() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/winFnQry_64") @Test public void test_aggregates_winFnQry_64() @@ -5316,7 +5315,7 @@ public void test_aggregates_winFnQry_64() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/winFnQry_65") @Test public void test_aggregates_winFnQry_65() @@ -5404,7 +5403,7 @@ public void test_aggregates_winFnQry_75() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/winFnQry_76") @Test public void test_aggregates_winFnQry_76() @@ -5412,7 +5411,7 @@ public void test_aggregates_winFnQry_76() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/winFnQry_77") @Test public void test_aggregates_winFnQry_77() @@ -5420,7 +5419,7 @@ public void test_aggregates_winFnQry_77() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/winFnQry_78") @Test public void test_aggregates_winFnQry_78() @@ -5428,7 +5427,7 @@ public void test_aggregates_winFnQry_78() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_COUNT_MISMATCH) @DrillTest("aggregates/winFnQry_79") @Test public void test_aggregates_winFnQry_79() @@ -5436,7 +5435,7 @@ public void test_aggregates_winFnQry_79() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_COUNT_MISMATCH) @DrillTest("aggregates/winFnQry_80") @Test public void test_aggregates_winFnQry_80() @@ -5444,7 +5443,7 @@ public void test_aggregates_winFnQry_80() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_COUNT_MISMATCH) @DrillTest("aggregates/winFnQry_81") @Test public void test_aggregates_winFnQry_81() @@ -5452,7 +5451,7 @@ public void test_aggregates_winFnQry_81() windowQueryTest(); } - @NotYetSupported(Modes.NULLS_FIRST_LAST) + @NotYetSupported(Modes.RESULT_MISMATCH) @DrillTest("aggregates/winFnQry_82") @Test public void test_aggregates_winFnQry_82() @@ -5523,6 +5522,7 @@ public void test_lag_func_lag_Fn_18() windowQueryTest(); } + @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING) @DrillTest("lag_func/lag_Fn_19") @Test public void test_lag_func_lag_Fn_19() @@ -5530,6 +5530,7 @@ public void test_lag_func_lag_Fn_19() windowQueryTest(); } + @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING) @DrillTest("lag_func/lag_Fn_20") @Test public void test_lag_func_lag_Fn_20() @@ -5537,6 +5538,7 @@ public void test_lag_func_lag_Fn_20() windowQueryTest(); } + @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING) @DrillTest("lag_func/lag_Fn_21") @Test public void test_lag_func_lag_Fn_21() @@ -5544,6 +5546,7 @@ public void test_lag_func_lag_Fn_21() windowQueryTest(); } + @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING) @DrillTest("lag_func/lag_Fn_22") @Test public void test_lag_func_lag_Fn_22() @@ -5559,6 +5562,7 @@ public void test_lag_func_lag_Fn_23() windowQueryTest(); } + @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING) @DrillTest("lag_func/lag_Fn_24") @Test public void test_lag_func_lag_Fn_24() @@ -5566,6 +5570,7 @@ public void test_lag_func_lag_Fn_24() windowQueryTest(); } + @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING) @DrillTest("lag_func/lag_Fn_25") @Test public void test_lag_func_lag_Fn_25() @@ -5573,6 +5578,7 @@ public void test_lag_func_lag_Fn_25() windowQueryTest(); } + @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING) @DrillTest("lag_func/lag_Fn_26") @Test public void test_lag_func_lag_Fn_26() @@ -5580,6 +5586,7 @@ public void test_lag_func_lag_Fn_26() windowQueryTest(); } + @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING) @DrillTest("lag_func/lag_Fn_54") @Test public void test_lag_func_lag_Fn_54() @@ -5615,6 +5622,7 @@ public void test_lag_func_lag_Fn_67() windowQueryTest(); } + @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING) @DrillTest("lag_func/lag_Fn_68") @Test public void test_lag_func_lag_Fn_68() @@ -5629,6 +5637,7 @@ public void test_lag_func_lag_Fn_71() windowQueryTest(); } + @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING) @DrillTest("lag_func/lag_Fn_72") @Test public void test_lag_func_lag_Fn_72() @@ -5699,6 +5708,7 @@ public void test_lead_func_lead_Fn_18() windowQueryTest(); } + @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING) @DrillTest("lead_func/lead_Fn_19") @Test public void test_lead_func_lead_Fn_19() @@ -5714,6 +5724,7 @@ public void test_lead_func_lead_Fn_20() windowQueryTest(); } + @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING) @DrillTest("lead_func/lead_Fn_21") @Test public void test_lead_func_lead_Fn_21() @@ -5721,6 +5732,7 @@ public void test_lead_func_lead_Fn_21() windowQueryTest(); } + @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING) @DrillTest("lead_func/lead_Fn_22") @Test public void test_lead_func_lead_Fn_22() @@ -5780,6 +5792,7 @@ public void test_lead_func_lead_Fn_67() windowQueryTest(); } + @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING) @DrillTest("lead_func/lead_Fn_68") @Test public void test_lead_func_lead_Fn_68() @@ -5794,6 +5807,7 @@ public void test_lead_func_lead_Fn_71() windowQueryTest(); } + @NotYetSupported(Modes.UNSUPPORTED_NULL_ORDERING) @DrillTest("lead_func/lead_Fn_72") @Test public void test_lead_func_lead_Fn_72() diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/NotYetSupported.java b/sql/src/test/java/org/apache/druid/sql/calcite/NotYetSupported.java index a8634ba5db94..86e5c41d6de8 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/NotYetSupported.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/NotYetSupported.java @@ -88,7 +88,8 @@ enum Modes INCORRECT_SYNTAX(DruidException.class, "Incorrect syntax near the keyword"), // at least c7 is represented oddly in the parquet file T_ALLTYPES_ISSUES(AssertionError.class, "(t_alltype|allTypsUniq|fewRowsAllData).parquet.*Verifier.verify"), - RESULT_MISMATCH(AssertionError.class, "assertResultsEquals"); + RESULT_MISMATCH(AssertionError.class, "assertResultsEquals"), + UNSUPPORTED_NULL_ORDERING(DruidException.class, "(A|DE)SCENDING ordering with NULLS (LAST|FIRST)"); public Class throwableClass; public String regex; From 15bf039914ef3398913401ce0a363f34f224010e Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 13:48:56 +0000 Subject: [PATCH 092/100] add Windowing level fix --- .../org/apache/druid/sql/calcite/rel/Windowing.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java index 9f8d3d091b5d..4651b591951f 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java @@ -19,7 +19,9 @@ package org.apache.druid.sql.calcite.rel; +import com.google.api.client.util.Sets; import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import org.apache.calcite.rel.RelCollation; @@ -42,6 +44,7 @@ import org.apache.druid.query.operator.NaivePartitioningOperatorFactory; import org.apache.druid.query.operator.NaiveSortOperatorFactory; import org.apache.druid.query.operator.OperatorFactory; +import org.apache.druid.query.operator.ScanOperatorFactory; import org.apache.druid.query.operator.window.ComposingProcessor; import org.apache.druid.query.operator.window.Processor; import org.apache.druid.query.operator.window.WindowFrame; @@ -55,6 +58,7 @@ import org.apache.druid.query.operator.window.value.WindowFirstProcessor; import org.apache.druid.query.operator.window.value.WindowLastProcessor; import org.apache.druid.query.operator.window.value.WindowOffsetProcessor; +import org.apache.druid.segment.VirtualColumns; import org.apache.druid.segment.column.RowSignature; import org.apache.druid.sql.calcite.aggregation.Aggregation; import org.apache.druid.sql.calcite.expression.DruidExpression; @@ -231,6 +235,15 @@ public static Windowing fromCalciteStuff( throw new ISE("No processors from Window[%s], why was this code called?", window); } + if (!virtualColumnRegistry.isEmpty()) { + VirtualColumns virtualColumns = virtualColumnRegistry.build(Sets.newHashSet()); + ImmutableList projectedColumns = ImmutableList. builder() + .addAll(sourceRowSignature.getColumnNames()) + .addAll(virtualColumns.getColumnNames()) + .build(); + ops.add(new ScanOperatorFactory(null, null, null, projectedColumns, virtualColumns, null)); + } + ops.add(new WindowOperatorFactory( processors.size() == 1 ? processors.get(0) : new ComposingProcessor(processors.toArray(new Processor[0])) From 4d839051c250d25f26d49e62d70a587516bf349b Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 13:51:24 +0000 Subject: [PATCH 093/100] purge out virtualColumns param --- .../query/operator/WindowOperatorQuery.java | 18 +++--------------- .../operator/WindowOperatorQueryTest.java | 4 +--- .../druid/sql/calcite/rel/DruidQuery.java | 4 +--- 3 files changed, 5 insertions(+), 21 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java index b824305835e1..fcbe2533f4b3 100644 --- a/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java +++ b/processing/src/main/java/org/apache/druid/query/operator/WindowOperatorQuery.java @@ -22,8 +22,6 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; -import org.apache.druid.error.DruidException; import org.apache.druid.java.util.common.IAE; import org.apache.druid.query.BaseQuery; import org.apache.druid.query.DataSource; @@ -65,12 +63,10 @@ public static WindowOperatorQuery build( QuerySegmentSpec intervals, Map context, RowSignature rowSignature, - List operators, - VirtualColumns virtualColumns + List operators ) { List leafOperators = new ArrayList(); - boolean virtualColumnsHandled = false; if (dataSource instanceof QueryDataSource) { final Query subQuery = ((QueryDataSource) dataSource).getQuery(); @@ -89,17 +85,13 @@ public static WindowOperatorQuery build( : ColumnWithDirection.Direction.ASC)); } - virtualColumnsHandled = true; leafOperators.add( new ScanOperatorFactory( null, scan.getFilter(), (int) scan.getScanRowsLimit(), - ImmutableList.builder() - .addAll(scan.getColumns()) - .addAll(virtualColumns.getColumnNames()) - .build(), - vc_union(scan.getVirtualColumns(), virtualColumns), + scan.getColumns(), + scan.getVirtualColumns(), ordering)); } } else if (dataSource instanceof InlineDataSource) { @@ -108,10 +100,6 @@ public static WindowOperatorQuery build( throw new IAE("WindowOperatorQuery must run on top of a query or inline data source, got [%s]", dataSource); } - if (!virtualColumns.isEmpty() && !virtualColumnsHandled) { - throw DruidException.defensive("Not-yet able to handle virtualColumns without a scanQuery!"); - } - return new WindowOperatorQuery(dataSource, intervals, context, rowSignature, operators, leafOperators); } diff --git a/processing/src/test/java/org/apache/druid/query/operator/WindowOperatorQueryTest.java b/processing/src/test/java/org/apache/druid/query/operator/WindowOperatorQueryTest.java index 9e6355a8c7ef..c1b30aa53e64 100644 --- a/processing/src/test/java/org/apache/druid/query/operator/WindowOperatorQueryTest.java +++ b/processing/src/test/java/org/apache/druid/query/operator/WindowOperatorQueryTest.java @@ -25,7 +25,6 @@ import org.apache.druid.query.QueryContext; import org.apache.druid.query.TableDataSource; import org.apache.druid.query.spec.LegacySegmentSpec; -import org.apache.druid.segment.VirtualColumns; import org.apache.druid.segment.column.RowSignature; import org.junit.Assert; import org.junit.Before; @@ -55,8 +54,7 @@ public void setUp() new LegacySegmentSpec(Intervals.ETERNITY), ImmutableMap.of("sally", "sue"), RowSignature.empty(), - new ArrayList<>(), - (VirtualColumns) null + new ArrayList<>() ); } diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java index c4296d1bb552..63546ef188fa 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java @@ -1444,14 +1444,12 @@ private WindowOperatorQuery toWindowQuery() } // all virtual cols are needed - these columns are only referenced from the aggregates - VirtualColumns vcs = virtualColumnRegistry.build(Collections.emptySet()); return WindowOperatorQuery.build( dataSource, new LegacySegmentSpec(Intervals.ETERNITY), plannerContext.queryContextMap(), windowing.getSignature(), - windowing.getOperators(), - vcs + windowing.getOperators() ); } From a218b3c79fb7689ca39ce61412fd3109d2e8e7b9 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 14:42:20 +0000 Subject: [PATCH 094/100] working --- .../query/operator/window/Processor.java | 2 + .../window/value/WindowProjectProcessor.java | 83 +++++++++++++++++++ .../druid/sql/calcite/rel/Windowing.java | 36 ++++++-- 3 files changed, 114 insertions(+), 7 deletions(-) create mode 100644 processing/src/main/java/org/apache/druid/query/operator/window/value/WindowProjectProcessor.java diff --git a/processing/src/main/java/org/apache/druid/query/operator/window/Processor.java b/processing/src/main/java/org/apache/druid/query/operator/window/Processor.java index fe8d125cbdf3..0c104fcbfe03 100644 --- a/processing/src/main/java/org/apache/druid/query/operator/window/Processor.java +++ b/processing/src/main/java/org/apache/druid/query/operator/window/Processor.java @@ -29,6 +29,7 @@ import org.apache.druid.query.operator.window.value.WindowFirstProcessor; import org.apache.druid.query.operator.window.value.WindowLastProcessor; import org.apache.druid.query.operator.window.value.WindowOffsetProcessor; +import org.apache.druid.query.operator.window.value.WindowProjectProcessor; import org.apache.druid.query.rowsandcols.RowsAndColumns; /** @@ -55,6 +56,7 @@ @JsonSubTypes.Type(name = "first", value = WindowFirstProcessor.class), @JsonSubTypes.Type(name = "last", value = WindowLastProcessor.class), @JsonSubTypes.Type(name = "offset", value = WindowOffsetProcessor.class), + @JsonSubTypes.Type(name = "project", value = WindowProjectProcessor.class), @JsonSubTypes.Type(name = "framedAgg", value = WindowFramedAggregateProcessor.class) }) public interface Processor diff --git a/processing/src/main/java/org/apache/druid/query/operator/window/value/WindowProjectProcessor.java b/processing/src/main/java/org/apache/druid/query/operator/window/value/WindowProjectProcessor.java new file mode 100644 index 000000000000..7ae128dd6ad1 --- /dev/null +++ b/processing/src/main/java/org/apache/druid/query/operator/window/value/WindowProjectProcessor.java @@ -0,0 +1,83 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.druid.query.operator.window.value; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.druid.query.operator.window.Processor; +import org.apache.druid.query.rowsandcols.RowsAndColumns; +import org.apache.druid.query.rowsandcols.column.Column; +import org.apache.druid.query.rowsandcols.column.ConstantObjectColumn; +import org.apache.druid.query.rowsandcols.semantic.AppendableRowsAndColumns; +import org.apache.druid.segment.ColumnValueSelector; +import org.apache.druid.segment.VirtualColumn; +import org.apache.druid.segment.column.ColumnType; +import org.apache.druid.segment.join.filter.AllNullColumnSelectorFactory; + +public class WindowProjectProcessor implements Processor +{ + private VirtualColumn virtualColumn; + private ColumnType type; + + @JsonCreator + public WindowProjectProcessor( + @JsonProperty("virtualColumn") VirtualColumn virtualColumn, + @JsonProperty("columnType") ColumnType type) + { + this.virtualColumn = virtualColumn; + this.type = type; + } + + @JsonProperty("virtualColumn") + public VirtualColumn getVirtualColumn() + { + return virtualColumn; + } + + @JsonProperty("type") + public ColumnType getType() + { + return type; + } + + @Override + public RowsAndColumns process(RowsAndColumns incomingPartition) + { + final AppendableRowsAndColumns retVal = RowsAndColumns.expectAppendable(incomingPartition); + + ColumnValueSelector vv = virtualColumn.makeColumnValueSelector(null, new AllNullColumnSelectorFactory()); + + Column column = new ConstantObjectColumn( + vv.getObject(), + incomingPartition.numRows(), + type); + retVal.addColumn( + virtualColumn.getOutputName(), + column); + return retVal; + } + + @Override + public boolean validateEquivalent(Processor otherProcessor) + { + throw new RuntimeException("Unimplemented!"); + + } +} diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java index 4651b591951f..1fcf8f9188a3 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java @@ -21,7 +21,6 @@ import com.google.api.client.util.Sets; import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import org.apache.calcite.rel.RelCollation; @@ -44,7 +43,6 @@ import org.apache.druid.query.operator.NaivePartitioningOperatorFactory; import org.apache.druid.query.operator.NaiveSortOperatorFactory; import org.apache.druid.query.operator.OperatorFactory; -import org.apache.druid.query.operator.ScanOperatorFactory; import org.apache.druid.query.operator.window.ComposingProcessor; import org.apache.druid.query.operator.window.Processor; import org.apache.druid.query.operator.window.WindowFrame; @@ -58,7 +56,10 @@ import org.apache.druid.query.operator.window.value.WindowFirstProcessor; import org.apache.druid.query.operator.window.value.WindowLastProcessor; import org.apache.druid.query.operator.window.value.WindowOffsetProcessor; +import org.apache.druid.query.operator.window.value.WindowProjectProcessor; +import org.apache.druid.segment.VirtualColumn; import org.apache.druid.segment.VirtualColumns; +import org.apache.druid.segment.column.ColumnType; import org.apache.druid.segment.column.RowSignature; import org.apache.druid.sql.calcite.aggregation.Aggregation; import org.apache.druid.sql.calcite.expression.DruidExpression; @@ -236,12 +237,33 @@ public static Windowing fromCalciteStuff( } if (!virtualColumnRegistry.isEmpty()) { + List vcProcessors =new ArrayList(); VirtualColumns virtualColumns = virtualColumnRegistry.build(Sets.newHashSet()); - ImmutableList projectedColumns = ImmutableList. builder() - .addAll(sourceRowSignature.getColumnNames()) - .addAll(virtualColumns.getColumnNames()) - .build(); - ops.add(new ScanOperatorFactory(null, null, null, projectedColumns, virtualColumns, null)); + + VirtualColumn[] vcs = virtualColumns.getVirtualColumns(); + for (VirtualColumn vc : vcs) { + // FIXME push in + ColumnType type = vc.capabilities(RowSignature.empty(), vc.getOutputName()).toColumnType(); + + vcProcessors.add(new WindowProjectProcessor(vc,type)); + } + + + ops.add(new WindowOperatorFactory( + vcProcessors.size() == 1 ? + vcProcessors.get(0) : new ComposingProcessor(vcProcessors.toArray(new Processor[0])) + )); + +// virtualColumns.getVirtualColumns()[0].capabilities(RowSignature.empty(), colName); +// virtualColumnRegistry.getFullRowSignature() + +// ImmutableList projectedColumns = ImmutableList. builder() +// .addAll(sourceRowSignature.getColumnNames()) +// .addAll(virtualColumns.getColumnNames()) +// .build(); +// ops.add(new ScanOperatorFactory(null, null, null, projectedColumns, virtualColumns, null)); + + } ops.add(new WindowOperatorFactory( From 9bf2c37c674c5e5489417d4c3b1a9d05e5c5a7a3 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 14:46:54 +0000 Subject: [PATCH 095/100] cleanup/etc --- .../window/value/WindowProjectProcessor.java | 11 ++--- .../druid/sql/calcite/rel/Windowing.java | 49 +++++++------------ 2 files changed, 22 insertions(+), 38 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/operator/window/value/WindowProjectProcessor.java b/processing/src/main/java/org/apache/druid/query/operator/window/value/WindowProjectProcessor.java index 7ae128dd6ad1..a65accfb115c 100644 --- a/processing/src/main/java/org/apache/druid/query/operator/window/value/WindowProjectProcessor.java +++ b/processing/src/main/java/org/apache/druid/query/operator/window/value/WindowProjectProcessor.java @@ -30,19 +30,17 @@ import org.apache.druid.segment.VirtualColumn; import org.apache.druid.segment.column.ColumnType; import org.apache.druid.segment.join.filter.AllNullColumnSelectorFactory; +import org.apache.druid.segment.virtual.ExpressionVirtualColumn; public class WindowProjectProcessor implements Processor { private VirtualColumn virtualColumn; - private ColumnType type; @JsonCreator public WindowProjectProcessor( - @JsonProperty("virtualColumn") VirtualColumn virtualColumn, - @JsonProperty("columnType") ColumnType type) + @JsonProperty("virtualColumn") VirtualColumn virtualColumn) { this.virtualColumn = virtualColumn; - this.type = type; } @JsonProperty("virtualColumn") @@ -51,10 +49,9 @@ public VirtualColumn getVirtualColumn() return virtualColumn; } - @JsonProperty("type") public ColumnType getType() { - return type; + return ((ExpressionVirtualColumn)virtualColumn).getOutputType(); } @Override @@ -67,7 +64,7 @@ public RowsAndColumns process(RowsAndColumns incomingPartition) Column column = new ConstantObjectColumn( vv.getObject(), incomingPartition.numRows(), - type); + getType()); retVal.addColumn( virtualColumn.getOutputName(), column); diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java index 1fcf8f9188a3..4fde59091fa8 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java @@ -59,7 +59,6 @@ import org.apache.druid.query.operator.window.value.WindowProjectProcessor; import org.apache.druid.segment.VirtualColumn; import org.apache.druid.segment.VirtualColumns; -import org.apache.druid.segment.column.ColumnType; import org.apache.druid.segment.column.RowSignature; import org.apache.druid.sql.calcite.aggregation.Aggregation; import org.apache.druid.sql.calcite.expression.DruidExpression; @@ -232,44 +231,19 @@ public static Windowing fromCalciteStuff( ); } - if (processors.isEmpty()) { - throw new ISE("No processors from Window[%s], why was this code called?", window); - } - if (!virtualColumnRegistry.isEmpty()) { - List vcProcessors =new ArrayList(); + List vcProcessors = new ArrayList(); VirtualColumns virtualColumns = virtualColumnRegistry.build(Sets.newHashSet()); - VirtualColumn[] vcs = virtualColumns.getVirtualColumns(); - for (VirtualColumn vc : vcs) { - // FIXME push in - ColumnType type = vc.capabilities(RowSignature.empty(), vc.getOutputName()).toColumnType(); - - vcProcessors.add(new WindowProjectProcessor(vc,type)); + for (VirtualColumn vc : virtualColumns.getVirtualColumns()) { + vcProcessors.add(new WindowProjectProcessor(vc)); } - - ops.add(new WindowOperatorFactory( - vcProcessors.size() == 1 ? - vcProcessors.get(0) : new ComposingProcessor(vcProcessors.toArray(new Processor[0])) - )); - -// virtualColumns.getVirtualColumns()[0].capabilities(RowSignature.empty(), colName); -// virtualColumnRegistry.getFullRowSignature() - -// ImmutableList projectedColumns = ImmutableList. builder() -// .addAll(sourceRowSignature.getColumnNames()) -// .addAll(virtualColumns.getColumnNames()) -// .build(); -// ops.add(new ScanOperatorFactory(null, null, null, projectedColumns, virtualColumns, null)); - + ops.add(new WindowOperatorFactory(buildProcessorFor(vcProcessors))); } - ops.add(new WindowOperatorFactory( - processors.size() == 1 ? - processors.get(0) : new ComposingProcessor(processors.toArray(new Processor[0])) - )); + ops.add(new WindowOperatorFactory(buildProcessorFor(processors))); } // Apply windowProject, if present. @@ -299,6 +273,19 @@ public static Windowing fromCalciteStuff( } } + private static Processor buildProcessorFor(List processors) + { + switch (processors.size()) + { + case 0: + throw new ISE("No processors supplied, why was this code called?"); + case 1: + return processors.get(0); + default: + return new ComposingProcessor(processors.toArray(new Processor[0])); + } + } + private final RowSignature signature; public Windowing( From b0344748be5d7518b4757328abffcb0cb95737cc Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 14:52:24 +0000 Subject: [PATCH 096/100] cleanup --- .../window/value/WindowProjectProcessor.java | 14 +++++++++++--- .../calcite/tests/window/virtualColumns.sqlTest | 8 ++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/operator/window/value/WindowProjectProcessor.java b/processing/src/main/java/org/apache/druid/query/operator/window/value/WindowProjectProcessor.java index a65accfb115c..d7968a8dd77d 100644 --- a/processing/src/main/java/org/apache/druid/query/operator/window/value/WindowProjectProcessor.java +++ b/processing/src/main/java/org/apache/druid/query/operator/window/value/WindowProjectProcessor.java @@ -21,6 +21,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; +import org.apache.druid.error.DruidException; import org.apache.druid.query.operator.window.Processor; import org.apache.druid.query.rowsandcols.RowsAndColumns; import org.apache.druid.query.rowsandcols.column.Column; @@ -41,6 +42,10 @@ public WindowProjectProcessor( @JsonProperty("virtualColumn") VirtualColumn virtualColumn) { this.virtualColumn = virtualColumn; + + if(!(virtualColumn instanceof ExpressionVirtualColumn)) { + DruidException.defensive("Only ExpressionVirtualColumn supported [%s]", virtualColumn); + } } @JsonProperty("virtualColumn") @@ -51,7 +56,7 @@ public VirtualColumn getVirtualColumn() public ColumnType getType() { - return ((ExpressionVirtualColumn)virtualColumn).getOutputType(); + return ((ExpressionVirtualColumn) virtualColumn).getOutputType(); } @Override @@ -74,7 +79,10 @@ public RowsAndColumns process(RowsAndColumns incomingPartition) @Override public boolean validateEquivalent(Processor otherProcessor) { - throw new RuntimeException("Unimplemented!"); - + if (otherProcessor instanceof WindowProjectProcessor) { + WindowProjectProcessor o = (WindowProjectProcessor) otherProcessor; + return o.virtualColumn.equals(virtualColumn); + } + return false; } } diff --git a/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest b/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest index ebcc263b4ba8..5cd0edcf6d23 100644 --- a/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/virtualColumns.sqlTest @@ -9,6 +9,14 @@ sql: | expectedOperators: - { type: "naivePartition", partitionColumns: [ ] } + - type: "window" + processor: + type: "project" + virtualColumn: + type: "expression" + name: "_v0" + expression: "42.0" + outputType: "DOUBLE" - type: "window" processor: type: "framedAgg" From e1f7ef5da7193401483a8e996e922fb9ffd70a96 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 14:59:27 +0000 Subject: [PATCH 097/100] checkstyle fixes --- .../window/value/WindowProjectProcessor.java | 2 +- .../druid/sql/calcite/rel/Windowing.java | 21 +++++++------------ 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/operator/window/value/WindowProjectProcessor.java b/processing/src/main/java/org/apache/druid/query/operator/window/value/WindowProjectProcessor.java index d7968a8dd77d..e86a0fb10f9c 100644 --- a/processing/src/main/java/org/apache/druid/query/operator/window/value/WindowProjectProcessor.java +++ b/processing/src/main/java/org/apache/druid/query/operator/window/value/WindowProjectProcessor.java @@ -43,7 +43,7 @@ public WindowProjectProcessor( { this.virtualColumn = virtualColumn; - if(!(virtualColumn instanceof ExpressionVirtualColumn)) { + if (!(virtualColumn instanceof ExpressionVirtualColumn)) { DruidException.defensive("Only ExpressionVirtualColumn supported [%s]", virtualColumn); } } diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java index 4fde59091fa8..6f6ae3c79a39 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java @@ -19,7 +19,6 @@ package org.apache.druid.sql.calcite.rel; -import com.google.api.client.util.Sets; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; @@ -233,14 +232,11 @@ public static Windowing fromCalciteStuff( if (!virtualColumnRegistry.isEmpty()) { List vcProcessors = new ArrayList(); - VirtualColumns virtualColumns = virtualColumnRegistry.build(Sets.newHashSet()); - + VirtualColumns virtualColumns = virtualColumnRegistry.build(Collections.emptySet()); for (VirtualColumn vc : virtualColumns.getVirtualColumns()) { vcProcessors.add(new WindowProjectProcessor(vc)); } - ops.add(new WindowOperatorFactory(buildProcessorFor(vcProcessors))); - } ops.add(new WindowOperatorFactory(buildProcessorFor(processors))); @@ -275,14 +271,13 @@ public static Windowing fromCalciteStuff( private static Processor buildProcessorFor(List processors) { - switch (processors.size()) - { - case 0: - throw new ISE("No processors supplied, why was this code called?"); - case 1: - return processors.get(0); - default: - return new ComposingProcessor(processors.toArray(new Processor[0])); + switch (processors.size()) { + case 0: + throw new ISE("No processors supplied, why was this code called?"); + case 1: + return processors.get(0); + default: + return new ComposingProcessor(processors.toArray(new Processor[0])); } } From 87c60631c2aefe2a729907dbe08953318f46bfc4 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 15:02:29 +0000 Subject: [PATCH 098/100] remove VCR arg --- .../org/apache/druid/sql/calcite/rel/DruidQuery.java | 3 +-- .../org/apache/druid/sql/calcite/rel/Windowing.java | 11 +++++++++-- .../calcite/tests/window/no_grouping.sqlTest | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java index 63546ef188fa..91cca9b28bc7 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java @@ -282,8 +282,7 @@ public static DruidQuery fromPartialQuery( partialQuery, plannerContext, sourceRowSignature, // Plans immediately after Scan, so safe to use the row signature from scan - rexBuilder, - virtualColumnRegistry + rexBuilder ) ); } else { diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java index 6f6ae3c79a39..d94b3bb3b19f 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/Windowing.java @@ -118,8 +118,7 @@ public static Windowing fromCalciteStuff( final PartialDruidQuery partialQuery, final PlannerContext plannerContext, final RowSignature sourceRowSignature, - final RexBuilder rexBuilder, - final VirtualColumnRegistry virtualColumnRegistry + final RexBuilder rexBuilder ) { final Window window = Preconditions.checkNotNull(partialQuery.getWindow(), "window"); @@ -143,6 +142,14 @@ public static Windowing fromCalciteStuff( } for (int i = 0; i < window.groups.size(); ++i) { + + // FIXME: I think this should be recreated after every group + VirtualColumnRegistry virtualColumnRegistry = VirtualColumnRegistry.create( + sourceRowSignature, + plannerContext.getExpressionParser(), + plannerContext.getPlannerConfig().isForceExpressionVirtualColumns() + ); + final WindowGroup group = new WindowGroup(window, window.groups.get(i), sourceRowSignature); final LinkedHashSet sortColumns = new LinkedHashSet<>(); diff --git a/sql/src/test/resources/calcite/tests/window/no_grouping.sqlTest b/sql/src/test/resources/calcite/tests/window/no_grouping.sqlTest index 7c9dae4aad39..5e8c31e69fff 100644 --- a/sql/src/test/resources/calcite/tests/window/no_grouping.sqlTest +++ b/sql/src/test/resources/calcite/tests/window/no_grouping.sqlTest @@ -1,4 +1,4 @@ -type: "failingTest" +type: "operatorValidation" sql: | SELECT From 43df657901fc3c2fa3fc3a5aed0c3d25d5a743fa Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 15:03:57 +0000 Subject: [PATCH 099/100] add assert --- .../main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java | 1 + 1 file changed, 1 insertion(+) diff --git a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java index 91cca9b28bc7..7ad67e48bf7a 100644 --- a/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java +++ b/sql/src/main/java/org/apache/druid/sql/calcite/rel/DruidQuery.java @@ -277,6 +277,7 @@ public static DruidQuery fromPartialQuery( if (partialQuery.getWindow() != null) { if (plannerContext.featureAvailable(EngineFeature.WINDOW_FUNCTIONS)) { + assert (virtualColumnRegistry.isEmpty()); windowing = Preconditions.checkNotNull( Windowing.fromCalciteStuff( partialQuery, From f9a9e6f1a26c1d503356ada7ab8a3ccbc70f85a3 Mon Sep 17 00:00:00 2001 From: Zoltan Haindrich Date: Tue, 17 Oct 2023 15:38:09 +0000 Subject: [PATCH 100/100] newline --- .../java/org/apache/druid/sql/calcite/CalciteQueryTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java index cfce3ec42e56..f7e597847778 100644 --- a/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java +++ b/sql/src/test/java/org/apache/druid/sql/calcite/CalciteQueryTest.java @@ -14270,4 +14270,4 @@ public void testUnSupportedNullsLast() .run()); assertEquals("ASCENDING ordering with NULLS LAST is not supported!", e.getMessage()); } -} \ No newline at end of file +}