diff --git a/src/main/java/org/codetracker/HistoryImpl.java b/src/main/java/org/codetracker/HistoryImpl.java index b9fa5e3a8df..1d45ec8bc52 100644 --- a/src/main/java/org/codetracker/HistoryImpl.java +++ b/src/main/java/org/codetracker/HistoryImpl.java @@ -150,6 +150,7 @@ public String getCommitterName() { @Override public int compareTo(HistoryInfo toCompare) { return Comparator.comparing(HistoryInfo::getCommitTime) + .thenComparing(HistoryInfo::getAuthoredTime) .thenComparing(HistoryInfo::getChangeType) .compare(this, toCompare); } diff --git a/src/test/resources/blame/blameTestUntilCommitZero3.txt b/src/test/resources/blame/blameTestUntilCommitZero3.txt index 811af1f624e..690c333eb54 100644 --- a/src/test/resources/blame/blameTestUntilCommitZero3.txt +++ b/src/test/resources/blame/blameTestUntilCommitZero3.txt @@ -25,7 +25,7 @@ a2783ed22 java/compiler/impl/src/com/intellij/compiler/actions/CompileDirtyActio 7460e5ada source/com/intellij/compiler/actions/CompileDirtyAction.java (Maxim Shafirov 2005-01-13 20:44:30 +0000 25) public class CompileDirtyAction extends CompileActionBase { 26) 7460e5ada source/com/intellij/compiler/actions/CompileDirtyAction.java (Maxim Shafirov 2005-01-13 20:44:30 +0000 27) protected void doAction(DataContext dataContext, Project project) { -0104f1489 java/compiler/impl/src/com/intellij/compiler/actions/CompileDirtyAction.java (Vladislav.Soroka 2016-09-21 09:30:57 +0000 28) ProjectTaskManager.getInstance(project).buildAllModules(); +53ddd10a4 java/compiler/impl/src/com/intellij/compiler/actions/CompileDirtyAction.java (Vladislav.Soroka 2016-09-21 09:30:57 +0000 28) ProjectTaskManager.getInstance(project).buildAllModules(); 7460e5ada source/com/intellij/compiler/actions/CompileDirtyAction.java (Maxim Shafirov 2005-01-13 20:44:30 +0000 29) } 30) a2783ed22 java/compiler/impl/src/com/intellij/compiler/actions/CompileDirtyAction.java (Alexey Kudravtsev 2018-08-06 12:29:49 +0000 31) public void update(@NotNull AnActionEvent e){ diff --git a/src/test/resources/blame/blameTestWithLocalRepo4.txt b/src/test/resources/blame/blameTestWithLocalRepo4.txt index f6e21967aa5..b551c3dee71 100644 --- a/src/test/resources/blame/blameTestWithLocalRepo4.txt +++ b/src/test/resources/blame/blameTestWithLocalRepo4.txt @@ -407,12 +407,12 @@ b8035a7ac javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpre 2d3f5e219 javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java (Thomas Leu 2018-06-07 20:54:17 +0000 407) Integer lastElementIndex = removedGroup.getLastElementIndex(); 2d3f5e219 javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java (Thomas Leu 2018-06-07 20:54:17 +0000 408) Optional indentation = removedGroup.getIndentation(); 409) -4f9e0c67e javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java (Thomas Leu 2018-06-07 20:54:17 +0000 410) if (indentation.isPresent() && !isReplaced(lastElementIndex)) { +b8035a7ac javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java (Thomas Leu 2018-06-07 20:54:17 +0000 410) if (indentation.isPresent() && !isReplaced(lastElementIndex)) { 2d3f5e219 javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java (Thomas Leu 2018-06-07 20:54:17 +0000 411) for (int i = 0; i < indentation.get(); i++) { -4f9e0c67e javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java (Thomas Leu 2018-06-07 20:54:17 +0000 412) if (originalElements.get(originalIndex).isSpaceOrTab()) { +b8035a7ac javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java (Thomas Leu 2018-06-07 20:54:17 +0000 412) if (originalElements.get(originalIndex).isSpaceOrTab()) { b8035a7ac javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java (Thomas Leu 2018-06-07 20:54:17 +0000 413) // If the current element is a space, remove it 2d3f5e219 javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java (Thomas Leu 2018-06-07 20:54:17 +0000 414) nodeText.removeElement(originalIndex); -b8035a7ac javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java (Thomas Leu 2018-06-07 20:54:17 +0000 415) } else if (originalIndex >= 1 && originalElements.get(originalIndex - 1).isSpaceOrTab()) { +5b277fef9 javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java (Thomas Leu 2018-06-07 20:54:17 +0000 415) } else if (originalIndex >= 1 && originalElements.get(originalIndex - 1).isSpaceOrTab()) { b8035a7ac javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java (Thomas Leu 2018-06-07 20:54:17 +0000 416) // If the current element is not a space itself we remove the space in front of it 4f9e0c67e javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java (Thomas Leu 2018-06-07 20:54:17 +0000 417) nodeText.removeElement(originalIndex - 1); 4f9e0c67e javaparser-core/src/main/java/com/github/javaparser/printer/lexicalpreservation/Difference.java (Thomas Leu 2018-06-07 20:54:17 +0000 418) originalIndex--; diff --git a/src/test/resources/blame/blameTestWithLocalRepo7.txt b/src/test/resources/blame/blameTestWithLocalRepo7.txt index 035ad48ce56..bc45d515584 100644 --- a/src/test/resources/blame/blameTestWithLocalRepo7.txt +++ b/src/test/resources/blame/blameTestWithLocalRepo7.txt @@ -203,7 +203,7 @@ c2d9a533b junit5-engine/src/main/java/org/junit/gen5/engine/junit5/descriptor/Cl 9693d5389 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Marc Philipp 2018-06-10 10:56:39 +0000 203) public void after(JupiterEngineExecutionContext context) { 204) 137f831bb junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Marc Philipp 2018-07-07 20:15:38 +0000 205) ThrowableCollector throwableCollector = context.getThrowableCollector(); -c1d682aee junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Marc Philipp 2018-07-07 20:15:38 +0000 206) Throwable previousThrowable = throwableCollector.getThrowable(); +137f831bb junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Marc Philipp 2018-07-07 20:15:38 +0000 206) Throwable previousThrowable = throwableCollector.getThrowable(); 207) 62c433c14 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2016-06-25 19:29:20 +0000 208) if (context.beforeAllMethodsExecuted()) { 3e3b40213 junit-jupiter-engine/src/main/java/org/junit/jupiter/engine/descriptor/ClassTestDescriptor.java (Sam Brannen 2016-06-25 20:02:49 +0000 209) invokeAfterAllMethods(context); diff --git a/src/test/resources/blame/blameTestWithLocalRepo9.txt b/src/test/resources/blame/blameTestWithLocalRepo9.txt index 69456b8cc03..a1ce1f264d3 100644 --- a/src/test/resources/blame/blameTestWithLocalRepo9.txt +++ b/src/test/resources/blame/blameTestWithLocalRepo9.txt @@ -112,7 +112,7 @@ a922473c0 flink-streaming-java/src/main/java/org/apache/flink/streaming/api/data b54499b1c flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Robert Metzger 2016-02-05 13:43:49 +0000 112) @Public 9cbd68a84 flink-addons/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (gyfora 2014-09-20 11:42:04 +0000 113) public class DataStream { 114) -5d401ff6e flink-addons/flink-streaming/stratosphere-streaming-core/src/main/java/eu/stratosphere/streaming/api/DataStream.java (mbalassi 2014-08-18 13:57:14 +0000 115) protected final StreamExecutionEnvironment environment; +23f649e4d flink-addons/flink-streaming/stratosphere-streaming-core/src/main/java/eu/stratosphere/streaming/api/DataStream.java (mbalassi 2014-08-18 13:57:14 +0000 115) protected final StreamExecutionEnvironment environment; 116) bac21bf5d flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Aljoscha Krettek 2015-08-19 15:53:04 +0000 117) protected final StreamTransformation transformation; 118) @@ -127,11 +127,11 @@ bac21bf5d flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/a bac21bf5d flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Aljoscha Krettek 2015-08-19 15:53:04 +0000 127) this.transformation = Preconditions.checkNotNull(transformation, "Stream Transformation must not be null."); bac21bf5d flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Aljoscha Krettek 2015-08-19 15:53:04 +0000 128) } 129) -f60f28678 flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 130) /** +54a66d7aa flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 130) /** 32ddc9e60 flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (mbalassi 2015-06-12 07:59:04 +0000 131) * Returns the ID of the {@link DataStream} in the current {@link StreamExecutionEnvironment}. c08bcf1e0 flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Till Rohrmann 2015-12-21 15:59:03 +0000 132) * 3228db5fb flink-addons/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/DataStream.java (gyfora 2014-08-18 14:14:12 +0000 133) * @return ID of the DataStream -f60f28678 flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 134) */ +54a66d7aa flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 134) */ b54499b1c flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Robert Metzger 2016-02-05 13:43:49 +0000 135) @Internal 4eabd4dbb flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Stephan Ewen 2016-02-26 17:49:01 +0000 136) public int getId() { bac21bf5d flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Aljoscha Krettek 2015-08-19 15:53:04 +0000 137) return transformation.getId(); @@ -401,12 +401,12 @@ bac21bf5d flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/a 97d10070c flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Gábor Hermann 2015-07-11 12:00:56 +0000 401) clean(keySelector))); 97d10070c flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Gábor Hermann 2015-07-11 12:00:56 +0000 402) } 403) -f60f28678 flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 404) /** +54a66d7aa flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 404) /** 9f6a8b6d0 flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Aljoscha Krettek 2016-02-08 12:03:31 +0000 405) * Sets the partitioning of the {@link DataStream} so that the output elements 0755324c2 flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Greg Hogan 2018-01-15 15:03:27 +0000 406) * are broadcast to every parallel instance of the next operation. 32ddc9e60 flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (mbalassi 2015-06-12 07:59:04 +0000 407) * -c3fe73584 flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (gyfora 2014-08-18 13:57:07 +0000 408) * @return The DataStream with broadcast partitioning set. -f60f28678 flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 409) */ +f08d55d0a flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (Márton Balassi 2014-08-18 13:57:07 +0000 408) * @return The DataStream with broadcast partitioning set. +54a66d7aa flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 409) */ bac21bf5d flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Aljoscha Krettek 2015-08-19 15:53:04 +0000 410) public DataStream broadcast() { bac21bf5d flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Aljoscha Krettek 2015-08-19 15:53:04 +0000 411) return setConnectionType(new BroadcastPartitioner()); ce56b1466 flink-addons/flink-streaming/src/main/java/eu/stratosphere/api/datastream/DataStream.java (gyfora 2014-08-18 13:57:00 +0000 412) } @@ -528,7 +528,7 @@ c524951f5 flink-addons/flink-streaming/flink-streaming-core/src/main/java/org/ap 572855daa flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Fabian Hueske 2016-02-10 10:51:26 +0000 528) @PublicEvolving 7b6e762fd flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Aljoscha Krettek 2015-10-05 14:36:35 +0000 529) public IterativeStream iterate() { 2714aaf3d flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Robert Metzger 2016-02-16 14:52:53 +0000 530) return new IterativeStream<>(this, 0); -298a7f74b flink-addons/flink-streaming/stratosphere-streaming-core/src/main/java/eu/stratosphere/streaming/api/DataStream.java (mbalassi 2014-08-18 13:57:14 +0000 531) } +23f649e4d flink-addons/flink-streaming/stratosphere-streaming-core/src/main/java/eu/stratosphere/streaming/api/DataStream.java (mbalassi 2014-08-18 13:57:14 +0000 531) } 532) f165c353c flink-addons/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Gyula Fora 2015-01-02 17:34:38 +0000 533) /** f165c353c flink-addons/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Gyula Fora 2015-01-02 17:34:38 +0000 534) * Initiates an iterative part of the program that feeds back data streams. @@ -941,7 +941,7 @@ a922473c0 flink-streaming-java/src/main/java/org/apache/flink/streaming/api/data 74c2b80bc flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Stephan Ewen 2016-02-17 10:29:03 +0000 941) // Data sinks 74c2b80bc flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Stephan Ewen 2016-02-17 10:29:03 +0000 942) // ------------------------------------------------------------------------ 943) -f60f28678 flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 944) /** +54a66d7aa flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 944) /** bac21bf5d flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Aljoscha Krettek 2015-08-19 15:53:04 +0000 945) * Writes a DataStream to the standard output stream (stdout). bac21bf5d flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Aljoscha Krettek 2015-08-19 15:53:04 +0000 946) * 2581a7b88 flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Aljoscha Krettek 2017-04-26 08:36:50 +0000 947) *

For each element of the DataStream the result of {@link Object#toString()} is written. @@ -950,7 +950,7 @@ c08bcf1e0 flink-streaming-java/src/main/java/org/apache/flink/streaming/api/data 518adb043 flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Aljoscha Krettek 2018-04-17 13:23:12 +0000 950) * worker. 518adb043 flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Aljoscha Krettek 2018-04-17 13:23:12 +0000 951) * 5b05ca635 flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (ghermann 2014-08-18 13:57:13 +0000 952) * @return The closed DataStream. -f60f28678 flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 953) */ +54a66d7aa flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 953) */ 572855daa flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Fabian Hueske 2016-02-10 10:51:26 +0000 954) @PublicEvolving bac21bf5d flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Aljoscha Krettek 2015-08-19 15:53:04 +0000 955) public DataStreamSink print() { 2714aaf3d flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Robert Metzger 2016-02-16 14:52:53 +0000 956) PrintSinkFunction printFunction = new PrintSinkFunction<>(); @@ -1169,15 +1169,15 @@ bac21bf5d flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/a 2714aaf3d flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Robert Metzger 2016-02-16 14:52:53 +0000 1169) return new DataStream<>(this.getExecutionEnvironment(), new PartitionTransformation<>(this.getTransformation(), partitioner)); 1fccb10ff flink-addons/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/DataStream.java (ghermann 2014-08-18 14:19:17 +0000 1170) } 1171) -f60f28678 flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 1172) /** +54a66d7aa flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 1172) /** 776bd3f6d flink-addons/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/DataStream.java (gyfora 2014-08-18 14:22:50 +0000 1173) * Adds the given sink to this DataStream. Only streams with sinks added 5b05ca635 flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (ghermann 2014-08-18 13:57:13 +0000 1174) * will be executed once the {@link StreamExecutionEnvironment#execute()} 5b05ca635 flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (ghermann 2014-08-18 13:57:13 +0000 1175) * method is called. c08bcf1e0 flink-streaming-java/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Till Rohrmann 2015-12-21 15:59:03 +0000 1176) * -f60f28678 flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 1177) * @param sinkFunction -c3fe73584 flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (gyfora 2014-08-18 13:57:07 +0000 1178) * The object containing the sink's invoke function. +54a66d7aa flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 1177) * @param sinkFunction +f08d55d0a flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (Márton Balassi 2014-08-18 13:57:07 +0000 1178) * The object containing the sink's invoke function. 776bd3f6d flink-addons/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/DataStream.java (gyfora 2014-08-18 14:22:50 +0000 1179) * @return The closed DataStream. -f60f28678 flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 1180) */ +54a66d7aa flink-addons/flink-streaming/src/main/java/eu/stratosphere/streaming/api/DataStream.java (jfeher 2014-08-18 13:57:06 +0000 1180) */ bac21bf5d flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Aljoscha Krettek 2015-08-19 15:53:04 +0000 1181) public DataStreamSink addSink(SinkFunction sinkFunction) { 1182) bac21bf5d flink-staging/flink-streaming/flink-streaming-core/src/main/java/org/apache/flink/streaming/api/datastream/DataStream.java (Aljoscha Krettek 2015-08-19 15:53:04 +0000 1183) // read the output type of the input Transform to coax out errors about MissingTypeInfo