diff --git a/2019/src/main/java/be/vandewalleh/aoc/Day03.java b/2019/src/main/java/be/vandewalleh/aoc/Day03.java new file mode 100644 index 0000000..5a91c8a --- /dev/null +++ b/2019/src/main/java/be/vandewalleh/aoc/Day03.java @@ -0,0 +1,64 @@ +package be.vandewalleh.aoc; + +import be.vandewalleh.aoc.geometry.Direction2D; +import be.vandewalleh.aoc.geometry.Point2D; +import be.vandewalleh.aoc.utils.factory.Days; +import be.vandewalleh.aoc.utils.input.Day; +import be.vandewalleh.aoc.utils.input.Input; +import be.vandewalleh.aoc.utils.input.Lines; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + +@Day(3) +public class Day03 { + + public static void main(String[] args) { + var day = Days.createDay(Day03.class); + System.out.println(day.part1()); + System.out.println(day.part2()); + } + + private final String[] wireA; + private final String[] wireB; + + public Day03(@Lines Input> input) { + this.wireA = input.getValue().get(0).split(","); + this.wireB = input.getValue().get(1).split(","); + } + + private List path(String[] wire) { + var points = new ArrayList(); + var point = Point2D.origin; + for (var section : wire) { + var direction = Direction2D.from(section.charAt(0)); + var count = Integer.parseInt(section.substring(1)); + for (int i = 0; i < count; i++) { + point = point.translate(direction.point); + points.add(point); + } + } + return points; + } + + private int part1() { + var pathA = path(wireA); + var pathB = path(wireB); + + var intersections = new HashSet<>(pathA); + intersections.retainAll(pathB); + + return intersections.stream().mapToInt(Point2D::manhattanDistance).min().orElse(-1); + } + + private int part2() { + var pathA = path(wireA); + var pathB = path(wireB); + + var intersections = new HashSet<>(pathA); + intersections.retainAll(pathB); + + return intersections.stream().mapToInt(p -> pathA.indexOf(p) + pathB.indexOf(p) + 2).min().orElse(-1); + } +} diff --git a/2019/src/main/java/be/vandewalleh/aoc/Day04.java b/2019/src/main/java/be/vandewalleh/aoc/Day04.java new file mode 100644 index 0000000..b932f46 --- /dev/null +++ b/2019/src/main/java/be/vandewalleh/aoc/Day04.java @@ -0,0 +1,81 @@ +package be.vandewalleh.aoc; + +import be.vandewalleh.aoc.utils.factory.Days; +import be.vandewalleh.aoc.utils.input.Day; +import be.vandewalleh.aoc.utils.input.Input; +import be.vandewalleh.aoc.utils.input.Text; + +import java.util.Arrays; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +@Day(4) +public class Day04 { + + public static void main(String[] args) { + var day = Days.createDay(Day04.class); + System.out.println(day.part1()); + System.out.println(day.part2()); + } + + private final int min; + private final int max; + + public Day04(@Text Input input) { + var spl = input.getValue().split("-", 2); + min = Integer.parseInt(spl[0]); + max = Integer.parseInt(spl[1]); + } + + private boolean isNotDecreasing(int[] ints) { + for (int i = 0; i < 5; i++) { + int a = ints[i], b = ints[i + 1]; + if (b < a) return false; + } + return true; + } + + private boolean hasPair(int[] ints) { + for (int i = 0; i < 5; i++) { + int a = ints[i], b = ints[i + 1]; + if (a == b) return true; + } + return false; + } + + private boolean hasGroup(int[] ints) { + var occurrences = new int[10]; + for (int i = 0; i < 5; i++) { + int a = ints[i], b = ints[i + 1]; + if (a == b) occurrences[a]++; + } + return Arrays.stream(occurrences).anyMatch(e -> e == 1); + } + + private Stream intStream() { + return IntStream.rangeClosed(min, max) + .mapToObj(String::valueOf) + .map(String::toCharArray) + .map(e -> { + var ints = new int[6]; + for (int i = 0; i < 6; i++) { + ints[i] = Integer.parseInt(String.valueOf(e[i])); + } + return ints; + }); + } + + private long part1() { + return intStream() + .filter(this::isNotDecreasing) + .filter(this::hasPair) + .count(); + } + + private long part2() { + return intStream() + .filter(this::isNotDecreasing) + .filter(this::hasGroup) + .count(); + } +} diff --git a/2019/src/main/java/be/vandewalleh/aoc/Day05.java b/2019/src/main/java/be/vandewalleh/aoc/Day05.java new file mode 100644 index 0000000..ef40461 --- /dev/null +++ b/2019/src/main/java/be/vandewalleh/aoc/Day05.java @@ -0,0 +1,37 @@ +package be.vandewalleh.aoc; + +import be.vandewalleh.aoc.intcode.IntCodeInterpreter; +import be.vandewalleh.aoc.utils.factory.Days; +import be.vandewalleh.aoc.utils.input.Csv; +import be.vandewalleh.aoc.utils.input.Day; +import be.vandewalleh.aoc.utils.input.Input; + +@Day(5) +public class Day05 { + + public static void main(String[] args) { + var day = Days.createDay(Day05.class); + System.out.println(day.part1()); + System.out.println(day.part2()); + } + + private final int[] input; + + public Day05(@Csv Input input) { + this.input = input.getValue(); + } + + private Long part1() { + var interpreter = new IntCodeInterpreter(input); + interpreter.setInput(1); + interpreter.run(); + return interpreter.getOutputs().peek(); + } + + private Long part2() { + var interpreter = new IntCodeInterpreter(input); + interpreter.setInput(5); + interpreter.run(); + return interpreter.getOutputs().peek(); + } +} diff --git a/2019/src/main/java/be/vandewalleh/aoc/Day06.java b/2019/src/main/java/be/vandewalleh/aoc/Day06.java new file mode 100644 index 0000000..9216450 --- /dev/null +++ b/2019/src/main/java/be/vandewalleh/aoc/Day06.java @@ -0,0 +1,81 @@ +package be.vandewalleh.aoc; + +import be.vandewalleh.aoc.utils.factory.Days; +import be.vandewalleh.aoc.utils.input.Day; +import be.vandewalleh.aoc.utils.input.Input; +import be.vandewalleh.aoc.utils.input.Lines; + +import java.util.*; + +@Day(6) +public class Day06 { + + public static void main(String[] args) { + var day = Days.createDay(Day06.class); + System.out.println(day.part1()); + System.out.println(day.part2()); + } + + private final List input; + + public Day06(@Lines Input> input) { + this.input = input.getValue(); + } + + private final Map reverseOrbits = new HashMap<>(); + + private int countDirectOrbits() { + return reverseOrbits.size(); + } + + private int countIndirectOrbits() { + var count = 0; + for (var key : reverseOrbits.keySet()) { + count += countIndirectOrbits(key); + } + return count; + } + + private int countIndirectOrbits(String key) { + var count = 0; + var currentKey = reverseOrbits.get(key); + while (currentKey != null) { + currentKey = reverseOrbits.get(currentKey); + if (currentKey != null) count++; + else return count; + } + return -1; + } + + private List pathToCom(String key) { + var path = new ArrayList(); + var currentKey = reverseOrbits.get(key); + path.add(currentKey); + while (currentKey != null) { + currentKey = reverseOrbits.get(currentKey); + if (currentKey == null) return path; + else path.add(currentKey); + } + return path; + } + + private int part1() { + for (var line : input) { + var split = line.split("\\)"); + reverseOrbits.put(split[1], split[0]); + } + return countDirectOrbits() + countIndirectOrbits(); + } + + private int part2() { + var sanPath = pathToCom("SAN"); + var youPath = pathToCom("YOU"); + + var common = new LinkedHashSet<>(sanPath); + common.retainAll(youPath); + + String closestCommon = (String) common.toArray()[0]; + return sanPath.indexOf(closestCommon) + youPath.indexOf(closestCommon); + } + +} diff --git a/2019/src/main/java/be/vandewalleh/aoc/geometry/Direction2D.java b/2019/src/main/java/be/vandewalleh/aoc/geometry/Direction2D.java new file mode 100644 index 0000000..fd4f8f1 --- /dev/null +++ b/2019/src/main/java/be/vandewalleh/aoc/geometry/Direction2D.java @@ -0,0 +1,29 @@ +package be.vandewalleh.aoc.geometry; + +public enum Direction2D { + Up(0, -1), Down(0, 1), Right(1, 0), Left(-1, 0); + + public final Point2D point; + + Direction2D(int x, int y) { + this.point = new Point2D(x, y); + } + + public static Direction2D from(char direction) { + switch (direction) { + case 'U' -> { + return Direction2D.Up; + } + case 'D' -> { + return Direction2D.Down; + } + case 'R' -> { + return Direction2D.Right; + } + case 'L' -> { + return Direction2D.Left; + } + default -> throw new IllegalArgumentException("Unexpected value: " + direction); + } + } +} diff --git a/2019/src/main/java/be/vandewalleh/aoc/geometry/Point2D.java b/2019/src/main/java/be/vandewalleh/aoc/geometry/Point2D.java new file mode 100644 index 0000000..8b6bd85 --- /dev/null +++ b/2019/src/main/java/be/vandewalleh/aoc/geometry/Point2D.java @@ -0,0 +1,13 @@ +package be.vandewalleh.aoc.geometry; + +public record Point2D(int x, int y) { + public static Point2D origin = new Point2D(0, 0); + + public int manhattanDistance() { + return Math.abs(x) + Math.abs(y); + } + + public Point2D translate(Point2D other) { + return new Point2D(this.x + other.x, this.y + other.y); + } +} diff --git a/2019/src/main/java/be/vandewalleh/aoc/intcode/IntCodeInterpreter.java b/2019/src/main/java/be/vandewalleh/aoc/intcode/IntCodeInterpreter.java index 0163b7a..d74b222 100644 --- a/2019/src/main/java/be/vandewalleh/aoc/intcode/IntCodeInterpreter.java +++ b/2019/src/main/java/be/vandewalleh/aoc/intcode/IntCodeInterpreter.java @@ -1,15 +1,13 @@ package be.vandewalleh.aoc.intcode; +import java.util.ArrayDeque; import java.util.Arrays; +import java.util.Deque; public class IntCodeInterpreter { + private final Deque outputs = new ArrayDeque<>(); private final long[] memory; - - public IntCodeInterpreter(long[] memory) { - var copy = new long[memory.length]; - System.arraycopy(memory, 0, copy, 0, memory.length); - this.memory = copy; - } + private long input; public IntCodeInterpreter(int[] memory) { this.memory = Arrays.stream(memory).asLongStream().toArray(); @@ -23,26 +21,95 @@ public class IntCodeInterpreter { memory[2] = verb; } + public void setInput(long input) { + this.input = input; + } + public long getOutput() { return memory[0]; } + // private ? + public Deque getOutputs() { + return outputs; + } + + private long readArgument(Mode mode, long param) { + switch (mode) { + case Positional -> { + return memory[(int) param]; + } + case Immediate -> { + return param; + } + default -> throw new IllegalArgumentException(); + } + } + + private void writeArgument(long param, long value) { + memory[(int) param] = value; + } + + private Mode[] modes(long instruction) { + var str = String.format("%5d", instruction).replace(' ', '0'); + return new Mode[]{ + Mode.of(str.charAt(2)), + Mode.of(str.charAt(1)), + Mode.of(str.charAt(0)) + }; + } + public void run() { var pointer = 0; loop: while (true) { - var optionalOpCode = OpCode.from((int) memory[pointer]); - var opCode = optionalOpCode.orElseThrow(() -> new IllegalArgumentException("Invalid OpCode")); + var jumped = false; + var instruction = memory[pointer]; + var opCode = OpCode.from(((int) instruction) % 100); var args = Arrays.copyOfRange(memory, pointer + 1, pointer + opCode.params + 1); + var modes = modes(instruction); switch (opCode) { - case Add -> memory[(int) args[2]] = memory[(int) args[0]] + memory[(int) args[1]]; - case Multiply -> memory[(int) args[2]] = memory[(int) args[0]] * memory[(int) args[1]]; + case Add -> { + var value = readArgument(modes[0], args[0]) + readArgument(modes[1], args[1]); + writeArgument(args[2], value); + } + case Multiply -> { + var value = readArgument(modes[0], args[0]) * readArgument(modes[1], args[1]); + writeArgument(args[2], value); + } + case In -> { + writeArgument(args[0], input); + } + case Out -> { + outputs.push(readArgument(modes[0], args[0])); + } + case JumpIfTrue -> { + if (readArgument(modes[0], args[0]) != 0) { + pointer = (int) readArgument(modes[1], args[1]); + jumped = true; + } + } + case JumpIfFalse -> { + if (readArgument(modes[0], args[0]) == 0) { + pointer = (int) readArgument(modes[1], args[1]); + jumped = true; + } + } + case LessThan -> { + var value = readArgument(modes[0], args[0]) < readArgument(modes[1], args[1]) ? 1 : 0; + writeArgument(args[2], value); + } + case Equals -> { + var value = readArgument(modes[0], args[0]) == readArgument(modes[1], args[1]) ? 1 : 0; + writeArgument(args[2], value); + } case Halt -> { break loop; } + } - pointer += opCode.params + 1; + if (!jumped) pointer += opCode.params + 1; } } } diff --git a/2019/src/main/java/be/vandewalleh/aoc/intcode/Mode.java b/2019/src/main/java/be/vandewalleh/aoc/intcode/Mode.java new file mode 100644 index 0000000..0c6888a --- /dev/null +++ b/2019/src/main/java/be/vandewalleh/aoc/intcode/Mode.java @@ -0,0 +1,11 @@ +package be.vandewalleh.aoc.intcode; + +public enum Mode { + Positional, Immediate; + + public static Mode of(char representation) { + if (representation == '0') return Mode.Positional; + else if (representation == '1') return Mode.Immediate; + else throw new IllegalArgumentException("Unsupported Mode " + representation); + } +} diff --git a/2019/src/main/java/be/vandewalleh/aoc/intcode/OpCode.java b/2019/src/main/java/be/vandewalleh/aoc/intcode/OpCode.java index 94d963b..7998e05 100644 --- a/2019/src/main/java/be/vandewalleh/aoc/intcode/OpCode.java +++ b/2019/src/main/java/be/vandewalleh/aoc/intcode/OpCode.java @@ -5,7 +5,14 @@ import java.util.Optional; public enum OpCode { Add(1, 3), Multiply(2, 3), - Halt(99, 0); + Halt(99, 0), + In(3, 1), + Out(4, 1), + JumpIfTrue(5, 2), + JumpIfFalse(6, 2), + LessThan(7, 3), + Equals(8, 3), + ; public final int value; public final int params; @@ -15,10 +22,10 @@ public enum OpCode { this.params = params; } - public static Optional from(int value) { + public static OpCode from(int value) { for (OpCode opCode : OpCode.values()) { - if (opCode.value == value) return Optional.of(opCode); + if (opCode.value == value) return opCode; } - return Optional.empty(); + throw new IllegalArgumentException("Unsupported OpCode " + value); } } diff --git a/2019/src/main/resources/day03.txt b/2019/src/main/resources/day03.txt new file mode 100644 index 0000000..49ffe16 --- /dev/null +++ b/2019/src/main/resources/day03.txt @@ -0,0 +1,2 @@ +R1000,U371,R195,U136,R804,U805,L450,U211,R768,U768,L548,U354,L736,U431,L152,U658,L670,D262,L277,U136,L290,U939,R501,U550,L931,D839,R335,D492,L25,U80,R878,U355,R653,U186,R423,D485,L793,D259,L739,U679,R508,D269,R432,D761,R97,D461,L675,U958,L58,U348,L719,D271,R144,U849,R384,U72,L84,U493,R947,U30,L356,D442,R327,U646,R825,U718,L329,D173,L949,D345,L971,D830,L93,U506,R245,D376,R322,D105,L604,D60,R298,D959,L165,D423,R180,D527,R956,D944,R785,U641,L794,D182,R975,D719,L166,U974,L224,U243,L666,U706,R796,D600,L856,D913,L988,D993,L259,U351,R487,D424,L335,U910,L437,D180,R621,D3,R878,D188,R254,D393,L727,U829,R352,U958,L327,D158,L854,D17,R143,D454,R889,D265,L345,U784,R35,D129,R77,U117,R951,D980,L866,U646,R242,D603,L562,U727,L496,U328,L380,D504,R644,U803,L530,D546,R328,D373,L489,U454,R74,D908,R366,U94,R604,D482,L573,D27,R943,U497,L782,D267,L391,U49,R528,D58,R155,D529,R227,D998,R558,D891,R224,U843,R512,U34,R92,U404,R752,U946,L338,D880,L513,D28,L856,D444,L187,U532,L187,U669,L306,U259,R287,D442,R478,U576,R702,U336,L305,U701,L754,D277,R760,D863,L717,U196,L221,U101,L334,D156,L961,D810,L67,D716,L457,D44,L505,D724,R716,D660,L36,D338,R54,U424,R730,U18,L65,D133,R149,U374,R356,D989,R519,U593,L444,D270,R328,U167,L748,D797,L434,U751,R444,D71,R158,D530,L630,U147,R909,D994,L957,U521,L644,D579,R673,U191,R935,U237,R600,D321,L671,U961,L884,U378,R534,D46,R275,U845,R571,U245,L507,U273,R995,U408,L14,D799,L955,D534,R579,D94,R705,D391,R469,D381,R620,U162,R907,D826,R824,U167,L734,U922,L484 +L1007,D620,R853,U77,L13,U473,L253,D410,R897,U464,L862,U281,L650,D470,R87,D204,L896,U670,L864,D950,L75,D320,R901,D785,L653,D225,L857,U616,L143,U940,L664,U131,L547,D745,R636,U569,L50,U454,R288,D254,L36,U377,L609,U929,L714,U85,L939,U923,L566,D280,R243,U948,R447,D7,R908,D151,R824,D432,R34,D81,L458,U745,L420,D982,L625,U910,L729,D274,R910,U322,L984,D88,L700,D349,L932,U510,R625,U88,L252,U785,L378,D101,R299,U66,L476,U696,R236,D46,R590,U157,R461,U305,L269,D487,L676,U467,R319,D524,R75,U65,L478,U861,L238,D716,R888,D12,L184,D578,R266,D226,L656,D172,L752,U124,L831,U810,L663,U538,R417,D770,L359,U1,R12,U791,L332,U272,R574,D942,L857,U447,R310,U342,L713,D258,R590,D585,R129,D115,R832,D967,R981,D159,R864,U423,R268,U519,L52,D493,R445,D657,R885,U166,R155,D264,R51,D632,R525,D875,R617,U898,L556,D386,L143,U278,L767,D389,R821,U869,R286,D90,R289,U54,R15,D764,R46,D674,R983,U49,R959,U779,R958,D247,R483,U156,L18,U12,L178,U540,L499,U487,L544,D336,R814,U267,R145,D135,L920,D902,L933,D507,L997,U361,L577,U425,L773,D782,R117,U851,R998,U503,R902,U781,L161,U98,L653,U633,L91,U629,L138,D19,R147,D756,R364,D529,L764,U913,L118,U856,R774,D621,R151,U154,R737,D960,R86,U458,R991,D481,R560,D858,R223,D6,R931,D301,R552,D797,R284,U368,L967,D686,R940,U410,R137,D156,L6,U643,L445,D999,R888,D277,L852,U210,L777,D36,R103,D652,R120,D67,L642,D527,R913,D858,R69,D433,R864,U75,L531,U456,L664,D452,R801,U851,L824,D278,L526,U133,R200,U768,R15,U393,R982,U287,L38,D114,R86,U299,L819,D891,R379,D601,L244 diff --git a/2019/src/main/resources/day04.txt b/2019/src/main/resources/day04.txt new file mode 100644 index 0000000..216878a --- /dev/null +++ b/2019/src/main/resources/day04.txt @@ -0,0 +1 @@ +272091-815432 diff --git a/2019/src/main/resources/day05.txt b/2019/src/main/resources/day05.txt new file mode 100644 index 0000000..c5c2baa --- /dev/null +++ b/2019/src/main/resources/day05.txt @@ -0,0 +1 @@ +3,225,1,225,6,6,1100,1,238,225,104,0,1101,11,91,225,1002,121,77,224,101,-6314,224,224,4,224,1002,223,8,223,1001,224,3,224,1,223,224,223,1102,74,62,225,1102,82,7,224,1001,224,-574,224,4,224,102,8,223,223,1001,224,3,224,1,224,223,223,1101,28,67,225,1102,42,15,225,2,196,96,224,101,-4446,224,224,4,224,102,8,223,223,101,6,224,224,1,223,224,223,1101,86,57,225,1,148,69,224,1001,224,-77,224,4,224,102,8,223,223,1001,224,2,224,1,223,224,223,1101,82,83,225,101,87,14,224,1001,224,-178,224,4,224,1002,223,8,223,101,7,224,224,1,223,224,223,1101,38,35,225,102,31,65,224,1001,224,-868,224,4,224,1002,223,8,223,1001,224,5,224,1,223,224,223,1101,57,27,224,1001,224,-84,224,4,224,102,8,223,223,1001,224,7,224,1,223,224,223,1101,61,78,225,1001,40,27,224,101,-89,224,224,4,224,1002,223,8,223,1001,224,1,224,1,224,223,223,4,223,99,0,0,0,677,0,0,0,0,0,0,0,0,0,0,0,1105,0,99999,1105,227,247,1105,1,99999,1005,227,99999,1005,0,256,1105,1,99999,1106,227,99999,1106,0,265,1105,1,99999,1006,0,99999,1006,227,274,1105,1,99999,1105,1,280,1105,1,99999,1,225,225,225,1101,294,0,0,105,1,0,1105,1,99999,1106,0,300,1105,1,99999,1,225,225,225,1101,314,0,0,106,0,0,1105,1,99999,1008,677,226,224,1002,223,2,223,1006,224,329,101,1,223,223,8,226,677,224,102,2,223,223,1005,224,344,101,1,223,223,1107,226,677,224,102,2,223,223,1006,224,359,101,1,223,223,1007,226,226,224,102,2,223,223,1006,224,374,101,1,223,223,7,677,677,224,102,2,223,223,1005,224,389,1001,223,1,223,108,677,677,224,1002,223,2,223,1005,224,404,101,1,223,223,1008,226,226,224,102,2,223,223,1005,224,419,1001,223,1,223,1107,677,226,224,102,2,223,223,1005,224,434,1001,223,1,223,1108,677,677,224,102,2,223,223,1006,224,449,1001,223,1,223,7,226,677,224,102,2,223,223,1005,224,464,101,1,223,223,1008,677,677,224,102,2,223,223,1005,224,479,101,1,223,223,1007,226,677,224,1002,223,2,223,1006,224,494,101,1,223,223,8,677,226,224,1002,223,2,223,1005,224,509,101,1,223,223,1007,677,677,224,1002,223,2,223,1006,224,524,101,1,223,223,107,226,226,224,102,2,223,223,1006,224,539,101,1,223,223,107,226,677,224,102,2,223,223,1005,224,554,1001,223,1,223,7,677,226,224,102,2,223,223,1006,224,569,1001,223,1,223,107,677,677,224,1002,223,2,223,1005,224,584,101,1,223,223,1107,677,677,224,102,2,223,223,1005,224,599,101,1,223,223,1108,226,677,224,102,2,223,223,1006,224,614,101,1,223,223,8,226,226,224,102,2,223,223,1006,224,629,101,1,223,223,108,226,677,224,102,2,223,223,1005,224,644,1001,223,1,223,108,226,226,224,102,2,223,223,1005,224,659,101,1,223,223,1108,677,226,224,102,2,223,223,1006,224,674,1001,223,1,223,4,223,99,226 diff --git a/2019/src/main/resources/day06.txt b/2019/src/main/resources/day06.txt new file mode 100644 index 0000000..2364732 --- /dev/null +++ b/2019/src/main/resources/day06.txt @@ -0,0 +1,1062 @@ +XNR)9W1 +VGS)XCW +WS5)5XM +T9F)RTN +RQ8)67Q +1WV)YS3 +V69)VCK +65J)756 +ZLV)DZ2 +1GM)JCS +SW3)DFT +LF8)P6Z +VDS)W5H +RMK)5BK +48J)VGR +LQF)LGD +KRW)FVR +BDP)TRT +D7B)SHH +LB4)1SJ +4ZH)127 +YFJ)RQP +KS1)93V +L2J)MRG +VXQ)NR2 +HNL)9HZ +RRK)B98 +KM5)86H +DSW)DRS +XXB)KQT +YDQ)VQ3 +RX9)V7D +CFJ)RHM +4MD)SW3 +7G4)LZ8 +Z34)NTS +RW1)89Y +X5Q)1GM +NVY)TC7 +4TR)PV8 +T28)1QV +PMM)62K +NG1)KKT +B7N)RH4 +T1F)3QJ +19P)V2V +2SB)SY2 +PV8)J3H +TRP)RMK +RWW)9TY +3N7)9F8 +92D)C1N +GLC)TNW +LF8)W7C +TT3)YHN +RKK)NK6 +SL6)ZCH +K4V)NXP +SXT)VQT +VQV)QDJ +PQ4)K84 +KXN)GMT +JN9)SBR +84X)QPY +HQM)SS4 +H1T)W18 +ZRQ)LVY +NY1)BLY +DRS)71Q +F26)RQ8 +TH2)THY +T35)ZC1 +TBH)LQF +2NK)2XM +PY5)N5Q +M69)345 +99P)92S +C22)3YW +Q9T)N5N +KQJ)1CV +FCK)VDS +43S)SQY +FTZ)T1G +57L)GVB +RG5)QSW +7LJ)HWL +VF4)HXG +XZ6)MDZ +5HS)M6Q +YSY)BCZ +GJZ)1DH +SSB)WXT +T1G)K39 +8QC)8RX +H7M)8G3 +PB9)BS3 +518)1X8 +4V7)2S6 +4V3)MH3 +BLY)XXB +XJL)DD4 +WMM)3VV +XTW)77B +ZKJ)VXJ +FVR)CFJ +G54)SGB +YHN)5LW +5CK)V4J +LVY)339 +V6S)QX3 +GQ5)4MB +GXH)ZGD +YPX)S1G +5PH)1BX +THJ)2NK +9ND)K9D +89Z)52F +79P)S6R +DH9)XHZ +8RX)4MD +T1L)GL4 +7TT)5K2 +V81)6CP +22F)ZD2 +ZXC)QWZ +QLT)VH6 +4SG)HDF +N82)S9Y +MQM)6KF +KDX)BKX +471)1KX +4JL)Y5R +XQX)RLC +Y9L)X4G +V9J)89P +H5V)MZ2 +TNX)1JM +694)KWK +C5W)D6Q +SZL)XB3 +CY8)4ZL +NCW)NVY +J75)L2J +KQT)35G +Z6V)DD2 +NZ7)DN6 +P56)PW3 +1VY)41W +MFN)SQQ +2H1)LPH +NTW)DSW +KRK)LTQ +71R)LF8 +9ZM)PW7 +11J)WW6 +1Y9)V6K +T71)XZK +5PH)PVL +4ZL)TYX +ZMY)FBQ +KTY)D7B +MR3)SG4 +3P6)1ZN +XV9)P46 +RHG)J6S +JWF)22F +H1T)J6R +1JT)NB7 +T4V)Z34 +8NV)P3V +RLR)KZ7 +24G)KQJ +H7S)WRN +QC2)D8G +T7N)3KM +QVG)RX9 +Y94)XXN +MZ2)G54 +P46)MHZ +VKC)WMM +M8M)F5C +Q43)DLM +8S2)2B6 +8NG)QT4 +YRY)NMB +HCB)S93 +K3N)Z9G +2MM)KYH +H64)DQR +9TY)RZ7 +8SY)4SV +QWZ)W6P +Q39)4XQ +NKW)VL3 +HDF)B1K +NC3)QGY +645)VHG +CK3)M3J +MZS)7W1 +P5B)C85 +3VV)9LD +62K)ZQS +T7R)V5L +5YC)JTD +VD6)TQ9 +NB7)7Z8 +1SL)CWF +ZM9)Z31 +LMH)RWP +SQD)H64 +JXG)TH2 +5VN)J51 +F9T)4WH +LGD)2J5 +37P)47V +K2H)FD2 +82L)7Z1 +TYF)C22 +NTG)V3H +NB4)4DW +83C)53T +CNS)KM5 +FZT)XXJ +SD2)WPL +PC4)4WZ +CK3)P5Z +M82)TNR +F1V)PB9 +T1X)LX5 +8P1)V9H +1SL)K3N +V69)ZG2 +52F)YPX +1X8)NY1 +1CV)L2S +SG4)DZ4 +Y1X)PRC +RRJ)NTG +BDD)8M6 +V4J)2FB +LTM)84B +NMX)RDY +3CD)YMW +47V)YGN +JBH)DXW +36G)XQX +XF1)D8R +8M6)L2Q +YKC)5CK +92S)LBP +B3R)W31 +CLR)MMQ +WRN)QLT +2KG)FZQ +TL4)71R +7DQ)KDX +M3J)W6Q +S23)PC4 +2XM)Z78 +S1G)8YY +H7M)8P1 +SC9)SXT +1JM)XV9 +XN5)M69 +58B)ZM9 +9N6)YKC +4DW)ZLV +1D7)4YN +ZQ5)6RM +PRT)371 +PVX)WNN +VCK)CP4 +VH2)CZN +T1W)J32 +3V2)HCP +G2Y)TML +BN2)ZY3 +J75)PBS +LX5)DHB +9P9)KM3 +1CG)KG7 +NMT)72B +KZ7)YZC +82G)1Y9 +ZTM)8P3 +1TD)645 +1D3)LMH +W45)YXR +XB1)TFX +RTC)5N3 +W7C)2KG +GJB)92D +SMG)63B +TJV)P4Y +CB1)HN8 +PV8)V5P +PBS)7YW +GWK)9P9 +V3N)DX6 +TQ9)K4V +QT6)KXN +H58)1TD +YGN)ZTM +DY1)3N7 +HLB)SZL +LK7)TJV +NNW)LG3 +284)11J +RZD)84X +K1M)HG8 +RH4)MS8 +29Q)HNL +ML6)JQY +8NG)38H +Z31)HQM +M6P)B4S +FR2)B6Q +BCZ)MVV +9TY)BKD +Q3P)315 +76Q)XJL +V9N)ZNH +992)78T +P16)329 +CQB)H4N +984)SVB +V6K)SQD +LTQ)V8Q +7Z1)NSJ +C4R)ZZF +QSM)RC3 +LGC)GTH +SHH)4BH +PW3)HVJ +BG7)DCT +MB8)S23 +XJ9)C78 +P3V)GJB +CQ4)64Y +84B)8J3 +F97)DPQ +KYH)TYF +5KL)LVD +F5C)TRP +YK8)211 +Q8Z)NPK +TC7)65K +BR5)XFS +CP9)3B5 +RRK)Q8Z +W6Q)WW2 +5RH)Q43 +82P)ZKJ +211)96N +NXP)JY5 +CY3)C5W +WLB)1JD +X19)LDD +6PN)T7R +HXG)GP4 +PCW)82G +B5B)K4S +3QJ)694 +57J)7TT +KXS)GTP +GWM)NDV +BVX)3S8 +ZQS)RZD +77B)T9F +6GT)FFP +N37)TW1 +GNC)KRW +WC5)213 +GYV)FG9 +KKT)G9L +SSB)X2Y +SBR)2FC +LPQ)BB7 +84R)9MV +CVD)R26 +7YJ)SS3 +T1M)9TG +WBF)2T4 +Z8H)L93 +339)TNX +V5P)XTW +YYP)YTS +5N3)9MM +WR3)RFV +BR5)18Q +NC3)35Y +MS8)PHX +65K)9FR +HL5)MR3 +Z95)9X1 +QDH)SF4 +5WG)WLJ +TRT)1V3 +P29)Q3P +K64)CVX +5XB)KMV +V4J)YV5 +RR1)6FT +NDV)D1L +DD2)QT8 +CQB)XNH +DP1)YY8 +5CK)SC9 +LL4)RW9 +V5L)SMG +XJL)5XB +156)R6L +6QH)V69 +SS4)VR1 +VXJ)5KL +RXH)471 +T12)HZZ +YVF)6WP +JVF)S1B +FBQ)2RT +B1Z)GXH +C38)L96 +QX4)WG2 +TML)GDW +9FJ)RR1 +FD2)PVQ +KHL)28C +BM4)4J5 +QHT)SD2 +1PF)BDF +VJW)8GJ +ZY3)7RJ +7BN)13W +RW9)QV5 +QVG)1VY +BQZ)V9N +BB7)VWM +J51)NCL +KGL)W1F +RWP)VD6 +XXJ)6V2 +P6Q)WQT +P6N)Y8N +BKX)WJH +DRW)B7N +LX9)G7D +J3H)DRW +WXT)3V2 +JRV)K2H +PC3)DSV +PDR)KS1 +F7M)9N9 +LVD)6ZT +QX4)4YT +RJB)DSK +94Y)G3K +VW2)H5V +QT8)P5B +18Q)LGC +V9H)QT6 +GQL)CLR +NSN)CBT +LX9)S71 +KMV)NB4 +ZGD)51C +1SJ)6SN +KYH)WL3 +2N9)36G +KXV)WC5 +THQ)LX9 +77K)CQ4 +WW2)THJ +YZC)R9C +1V3)FZT +12H)NC3 +SK7)ZH7 +LJ7)JBH +BS8)ZQG +YHX)649 +Y5R)JH9 +RWY)2M8 +3YW)7W6 +X6L)6QH +K9D)V6S +K4S)33C +GMT)5CY +XWD)PQS +24H)WLB +CCL)Z12 +87W)5HS +2WV)YYP +1DH)8S2 +JCS)1NL +X4G)9T2 +JC7)XK9 +RFR)PCW +J6S)WR3 +RB2)GQL +SF4)TH3 +CVX)284 +JQY)R2P +ZCH)HF1 +6S4)NTW +WQT)RVP +FZQ)F1V +K92)DJC +H5V)8GF +DVP)CM5 +KM3)2KZ +YS3)LH7 +RVP)2WV +WLW)DVP +93V)M2R +QL1)CQB +N41)VRS +Z78)WLW +ZZG)JWF +NSJ)PDR +PVQ)C4R +CWF)MWD +DC5)4F8 +4WZ)56P +KMC)KZ6 +7QB)87W +HNR)TL4 +WLZ)CB1 +WJH)J2B +K6P)ZKM +L2L)H3G +2KZ)4M2 +B1K)KMC +984)XZ6 +D8G)5VN +4ZL)8Q8 +18J)V9J +7QT)6M5 +1JM)G2Y +P6Z)PDZ +WPL)24H +WY3)BGP +18Y)4V1 +C85)GYH +N5Q)HM2 +2LL)VGS +J3N)6RW +NTS)LL4 +4V1)L2L +FVY)KXS +1QQ)PC3 +2KZ)8NG +3KM)2DR +83B)T7N +SD2)V81 +SGB)93K +DZK)CVD +9WS)6S4 +7Z8)LBV +41Q)NSN +SCJ)ZRQ +Z29)QC2 +DX6)QLL +KST)CMK +MXR)5Z9 +Y9Z)8RY +45F)Y9Z +YY8)V3N +NCL)63Z +527)CP9 +WNN)RRK +DP1)MB8 +6V2)FC9 +9N9)7WG +6WP)V58 +WW2)C38 +DSK)3CD +N7R)KHX +2B6)QVG +BN1)8LC +4XQ)N5S +MMQ)H58 +41W)6PW +TX5)NMT +C4R)T1W +VHG)VJT +8ZM)WH1 +71Q)KTY +38H)NNW +J86)PBZ +8H2)4L4 +9MM)FKP +PVL)82L +LBP)3X1 +MTN)QL1 +67Q)FCK +P56)DZK +HG8)BG7 +GPN)YK4 +6N5)776 +Z25)NZY +GKK)37P +GVB)9YM +Y8N)Y94 +7MP)3T6 +3VV)PMM +5Z9)JN9 +RLK)7RB +G4T)HXR +BDM)B6P +NNT)NCW +9F8)6HN +33C)5YV +DG4)BN1 +3T6)VGM +RC3)KJ9 +7RB)1PF +3D7)PS1 +8RY)T35 +R2P)K92 +6HN)6PN +84M)MXR +MH3)YFJ +ZQ5)P56 +YXR)J3N +2QN)YDQ +QGY)NKW +DFT)C6Z +DD4)H8T +756)984 +15H)9WS +FVJ)P16 +127)48J +SQY)HLB +4J5)Y1X +V1X)Q9N +MMT)MZS +K84)RWY +THY)FH5 +776)VXM +276)YRY +DCT)2MM +2FB)PD8 +RFV)8X1 +2J5)T1M +76S)GQW +5K2)RNM +44V)GWM +XP8)ZXC +WC5)6GT +72B)7RL +5JV)FG8 +VQ3)GFT +QDJ)X19 +HC9)126 +D7B)PQ4 +Y4Z)ZMY +SVB)LKF +YQL)436 +VR1)18Y +35Y)VH2 +7W6)CNS +8GF)T92 +4MB)FR1 +JPK)9DF +6RW)H1T +LKF)G2K +4F8)8HT +DXW)BM4 +BS3)N82 +CP4)89K +339)Y9L +FG9)5WZ +JK9)3ZV +ZC1)8LW +8YY)CY3 +W18)WLZ +NZY)HD8 +35G)5RH +213)9C5 +DN6)G4T +FH5)WFN +H1B)Q4H +8J3)BDM +9FR)TDJ +GQW)M8M +SLN)VJX +1ZN)7XL +6ZT)HF9 +KJ9)2JV +7XL)X6L +LB4)Q39 +1RW)57L +DJS)YVF +4YN)SCJ +C1N)GKK +YK4)LK8 +7BK)83C +371)JK9 +6X3)PB5 +TVK)G5P +H51)FTZ +1GP)SNH +5LT)RBX +5XM)1TW +6SN)QHT +78X)5LT +4WH)N41 +DZ2)MJV +5YV)KXV +6YP)RZ4 +H4N)QX4 +S1B)V1X +HXR)97J +DLM)B3R +VRS)3P6 +Z19)FR2 +B6Q)2QN +5XM)XY5 +TJV)CCL +BXC)J1L +89P)Q6W +J3N)RLK +X4Z)F9T +ZNM)18J +15S)M41 +ZZF)XP8 +2N1)M6P +ZNH)W2N +3HQ)F26 +R9C)SSB +M6Q)WBF +P5Z)6N5 +WW6)YHX +KQJ)G15 +DJC)4NG +ZY8)9N6 +HVJ)Q9G +DVN)B1Z +PS1)JZV +6PW)CVW +LPH)Z19 +6KF)K1M +QT4)94Y +1GM)3CS +GFT)PCP +6PW)X9L +4NG)8H2 +KN5)VXY +WP9)84R +VJT)Y4Z +7RJ)99P +KZ7)BD5 +K39)ZNX +RZ4)VF4 +6CP)K64 +RQP)Z3F +JTD)T1X +XNH)Z6V +TH3)RKK +DXC)RW1 +1JD)T4V +1FX)15S +63Z)JPK +QKV)6JH +Z3P)SAN +G15)4V7 +6XM)P62 +TNW)N37 +QM4)G1T +YV5)3HQ +VQT)4SG +SS3)R12 +K1M)WP9 +S71)7LJ +7JY)2SB +JZV)7QV +BVX)D56 +RXH)LK7 +SF1)8JV +ZNX)YSY +SWP)QQ7 +89Y)78X +6FT)YBY +VJX)YK8 +M2R)TWF +V3H)2LL +4J5)DP1 +XFS)Z25 +Z3F)DVN +KTY)2XG +1VK)ZQ5 +4L4)KR3 +XY5)BDP +TNR)43S +1BX)DXZ +HF1)8SY +8P3)HL5 +LL4)KST +DSV)6XM +2FC)3RK +Y27)RLR +HF9)JRV +6RM)HZ9 +G2K)SWP +ZQG)XWD +1TW)46P +YTS)YOU +636)KP2 +MXR)MTN +T92)F9H +XB3)1GQ +8HT)T28 +9YM)Y27 +8Q8)JRY +R6L)TT3 +QPY)JVF +D6Q)X5Q +LDD)45F +636)RTC +X9L)B5B +B7B)7QB +CMK)276 +7YW)P6Q +WG2)8ZM +WFN)LYB +Z12)FWP +276)992 +5DK)15H +WL3)4FV +G3K)9WW +X2Y)LB4 +J4H)L8G +WH1)M82 +JH9)JXG +7QB)2H1 +3RK)1GP +L2S)7MP +JVC)ZNM +LZ8)DH9 +B6Z)SF1 +RHM)T1L +LYB)2N1 +D8R)7YJ +K8Q)24G +DXZ)156 +BDM)4TR +L96)PVX +RLC)BXC +BDF)58B +GTH)DXC +W6P)ZY8 +XCW)K6P +Q4H)VJW +56P)WY3 +2RT)VQV +1KX)Q9T +78T)FVY +X6C)G5Q +HWL)4M5 +W31)4V3 +BD5)GNC +LZ8)KCC +M41)3D7 +P6G)BN2 +DHB)DJS +G9L)964 +T1G)TBH +471)RS6 +VL3)LTM +V7D)1D7 +N5N)XN5 +MDZ)GJZ +86H)FWL +315)NG1 +6FT)Q8S +5PD)F97 +HD8)T1F +NPK)1JT +KZ6)CY8 +YMW)TVK +PBZ)DC5 +RS6)GLC +PCP)6YP +KM5)B7B +8LW)BR5 +9T2)Z3P +Q8S)5YC +VGR)W45 +YZC)9FJ +L93)83B +TYX)5PH +J32)K8Q +QC2)QM4 +RZD)BDD +G5Q)SK7 +THB)5WG +FR1)QSM +NDV)57J +DQR)1D3 +YBY)9YW +XMQ)BQZ +B4S)82P +3S8)LJ7 +XHZ)H51 +JRY)TX5 +7WG)77K +4DR)B6T +3ZV)J86 +9YW)VKC +1GQ)NZ7 +RS4)5DK +CM5)1CG +VXM)J12 +VZS)GPN +G7D)GYV +S9Y)RXH +R2Q)QKV +ZM9)9RZ +GJB)Z95 +G5P)X6C +D4W)47X +4YT)1FX +CVW)1WV +ZJZ)T71 +R26)12H +4M2)L21 +MRG)7G4 +HNJ)VW2 +3B5)RJB +H3G)XMQ +G1T)7BK +PW7)65J +ZD2)3RP +XXN)84W +FWP)KN5 +5BK)GCC +V2V)7FC +VGM)SL6 +NK6)7BN +SQQ)YQL +FKP)1VK +47V)6ZH +J1L)RB2 +J4F)5JV +LG3)527 +MS8)TN8 +JTH)THQ +DXW)QDH +TRP)461 +5LW)N7R +RTN)HNJ +97J)SLN +L8G)FVJ +F9H)5PD +HN8)518 +51C)1QQ +PHX)P6G +63B)2N9 +Q6W)THB +J6R)H7M +K6X)JTH +46P)83D +13W)VZS +RWP)W4D +Y9L)BNG +9WW)KYT +HZ9)89Z +J2B)636 +RNM)7QT +PCP)T6S +NXP)9ZM +V9S)RG5 +7W6)41Q +7MP)WS5 +CBT)GLM +6JH)VK2 +2S6)XF1 +SY2)V2S +7W1)19P +V8Q)BVX +TW1)KHL +28J)NJ2 +PB5)Q4T +3CS)KGL +VK2)79P +W4D)4PK +GCC)XJ9 +NCG)MQM +V58)H7S +1NL)BS8 +GTP)ZJZ +Q9G)ZZG +3YX)Z29 +PQS)6XK +8LC)84M +ZH7)PRT +KWK)HCB +18Q)Z8H +4BH)76Q +QV5)T12 +G4T)P6N +TWF)RFR +8JV)GTZ +LBV)RWW +C6Z)1SL +9C5)MFN +QSW)7DQ +PD8)D4W +RLR)KRK +PDZ)76S +Z9G)8NV +WLJ)VXQ +96N)GWK +345)4ZH +NR2)HNR +P4Y)CK3 +D1L)J4F +JY5)NNT +9TG)28J +HCP)44V +BNG)X4Z +8GJ)4JL +329)J75 +5WZ)L62 +Q8S)MMT +PRC)3YX +KCC)29Q +GLM)26P +KR3)R2Q +1QV)J4H +8G3)XB1 +S6R)DG4 +CZN)8G6 +5CY)GQ5 +V2S)1PV +4V1)LPQ +N5S)H1B +3RP)1RW +4PK)NCG +COM)V9S +3HQ)8QC +9RZ)NMX +BKD)RRJ +GP4)XTN +28C)JC7 +4M5)DY1 +L21)9ND +QM4)7JY +RKK)HC9 +9HZ)PY5 +2JV)ZYP +84W)6X3 +S93)RS4 +P62)K6X +53T)5VM +KP2)B6Z +R12)JVC +2XG)ML6 +26P)XNR +GWM)4DR +GDW)F7M +DQR)P29 +89K)RHG diff --git a/buildSrc/src/main/kotlin/java-convention.gradle.kts b/buildSrc/src/main/kotlin/java-convention.gradle.kts index c2ebb15..8be33e9 100644 --- a/buildSrc/src/main/kotlin/java-convention.gradle.kts +++ b/buildSrc/src/main/kotlin/java-convention.gradle.kts @@ -20,4 +20,5 @@ java { tasks.withType { options.encoding = "UTF-8" + options.compilerArgs.add("--enable-preview") }