class Day14 {

    fun part1(input: List<String>): Int {
        val rocks = mapToRocks(input)
        return Cave(rocks).dropSand()
    }

    fun part2(input: List<String>): Int {
        val rocks = mapToRocks(input)
        return Cave(rocks, true).dropSandWithFloor()
    }

    private fun mapToRocks(input: List<String>) = input.flatMap {
        it.split(" -> ")
            .windowed(2)
            .flatMap { (line1, line2) -> mapToPoints(line1, line2) }
    }.toSet()

    private fun mapToPoints(line1: String, line2: String): List<Point> {
        val (p1x, p1y) = line1.split(",").map { it.toInt() }
        val (p2x, p2y) = line2.split(",").map { it.toInt() }
        val xRange = if (p1x <= p2x) p1x..p2x else p2x..p1x
        val yRange = if (p1y <= p2y) p1y..p2y else p2y..p1y
        return (xRange).flatMap { x -> (yRange).map { y -> Point(x, y) } }
    }

    data class Point(val x: Int, val y: Int) {
        fun possibleMovesDown(): List<Point> {
            return listOf(
                Point(x, y + 1),
                Point(x - 1, y + 1),
                Point(x + 1, y + 1)
            )
        }
    }

    class Cave(rocks: Set<Point>, withFloor: Boolean = false) {
        private val sandPoint = Point(500, 0)
        private val rocksAndFloor = mutableSetOf<Point>()
        private val sand = mutableSetOf<Point>()
        private var lowestRock = 0

        init {
            rocksAndFloor.addAll(rocks)
            lowestRock = if (withFloor) {
                val floorLevel = rocks.map { it.y }.max() + 2
                val floor = createFloor(rocks, floorLevel)
                rocksAndFloor.addAll(floor)
                floorLevel
            } else {
                rocks.map { it.y }.max()
            }
        }

        private fun createFloor(rocks: Set<Point>, floorLevel: Int): List<Point> {
            val offset = rocks.map { it.y }.max()
            val minX = rocks.map { it.x }.min() - offset
            val maxX = rocks.map { it.x }.max() + offset
            return (minX..maxX).map { Point(it, floorLevel) }
        }

        fun dropSand(): Int {
            var nextSpot = findLandingPlace(sandPoint)
            while (nextSpot != null && nextSpot != sandPoint) {
                sand.add(nextSpot)
                nextSpot = findLandingPlace(sandPoint)
            }
            draw()
            return sand.size
        }

        fun dropSandWithFloor(): Int {
            return dropSand() + 1
        }

        private fun findLandingPlace(current: Point): Point? {
            if (current.y > lowestRock) return null
            val nextPoint = current.possibleMovesDown().firstOrNull { it !in rocksAndFloor && it !in sand }
            return when (nextPoint) {
                null -> current
                else -> findLandingPlace(nextPoint)
            }
        }

        private fun draw() {
            val all = mutableListOf<Point>().apply {
                addAll(rocksAndFloor)
                addAll(sand)
            }
            val minX = all.map { it.x }.min()
            val maxX = all.map { it.x }.max()
            val maxY = all.map { it.y }.max()
            for (y in 0..maxY) {
                for (x in minX..maxX) {
                    when (Point(x, y)) {
                        Point(500, 0) -> print('+')
                        in rocksAndFloor -> print('#')
                        in sand -> print('o')
                        else -> print('.')
                    }
                    if (x == maxX) {
                        println()
                    }
                }
            }
        }
    }

}

Compiled from "Day14.kt"
public final class Day14$Cave {
  private final Day14$Point sandPoint;

  private final java.util.Set<Day14$Point> rocksAndFloor;

  private final java.util.Set<Day14$Point> sand;

  private int lowestRock;

  public Day14$Cave(java.util.Set<Day14$Point>, boolean);
    Code:
       0: aload_1
       1: ldc           #10                 // String rocks
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokespecial #19                 // Method java/lang/Object."<init>":()V
      10: aload_0
      11: new           #21                 // class Day14$Point
      14: dup
      15: sipush        500
      18: iconst_0
      19: invokespecial #24                 // Method Day14$Point."<init>":(II)V
      22: putfield      #28                 // Field sandPoint:LDay14$Point;
      25: aload_0
      26: new           #30                 // class java/util/LinkedHashSet
      29: dup
      30: invokespecial #31                 // Method java/util/LinkedHashSet."<init>":()V
      33: checkcast     #33                 // class java/util/Set
      36: putfield      #37                 // Field rocksAndFloor:Ljava/util/Set;
      39: aload_0
      40: new           #30                 // class java/util/LinkedHashSet
      43: dup
      44: invokespecial #31                 // Method java/util/LinkedHashSet."<init>":()V
      47: checkcast     #33                 // class java/util/Set
      50: putfield      #40                 // Field sand:Ljava/util/Set;
      53: nop
      54: aload_0
      55: getfield      #37                 // Field rocksAndFloor:Ljava/util/Set;
      58: aload_1
      59: checkcast     #42                 // class java/util/Collection
      62: invokeinterface #46,  2           // InterfaceMethod java/util/Set.addAll:(Ljava/util/Collection;)Z
      67: pop
      68: aload_0
      69: iload_2
      70: ifeq          223
      73: aload_1
      74: checkcast     #48                 // class java/lang/Iterable
      77: astore        4
      79: astore        13
      81: iconst_0
      82: istore        5
      84: aload         4
      86: astore        6
      88: new           #50                 // class java/util/ArrayList
      91: dup
      92: aload         4
      94: bipush        10
      96: invokestatic  #56                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      99: invokespecial #59                 // Method java/util/ArrayList."<init>":(I)V
     102: checkcast     #42                 // class java/util/Collection
     105: astore        7
     107: iconst_0
     108: istore        8
     110: aload         6
     112: invokeinterface #63,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     117: astore        9
     119: aload         9
     121: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     126: ifeq          172
     129: aload         9
     131: invokeinterface #73,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     136: astore        10
     138: aload         7
     140: aload         10
     142: checkcast     #21                 // class Day14$Point
     145: astore        11
     147: astore        14
     149: iconst_0
     150: istore        12
     152: aload         11
     154: invokevirtual #77                 // Method Day14$Point.getY:()I
     157: invokestatic  #83                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     160: aload         14
     162: swap
     163: invokeinterface #87,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     168: pop
     169: goto          119
     172: aload         7
     174: checkcast     #89                 // class java/util/List
     177: nop
     178: aload         13
     180: swap
     181: checkcast     #48                 // class java/lang/Iterable
     184: invokestatic  #93                 // Method kotlin/collections/CollectionsKt.maxOrThrow:(Ljava/lang/Iterable;)Ljava/lang/Comparable;
     187: checkcast     #95                 // class java/lang/Number
     190: invokevirtual #98                 // Method java/lang/Number.intValue:()I
     193: iconst_2
     194: iadd
     195: istore_3
     196: aload_0
     197: aload_1
     198: iload_3
     199: invokespecial #102                // Method createFloor:(Ljava/util/Set;I)Ljava/util/List;
     202: astore        4
     204: aload_0
     205: getfield      #37                 // Field rocksAndFloor:Ljava/util/Set;
     208: aload         4
     210: checkcast     #42                 // class java/util/Collection
     213: invokeinterface #46,  2           // InterfaceMethod java/util/Set.addAll:(Ljava/util/Collection;)Z
     218: pop
     219: iload_3
     220: goto          340
     223: aload_1
     224: checkcast     #48                 // class java/lang/Iterable
     227: astore_3
     228: astore        13
     230: iconst_0
     231: istore        4
     233: aload_3
     234: astore        5
     236: new           #50                 // class java/util/ArrayList
     239: dup
     240: aload_3
     241: bipush        10
     243: invokestatic  #56                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     246: invokespecial #59                 // Method java/util/ArrayList."<init>":(I)V
     249: checkcast     #42                 // class java/util/Collection
     252: astore        6
     254: iconst_0
     255: istore        7
     257: aload         5
     259: invokeinterface #63,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     264: astore        8
     266: aload         8
     268: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     273: ifeq          319
     276: aload         8
     278: invokeinterface #73,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     283: astore        9
     285: aload         6
     287: aload         9
     289: checkcast     #21                 // class Day14$Point
     292: astore        10
     294: astore        14
     296: iconst_0
     297: istore        11
     299: aload         10
     301: invokevirtual #77                 // Method Day14$Point.getY:()I
     304: invokestatic  #83                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     307: aload         14
     309: swap
     310: invokeinterface #87,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     315: pop
     316: goto          266
     319: aload         6
     321: checkcast     #89                 // class java/util/List
     324: nop
     325: aload         13
     327: swap
     328: checkcast     #48                 // class java/lang/Iterable
     331: invokestatic  #93                 // Method kotlin/collections/CollectionsKt.maxOrThrow:(Ljava/lang/Iterable;)Ljava/lang/Comparable;
     334: checkcast     #95                 // class java/lang/Number
     337: invokevirtual #98                 // Method java/lang/Number.intValue:()I
     340: putfield      #106                // Field lowestRock:I
     343: nop
     344: return

  public Day14$Cave(java.util.Set, boolean, int, kotlin.jvm.internal.DefaultConstructorMarker);
    Code:
       0: iload_3
       1: iconst_2
       2: iand
       3: ifeq          8
       6: iconst_0
       7: istore_2
       8: aload_0
       9: aload_1
      10: iload_2
      11: invokespecial #128                // Method "<init>":(Ljava/util/Set;Z)V
      14: return

  private final java.util.List<Day14$Point> createFloor(java.util.Set<Day14$Point>, int);
    Code:
       0: aload_1
       1: checkcast     #48                 // class java/lang/Iterable
       4: astore        4
       6: iconst_0
       7: istore        5
       9: aload         4
      11: astore        6
      13: new           #50                 // class java/util/ArrayList
      16: dup
      17: aload         4
      19: bipush        10
      21: invokestatic  #56                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      24: invokespecial #59                 // Method java/util/ArrayList."<init>":(I)V
      27: checkcast     #42                 // class java/util/Collection
      30: astore        7
      32: iconst_0
      33: istore        8
      35: aload         6
      37: invokeinterface #63,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      42: astore        9
      44: aload         9
      46: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      51: ifeq          97
      54: aload         9
      56: invokeinterface #73,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      61: astore        10
      63: aload         7
      65: aload         10
      67: checkcast     #21                 // class Day14$Point
      70: astore        11
      72: astore        15
      74: iconst_0
      75: istore        12
      77: aload         11
      79: invokevirtual #77                 // Method Day14$Point.getY:()I
      82: invokestatic  #83                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      85: aload         15
      87: swap
      88: invokeinterface #87,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
      93: pop
      94: goto          44
      97: aload         7
      99: checkcast     #89                 // class java/util/List
     102: nop
     103: checkcast     #48                 // class java/lang/Iterable
     106: invokestatic  #93                 // Method kotlin/collections/CollectionsKt.maxOrThrow:(Ljava/lang/Iterable;)Ljava/lang/Comparable;
     109: checkcast     #95                 // class java/lang/Number
     112: invokevirtual #98                 // Method java/lang/Number.intValue:()I
     115: istore_3
     116: aload_1
     117: checkcast     #48                 // class java/lang/Iterable
     120: astore        5
     122: iconst_0
     123: istore        6
     125: aload         5
     127: astore        7
     129: new           #50                 // class java/util/ArrayList
     132: dup
     133: aload         5
     135: bipush        10
     137: invokestatic  #56                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     140: invokespecial #59                 // Method java/util/ArrayList."<init>":(I)V
     143: checkcast     #42                 // class java/util/Collection
     146: astore        8
     148: iconst_0
     149: istore        9
     151: aload         7
     153: invokeinterface #63,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     158: astore        10
     160: aload         10
     162: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     167: ifeq          213
     170: aload         10
     172: invokeinterface #73,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     177: astore        11
     179: aload         8
     181: aload         11
     183: checkcast     #21                 // class Day14$Point
     186: astore        12
     188: astore        15
     190: iconst_0
     191: istore        13
     193: aload         12
     195: invokevirtual #132                // Method Day14$Point.getX:()I
     198: invokestatic  #83                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     201: aload         15
     203: swap
     204: invokeinterface #87,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     209: pop
     210: goto          160
     213: aload         8
     215: checkcast     #89                 // class java/util/List
     218: nop
     219: checkcast     #48                 // class java/lang/Iterable
     222: invokestatic  #135                // Method kotlin/collections/CollectionsKt.minOrThrow:(Ljava/lang/Iterable;)Ljava/lang/Comparable;
     225: checkcast     #95                 // class java/lang/Number
     228: invokevirtual #98                 // Method java/lang/Number.intValue:()I
     231: iload_3
     232: isub
     233: istore        4
     235: aload_1
     236: checkcast     #48                 // class java/lang/Iterable
     239: astore        6
     241: iconst_0
     242: istore        7
     244: aload         6
     246: astore        8
     248: new           #50                 // class java/util/ArrayList
     251: dup
     252: aload         6
     254: bipush        10
     256: invokestatic  #56                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     259: invokespecial #59                 // Method java/util/ArrayList."<init>":(I)V
     262: checkcast     #42                 // class java/util/Collection
     265: astore        9
     267: iconst_0
     268: istore        10
     270: aload         8
     272: invokeinterface #63,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     277: astore        11
     279: aload         11
     281: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     286: ifeq          332
     289: aload         11
     291: invokeinterface #73,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     296: astore        12
     298: aload         9
     300: aload         12
     302: checkcast     #21                 // class Day14$Point
     305: astore        13
     307: astore        15
     309: iconst_0
     310: istore        14
     312: aload         13
     314: invokevirtual #132                // Method Day14$Point.getX:()I
     317: invokestatic  #83                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     320: aload         15
     322: swap
     323: invokeinterface #87,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     328: pop
     329: goto          279
     332: aload         9
     334: checkcast     #89                 // class java/util/List
     337: nop
     338: checkcast     #48                 // class java/lang/Iterable
     341: invokestatic  #93                 // Method kotlin/collections/CollectionsKt.maxOrThrow:(Ljava/lang/Iterable;)Ljava/lang/Comparable;
     344: checkcast     #95                 // class java/lang/Number
     347: invokevirtual #98                 // Method java/lang/Number.intValue:()I
     350: iload_3
     351: iadd
     352: istore        5
     354: new           #137                // class kotlin/ranges/IntRange
     357: dup
     358: iload         4
     360: iload         5
     362: invokespecial #138                // Method kotlin/ranges/IntRange."<init>":(II)V
     365: checkcast     #48                 // class java/lang/Iterable
     368: astore        6
     370: iconst_0
     371: istore        7
     373: aload         6
     375: astore        8
     377: new           #50                 // class java/util/ArrayList
     380: dup
     381: aload         6
     383: bipush        10
     385: invokestatic  #56                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     388: invokespecial #59                 // Method java/util/ArrayList."<init>":(I)V
     391: checkcast     #42                 // class java/util/Collection
     394: astore        9
     396: iconst_0
     397: istore        10
     399: aload         8
     401: invokeinterface #63,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     406: astore        11
     408: aload         11
     410: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     415: ifeq          461
     418: aload         11
     420: checkcast     #140                // class kotlin/collections/IntIterator
     423: invokevirtual #143                // Method kotlin/collections/IntIterator.nextInt:()I
     426: istore        12
     428: aload         9
     430: iload         12
     432: istore        13
     434: astore        15
     436: iconst_0
     437: istore        14
     439: new           #21                 // class Day14$Point
     442: dup
     443: iload         13
     445: iload_2
     446: invokespecial #24                 // Method Day14$Point."<init>":(II)V
     449: aload         15
     451: swap
     452: invokeinterface #87,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     457: pop
     458: goto          408
     461: aload         9
     463: checkcast     #89                 // class java/util/List
     466: nop
     467: areturn

  public final int dropSand();
    Code:
       0: aload_0
       1: aload_0
       2: getfield      #28                 // Field sandPoint:LDay14$Point;
       5: invokespecial #155                // Method findLandingPlace:(LDay14$Point;)LDay14$Point;
       8: astore_1
       9: aload_1
      10: ifnull        47
      13: aload_1
      14: aload_0
      15: getfield      #28                 // Field sandPoint:LDay14$Point;
      18: invokestatic  #159                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      21: ifne          47
      24: aload_0
      25: getfield      #40                 // Field sand:Ljava/util/Set;
      28: aload_1
      29: invokeinterface #160,  2          // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z
      34: pop
      35: aload_0
      36: aload_0
      37: getfield      #28                 // Field sandPoint:LDay14$Point;
      40: invokespecial #155                // Method findLandingPlace:(LDay14$Point;)LDay14$Point;
      43: astore_1
      44: goto          9
      47: aload_0
      48: invokespecial #163                // Method draw:()V
      51: aload_0
      52: getfield      #40                 // Field sand:Ljava/util/Set;
      55: invokeinterface #166,  1          // InterfaceMethod java/util/Set.size:()I
      60: ireturn

  public final int dropSandWithFloor();
    Code:
       0: aload_0
       1: invokevirtual #170                // Method dropSand:()I
       4: iconst_1
       5: iadd
       6: ireturn

  private final Day14$Point findLandingPlace(Day14$Point);
    Code:
       0: aload_1
       1: invokevirtual #77                 // Method Day14$Point.getY:()I
       4: aload_0
       5: getfield      #106                // Field lowestRock:I
       8: if_icmple     13
      11: aconst_null
      12: areturn
      13: aload_1
      14: invokevirtual #174                // Method Day14$Point.possibleMovesDown:()Ljava/util/List;
      17: checkcast     #48                 // class java/lang/Iterable
      20: astore_3
      21: iconst_0
      22: istore        4
      24: aload_3
      25: invokeinterface #63,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      30: astore        5
      32: aload         5
      34: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      39: ifeq          102
      42: aload         5
      44: invokeinterface #73,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      49: astore        6
      51: aload         6
      53: checkcast     #21                 // class Day14$Point
      56: astore        7
      58: iconst_0
      59: istore        8
      61: aload_0
      62: getfield      #37                 // Field rocksAndFloor:Ljava/util/Set;
      65: aload         7
      67: invokeinterface #177,  2          // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
      72: ifne          93
      75: aload_0
      76: getfield      #40                 // Field sand:Ljava/util/Set;
      79: aload         7
      81: invokeinterface #177,  2          // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
      86: ifne          93
      89: iconst_1
      90: goto          94
      93: iconst_0
      94: ifeq          32
      97: aload         6
      99: goto          103
     102: aconst_null
     103: checkcast     #21                 // class Day14$Point
     106: astore_2
     107: aload_2
     108: ifnonnull     115
     111: aload_1
     112: goto          120
     115: aload_0
     116: aload_2
     117: invokespecial #155                // Method findLandingPlace:(LDay14$Point;)LDay14$Point;
     120: areturn

  private final void draw();
    Code:
       0: new           #50                 // class java/util/ArrayList
       3: dup
       4: invokespecial #184                // Method java/util/ArrayList."<init>":()V
       7: checkcast     #89                 // class java/util/List
      10: astore_2
      11: aload_2
      12: astore_3
      13: iconst_0
      14: istore        4
      16: aload_3
      17: aload_0
      18: getfield      #37                 // Field rocksAndFloor:Ljava/util/Set;
      21: checkcast     #42                 // class java/util/Collection
      24: invokeinterface #185,  2          // InterfaceMethod java/util/List.addAll:(Ljava/util/Collection;)Z
      29: pop
      30: aload_3
      31: aload_0
      32: getfield      #40                 // Field sand:Ljava/util/Set;
      35: checkcast     #42                 // class java/util/Collection
      38: invokeinterface #185,  2          // InterfaceMethod java/util/List.addAll:(Ljava/util/Collection;)Z
      43: pop
      44: nop
      45: aload_2
      46: astore_1
      47: aload_1
      48: checkcast     #48                 // class java/lang/Iterable
      51: astore_3
      52: iconst_0
      53: istore        4
      55: aload_3
      56: astore        5
      58: new           #50                 // class java/util/ArrayList
      61: dup
      62: aload_3
      63: bipush        10
      65: invokestatic  #56                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      68: invokespecial #59                 // Method java/util/ArrayList."<init>":(I)V
      71: checkcast     #42                 // class java/util/Collection
      74: astore        6
      76: iconst_0
      77: istore        7
      79: aload         5
      81: invokeinterface #63,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      86: astore        8
      88: aload         8
      90: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      95: ifeq          141
      98: aload         8
     100: invokeinterface #73,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     105: astore        9
     107: aload         6
     109: aload         9
     111: checkcast     #21                 // class Day14$Point
     114: astore        10
     116: astore        14
     118: iconst_0
     119: istore        11
     121: aload         10
     123: invokevirtual #132                // Method Day14$Point.getX:()I
     126: invokestatic  #83                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     129: aload         14
     131: swap
     132: invokeinterface #87,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     137: pop
     138: goto          88
     141: aload         6
     143: checkcast     #89                 // class java/util/List
     146: nop
     147: checkcast     #48                 // class java/lang/Iterable
     150: invokestatic  #135                // Method kotlin/collections/CollectionsKt.minOrThrow:(Ljava/lang/Iterable;)Ljava/lang/Comparable;
     153: checkcast     #95                 // class java/lang/Number
     156: invokevirtual #98                 // Method java/lang/Number.intValue:()I
     159: istore_2
     160: aload_1
     161: checkcast     #48                 // class java/lang/Iterable
     164: astore        4
     166: iconst_0
     167: istore        5
     169: aload         4
     171: astore        6
     173: new           #50                 // class java/util/ArrayList
     176: dup
     177: aload         4
     179: bipush        10
     181: invokestatic  #56                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     184: invokespecial #59                 // Method java/util/ArrayList."<init>":(I)V
     187: checkcast     #42                 // class java/util/Collection
     190: astore        7
     192: iconst_0
     193: istore        8
     195: aload         6
     197: invokeinterface #63,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     202: astore        9
     204: aload         9
     206: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     211: ifeq          257
     214: aload         9
     216: invokeinterface #73,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     221: astore        10
     223: aload         7
     225: aload         10
     227: checkcast     #21                 // class Day14$Point
     230: astore        11
     232: astore        14
     234: iconst_0
     235: istore        12
     237: aload         11
     239: invokevirtual #132                // Method Day14$Point.getX:()I
     242: invokestatic  #83                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     245: aload         14
     247: swap
     248: invokeinterface #87,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     253: pop
     254: goto          204
     257: aload         7
     259: checkcast     #89                 // class java/util/List
     262: nop
     263: checkcast     #48                 // class java/lang/Iterable
     266: invokestatic  #93                 // Method kotlin/collections/CollectionsKt.maxOrThrow:(Ljava/lang/Iterable;)Ljava/lang/Comparable;
     269: checkcast     #95                 // class java/lang/Number
     272: invokevirtual #98                 // Method java/lang/Number.intValue:()I
     275: istore_3
     276: aload_1
     277: checkcast     #48                 // class java/lang/Iterable
     280: astore        5
     282: iconst_0
     283: istore        6
     285: aload         5
     287: astore        7
     289: new           #50                 // class java/util/ArrayList
     292: dup
     293: aload         5
     295: bipush        10
     297: invokestatic  #56                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     300: invokespecial #59                 // Method java/util/ArrayList."<init>":(I)V
     303: checkcast     #42                 // class java/util/Collection
     306: astore        8
     308: iconst_0
     309: istore        9
     311: aload         7
     313: invokeinterface #63,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     318: astore        10
     320: aload         10
     322: invokeinterface #69,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     327: ifeq          373
     330: aload         10
     332: invokeinterface #73,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     337: astore        11
     339: aload         8
     341: aload         11
     343: checkcast     #21                 // class Day14$Point
     346: astore        12
     348: astore        14
     350: iconst_0
     351: istore        13
     353: aload         12
     355: invokevirtual #77                 // Method Day14$Point.getY:()I
     358: invokestatic  #83                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     361: aload         14
     363: swap
     364: invokeinterface #87,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     369: pop
     370: goto          320
     373: aload         8
     375: checkcast     #89                 // class java/util/List
     378: nop
     379: checkcast     #48                 // class java/lang/Iterable
     382: invokestatic  #93                 // Method kotlin/collections/CollectionsKt.maxOrThrow:(Ljava/lang/Iterable;)Ljava/lang/Comparable;
     385: checkcast     #95                 // class java/lang/Number
     388: invokevirtual #98                 // Method java/lang/Number.intValue:()I
     391: istore        4
     393: iconst_0
     394: istore        5
     396: iload         5
     398: iload         4
     400: if_icmpgt     566
     403: iload_2
     404: istore        6
     406: iload         6
     408: iload_3
     409: if_icmpgt     553
     412: new           #21                 // class Day14$Point
     415: dup
     416: iload         6
     418: iload         5
     420: invokespecial #24                 // Method Day14$Point."<init>":(II)V
     423: astore        7
     425: aload         7
     427: new           #21                 // class Day14$Point
     430: dup
     431: sipush        500
     434: iconst_0
     435: invokespecial #24                 // Method Day14$Point."<init>":(II)V
     438: invokestatic  #159                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     441: ifeq          459
     444: bipush        43
     446: istore        8
     448: getstatic     #191                // Field java/lang/System.out:Ljava/io/PrintStream;
     451: iload         8
     453: invokevirtual #197                // Method java/io/PrintStream.print:(C)V
     456: goto          529
     459: aload_0
     460: getfield      #37                 // Field rocksAndFloor:Ljava/util/Set;
     463: aload         7
     465: invokeinterface #177,  2          // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     470: ifeq          488
     473: bipush        35
     475: istore        8
     477: getstatic     #191                // Field java/lang/System.out:Ljava/io/PrintStream;
     480: iload         8
     482: invokevirtual #197                // Method java/io/PrintStream.print:(C)V
     485: goto          529
     488: aload_0
     489: getfield      #40                 // Field sand:Ljava/util/Set;
     492: aload         7
     494: invokeinterface #177,  2          // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     499: ifeq          517
     502: bipush        111
     504: istore        8
     506: getstatic     #191                // Field java/lang/System.out:Ljava/io/PrintStream;
     509: iload         8
     511: invokevirtual #197                // Method java/io/PrintStream.print:(C)V
     514: goto          529
     517: bipush        46
     519: istore        8
     521: getstatic     #191                // Field java/lang/System.out:Ljava/io/PrintStream;
     524: iload         8
     526: invokevirtual #197                // Method java/io/PrintStream.print:(C)V
     529: iload         6
     531: iload_3
     532: if_icmpne     541
     535: getstatic     #191                // Field java/lang/System.out:Ljava/io/PrintStream;
     538: invokevirtual #200                // Method java/io/PrintStream.println:()V
     541: iload         6
     543: iload_3
     544: if_icmpeq     553
     547: iinc          6, 1
     550: goto          412
     553: iload         5
     555: iload         4
     557: if_icmpeq     566
     560: iinc          5, 1
     563: goto          403
     566: return
}

Compiled from "Day14.kt"
public final class Day14$Point {
  private final int x;

  private final int y;

  public Day14$Point(int, int);
    Code:
       0: aload_0
       1: invokespecial #9                  // Method java/lang/Object."<init>":()V
       4: aload_0
       5: iload_1
       6: putfield      #13                 // Field x:I
       9: aload_0
      10: iload_2
      11: putfield      #16                 // Field y:I
      14: return

  public final int getX();
    Code:
       0: aload_0
       1: getfield      #13                 // Field x:I
       4: ireturn

  public final int getY();
    Code:
       0: aload_0
       1: getfield      #16                 // Field y:I
       4: ireturn

  public final java.util.List<Day14$Point> possibleMovesDown();
    Code:
       0: iconst_3
       1: anewarray     #2                  // class Day14$Point
       4: astore_1
       5: aload_1
       6: iconst_0
       7: new           #2                  // class Day14$Point
      10: dup
      11: aload_0
      12: getfield      #13                 // Field x:I
      15: aload_0
      16: getfield      #16                 // Field y:I
      19: iconst_1
      20: iadd
      21: invokespecial #27                 // Method "<init>":(II)V
      24: aastore
      25: aload_1
      26: iconst_1
      27: new           #2                  // class Day14$Point
      30: dup
      31: aload_0
      32: getfield      #13                 // Field x:I
      35: iconst_1
      36: isub
      37: aload_0
      38: getfield      #16                 // Field y:I
      41: iconst_1
      42: iadd
      43: invokespecial #27                 // Method "<init>":(II)V
      46: aastore
      47: aload_1
      48: iconst_2
      49: new           #2                  // class Day14$Point
      52: dup
      53: aload_0
      54: getfield      #13                 // Field x:I
      57: iconst_1
      58: iadd
      59: aload_0
      60: getfield      #16                 // Field y:I
      63: iconst_1
      64: iadd
      65: invokespecial #27                 // Method "<init>":(II)V
      68: aastore
      69: aload_1
      70: invokestatic  #33                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
      73: areturn

  public final int component1();
    Code:
       0: aload_0
       1: getfield      #13                 // Field x:I
       4: ireturn

  public final int component2();
    Code:
       0: aload_0
       1: getfield      #16                 // Field y:I
       4: ireturn

  public final Day14$Point copy(int, int);
    Code:
       0: new           #2                  // class Day14$Point
       3: dup
       4: iload_1
       5: iload_2
       6: invokespecial #27                 // Method "<init>":(II)V
       9: areturn

  public static Day14$Point copy$default(Day14$Point, int, int, int, java.lang.Object);
    Code:
       0: iload_3
       1: iconst_1
       2: iand
       3: ifeq          11
       6: aload_0
       7: getfield      #13                 // Field x:I
      10: istore_1
      11: iload_3
      12: iconst_2
      13: iand
      14: ifeq          22
      17: aload_0
      18: getfield      #16                 // Field y:I
      21: istore_2
      22: aload_0
      23: iload_1
      24: iload_2
      25: invokevirtual #41                 // Method copy:(II)LDay14$Point;
      28: areturn

  public java.lang.String toString();
    Code:
       0: new           #45                 // class java/lang/StringBuilder
       3: dup
       4: invokespecial #46                 // Method java/lang/StringBuilder."<init>":()V
       7: ldc           #48                 // String Point(x=
       9: invokevirtual #52                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      12: aload_0
      13: getfield      #13                 // Field x:I
      16: invokevirtual #55                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      19: ldc           #57                 // String , y=
      21: invokevirtual #52                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      24: aload_0
      25: getfield      #16                 // Field y:I
      28: invokevirtual #55                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      31: bipush        41
      33: invokevirtual #60                 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      36: invokevirtual #62                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      39: areturn

  public int hashCode();
    Code:
       0: aload_0
       1: getfield      #13                 // Field x:I
       4: invokestatic  #68                 // Method java/lang/Integer.hashCode:(I)I
       7: istore_1
       8: iload_1
       9: bipush        31
      11: imul
      12: aload_0
      13: getfield      #16                 // Field y:I
      16: invokestatic  #68                 // Method java/lang/Integer.hashCode:(I)I
      19: iadd
      20: istore_1
      21: iload_1
      22: ireturn

  public boolean equals(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: if_acmpne     7
       5: iconst_1
       6: ireturn
       7: aload_1
       8: instanceof    #2                  // class Day14$Point
      11: ifne          16
      14: iconst_0
      15: ireturn
      16: aload_1
      17: checkcast     #2                  // class Day14$Point
      20: astore_2
      21: aload_0
      22: getfield      #13                 // Field x:I
      25: aload_2
      26: getfield      #13                 // Field x:I
      29: if_icmpeq     34
      32: iconst_0
      33: ireturn
      34: aload_0
      35: getfield      #16                 // Field y:I
      38: aload_2
      39: getfield      #16                 // Field y:I
      42: if_icmpeq     47
      45: iconst_0
      46: ireturn
      47: iconst_1
      48: ireturn
}

Compiled from "Day14.kt"
public final class Day14 {
  public Day14();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public final int part1(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #16                 // String input
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: aload_1
       8: invokespecial #26                 // Method mapToRocks:(Ljava/util/List;)Ljava/util/Set;
      11: astore_2
      12: new           #28                 // class Day14$Cave
      15: dup
      16: aload_2
      17: iconst_0
      18: iconst_2
      19: aconst_null
      20: invokespecial #31                 // Method Day14$Cave."<init>":(Ljava/util/Set;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
      23: invokevirtual #35                 // Method Day14$Cave.dropSand:()I
      26: ireturn

  public final int part2(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #16                 // String input
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: aload_1
       8: invokespecial #26                 // Method mapToRocks:(Ljava/util/List;)Ljava/util/Set;
      11: astore_2
      12: new           #28                 // class Day14$Cave
      15: dup
      16: aload_2
      17: iconst_1
      18: invokespecial #42                 // Method Day14$Cave."<init>":(Ljava/util/Set;Z)V
      21: invokevirtual #45                 // Method Day14$Cave.dropSandWithFloor:()I
      24: ireturn

  private final java.util.Set<Day14$Point> mapToRocks(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: checkcast     #48                 // class java/lang/Iterable
       4: astore_2
       5: iconst_0
       6: istore_3
       7: aload_2
       8: astore        4
      10: new           #50                 // class java/util/ArrayList
      13: dup
      14: invokespecial #51                 // Method java/util/ArrayList."<init>":()V
      17: checkcast     #53                 // class java/util/Collection
      20: astore        5
      22: iconst_0
      23: istore        6
      25: aload         4
      27: invokeinterface #57,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      32: astore        7
      34: aload         7
      36: invokeinterface #63,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      41: ifeq          241
      44: aload         7
      46: invokeinterface #67,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      51: astore        8
      53: aload         8
      55: checkcast     #69                 // class java/lang/String
      58: astore        9
      60: iconst_0
      61: istore        10
      63: aload         9
      65: checkcast     #71                 // class java/lang/CharSequence
      68: iconst_1
      69: anewarray     #69                 // class java/lang/String
      72: astore        11
      74: aload         11
      76: iconst_0
      77: ldc           #73                 // String  ->
      79: aastore
      80: aload         11
      82: iconst_0
      83: iconst_0
      84: bipush        6
      86: aconst_null
      87: invokestatic  #79                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      90: checkcast     #48                 // class java/lang/Iterable
      93: iconst_2
      94: iconst_0
      95: iconst_0
      96: bipush        6
      98: aconst_null
      99: invokestatic  #85                 // Method kotlin/collections/CollectionsKt.windowed$default:(Ljava/lang/Iterable;IIZILjava/lang/Object;)Ljava/util/List;
     102: checkcast     #48                 // class java/lang/Iterable
     105: astore        11
     107: nop
     108: iconst_0
     109: istore        12
     111: aload         11
     113: astore        13
     115: new           #50                 // class java/util/ArrayList
     118: dup
     119: invokespecial #51                 // Method java/util/ArrayList."<init>":()V
     122: checkcast     #53                 // class java/util/Collection
     125: astore        14
     127: iconst_0
     128: istore        15
     130: aload         13
     132: invokeinterface #57,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     137: astore        16
     139: aload         16
     141: invokeinterface #63,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     146: ifeq          218
     149: aload         16
     151: invokeinterface #67,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     156: astore        17
     158: aload         17
     160: checkcast     #87                 // class java/util/List
     163: astore        18
     165: iconst_0
     166: istore        19
     168: aload         18
     170: iconst_0
     171: invokeinterface #91,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     176: checkcast     #69                 // class java/lang/String
     179: astore        20
     181: aload         18
     183: iconst_1
     184: invokeinterface #91,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     189: checkcast     #69                 // class java/lang/String
     192: astore        21
     194: aload_0
     195: aload         20
     197: aload         21
     199: invokespecial #95                 // Method mapToPoints:(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
     202: checkcast     #48                 // class java/lang/Iterable
     205: astore        18
     207: aload         14
     209: aload         18
     211: invokestatic  #99                 // Method kotlin/collections/CollectionsKt.addAll:(Ljava/util/Collection;Ljava/lang/Iterable;)Z
     214: pop
     215: goto          139
     218: aload         14
     220: checkcast     #87                 // class java/util/List
     223: nop
     224: checkcast     #48                 // class java/lang/Iterable
     227: nop
     228: astore        9
     230: aload         5
     232: aload         9
     234: invokestatic  #99                 // Method kotlin/collections/CollectionsKt.addAll:(Ljava/util/Collection;Ljava/lang/Iterable;)Z
     237: pop
     238: goto          34
     241: aload         5
     243: checkcast     #87                 // class java/util/List
     246: nop
     247: checkcast     #48                 // class java/lang/Iterable
     250: invokestatic  #103                // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     253: areturn

  private final java.util.List<Day14$Point> mapToPoints(java.lang.String, java.lang.String);
    Code:
       0: aload_1
       1: checkcast     #71                 // class java/lang/CharSequence
       4: iconst_1
       5: anewarray     #69                 // class java/lang/String
       8: astore        4
      10: aload         4
      12: iconst_0
      13: ldc           #123                // String ,
      15: aastore
      16: aload         4
      18: iconst_0
      19: iconst_0
      20: bipush        6
      22: aconst_null
      23: invokestatic  #79                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      26: checkcast     #48                 // class java/lang/Iterable
      29: astore        4
      31: iconst_0
      32: istore        5
      34: aload         4
      36: astore        6
      38: new           #50                 // class java/util/ArrayList
      41: dup
      42: aload         4
      44: bipush        10
      46: invokestatic  #127                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      49: invokespecial #130                // Method java/util/ArrayList."<init>":(I)V
      52: checkcast     #53                 // class java/util/Collection
      55: astore        7
      57: iconst_0
      58: istore        8
      60: aload         6
      62: invokeinterface #57,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      67: astore        9
      69: aload         9
      71: invokeinterface #63,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      76: ifeq          123
      79: aload         9
      81: invokeinterface #67,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      86: astore        10
      88: aload         7
      90: aload         10
      92: checkcast     #69                 // class java/lang/String
      95: astore        11
      97: astore        30
      99: iconst_0
     100: istore        12
     102: aload         11
     104: invokestatic  #136                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     107: nop
     108: invokestatic  #140                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     111: aload         30
     113: swap
     114: invokeinterface #144,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     119: pop
     120: goto          69
     123: aload         7
     125: checkcast     #87                 // class java/util/List
     128: nop
     129: astore_3
     130: aload_3
     131: iconst_0
     132: invokeinterface #91,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     137: checkcast     #146                // class java/lang/Number
     140: invokevirtual #149                // Method java/lang/Number.intValue:()I
     143: istore        4
     145: aload_3
     146: iconst_1
     147: invokeinterface #91,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     152: checkcast     #146                // class java/lang/Number
     155: invokevirtual #149                // Method java/lang/Number.intValue:()I
     158: istore        5
     160: aload_2
     161: checkcast     #71                 // class java/lang/CharSequence
     164: iconst_1
     165: anewarray     #69                 // class java/lang/String
     168: astore        7
     170: aload         7
     172: iconst_0
     173: ldc           #123                // String ,
     175: aastore
     176: aload         7
     178: iconst_0
     179: iconst_0
     180: bipush        6
     182: aconst_null
     183: invokestatic  #79                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     186: checkcast     #48                 // class java/lang/Iterable
     189: astore        7
     191: iconst_0
     192: istore        8
     194: aload         7
     196: astore        9
     198: new           #50                 // class java/util/ArrayList
     201: dup
     202: aload         7
     204: bipush        10
     206: invokestatic  #127                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     209: invokespecial #130                // Method java/util/ArrayList."<init>":(I)V
     212: checkcast     #53                 // class java/util/Collection
     215: astore        10
     217: iconst_0
     218: istore        11
     220: aload         9
     222: invokeinterface #57,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     227: astore        12
     229: aload         12
     231: invokeinterface #63,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     236: ifeq          283
     239: aload         12
     241: invokeinterface #67,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     246: astore        13
     248: aload         10
     250: aload         13
     252: checkcast     #69                 // class java/lang/String
     255: astore        14
     257: astore        30
     259: iconst_0
     260: istore        15
     262: aload         14
     264: invokestatic  #136                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     267: nop
     268: invokestatic  #140                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     271: aload         30
     273: swap
     274: invokeinterface #144,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     279: pop
     280: goto          229
     283: aload         10
     285: checkcast     #87                 // class java/util/List
     288: nop
     289: astore        6
     291: aload         6
     293: iconst_0
     294: invokeinterface #91,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     299: checkcast     #146                // class java/lang/Number
     302: invokevirtual #149                // Method java/lang/Number.intValue:()I
     305: istore        7
     307: aload         6
     309: iconst_1
     310: invokeinterface #91,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     315: checkcast     #146                // class java/lang/Number
     318: invokevirtual #149                // Method java/lang/Number.intValue:()I
     321: istore        8
     323: iload         4
     325: iload         7
     327: if_icmpgt     344
     330: new           #151                // class kotlin/ranges/IntRange
     333: dup
     334: iload         4
     336: iload         7
     338: invokespecial #154                // Method kotlin/ranges/IntRange."<init>":(II)V
     341: goto          355
     344: new           #151                // class kotlin/ranges/IntRange
     347: dup
     348: iload         7
     350: iload         4
     352: invokespecial #154                // Method kotlin/ranges/IntRange."<init>":(II)V
     355: astore        9
     357: iload         5
     359: iload         8
     361: if_icmpgt     378
     364: new           #151                // class kotlin/ranges/IntRange
     367: dup
     368: iload         5
     370: iload         8
     372: invokespecial #154                // Method kotlin/ranges/IntRange."<init>":(II)V
     375: goto          389
     378: new           #151                // class kotlin/ranges/IntRange
     381: dup
     382: iload         8
     384: iload         5
     386: invokespecial #154                // Method kotlin/ranges/IntRange."<init>":(II)V
     389: astore        10
     391: aload         9
     393: checkcast     #48                 // class java/lang/Iterable
     396: astore        11
     398: iconst_0
     399: istore        12
     401: aload         11
     403: astore        13
     405: new           #50                 // class java/util/ArrayList
     408: dup
     409: invokespecial #51                 // Method java/util/ArrayList."<init>":()V
     412: checkcast     #53                 // class java/util/Collection
     415: astore        14
     417: iconst_0
     418: istore        15
     420: aload         13
     422: invokeinterface #57,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     427: astore        16
     429: aload         16
     431: invokeinterface #63,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     436: ifeq          578
     439: aload         16
     441: checkcast     #156                // class kotlin/collections/IntIterator
     444: invokevirtual #159                // Method kotlin/collections/IntIterator.nextInt:()I
     447: istore        17
     449: iload         17
     451: istore        18
     453: iconst_0
     454: istore        19
     456: aload         10
     458: checkcast     #48                 // class java/lang/Iterable
     461: astore        20
     463: iconst_0
     464: istore        21
     466: aload         20
     468: astore        22
     470: new           #50                 // class java/util/ArrayList
     473: dup
     474: aload         20
     476: bipush        10
     478: invokestatic  #127                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     481: invokespecial #130                // Method java/util/ArrayList."<init>":(I)V
     484: checkcast     #53                 // class java/util/Collection
     487: astore        23
     489: iconst_0
     490: istore        24
     492: aload         22
     494: invokeinterface #57,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     499: astore        25
     501: aload         25
     503: invokeinterface #63,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     508: ifeq          555
     511: aload         25
     513: checkcast     #156                // class kotlin/collections/IntIterator
     516: invokevirtual #159                // Method kotlin/collections/IntIterator.nextInt:()I
     519: istore        26
     521: aload         23
     523: iload         26
     525: istore        27
     527: astore        28
     529: iconst_0
     530: istore        29
     532: new           #161                // class Day14$Point
     535: dup
     536: iload         18
     538: iload         27
     540: invokespecial #162                // Method Day14$Point."<init>":(II)V
     543: aload         28
     545: swap
     546: invokeinterface #144,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     551: pop
     552: goto          501
     555: aload         23
     557: checkcast     #87                 // class java/util/List
     560: nop
     561: checkcast     #48                 // class java/lang/Iterable
     564: nop
     565: astore        18
     567: aload         14
     569: aload         18
     571: invokestatic  #99                 // Method kotlin/collections/CollectionsKt.addAll:(Ljava/util/Collection;Ljava/lang/Iterable;)Z
     574: pop
     575: goto          429
     578: aload         14
     580: checkcast     #87                 // class java/util/List
     583: nop
     584: areturn
}