package puzzle8

import kotlin.math.pow
import kotlin.system.measureTimeMillis

fun main() {
    val sevenSegmentsDemystifier = SevenSegmentsDemystifier()
    val basicDigitWiring = DigitWiring()
    val time = measureTimeMillis {
        println("test: ${basicDigitWiring.findNumber("acf")}")
        println("Part 1 solution is: ${sevenSegmentsDemystifier.countEasyDigits()}")
        println("Part 2 solution is: ${sevenSegmentsDemystifier.findAllDigits()}")
    }

    println("Time: $time")
}

data class InputEntry(val patterns: List<String>, val output: List<String>)

data class DigitWiring(
    private val one: String = "a",
    private val two: String = "b",
    private val three: String = "c",
    private val four: String = "d",
    private val five: String = "e",
    private val six: String = "f",
    private val seven: String = "g"
) {
    private fun produceDisplayForInt(value: Int): List<String> {
        return when (value) {
            0 -> listOf(one, two, three, five, six, seven)
            1 -> listOf(three, six)
            2 -> listOf(one, three, four, five, seven)
            3 -> listOf(one, three, four, six, seven)
            4 -> listOf(two, three, four, six)
            5 -> listOf(one, two, four, six, seven)
            6 -> listOf(one, two, four, five, six, seven)
            7 -> listOf(one, three, six)
            8 -> listOf(one, two, three, four, five, six, seven)
            9 -> listOf(one, two, three, four, six, seven)
            else -> throw IllegalArgumentException("This is not a single digit number")
        }
    }

    fun findNumber(toFind: String): Int {
        // has to be checked in that order otherwise an 8 could be caught by a 0 for example
        val splitString = toFind.toList().map { it.toString() }
        return when {
            splitString.containsAll(produceDisplayForInt(8)) -> 8
            splitString.containsAll(produceDisplayForInt(0)) -> 0
            splitString.containsAll(produceDisplayForInt(9)) -> 9
            splitString.containsAll(produceDisplayForInt(6)) -> 6
            splitString.containsAll(produceDisplayForInt(2)) -> 2
            splitString.containsAll(produceDisplayForInt(3)) -> 3
            splitString.containsAll(produceDisplayForInt(5)) -> 5
            splitString.containsAll(produceDisplayForInt(4)) -> 4
            splitString.containsAll(produceDisplayForInt(7)) -> 7
            splitString.containsAll(produceDisplayForInt(1)) -> 1
            else -> -1
        }
    }

    fun findNumberForList(toFind: List<String>): Int {
        return toFind
            .reversed()
            .foldIndexed(0) {index: Int, acc: Int, s: String ->
                acc + findNumber(s) * 10.0.pow(index).toInt()
            }
    }
}

class SevenSegmentsDemystifier {
    private val input = SevenSegmentsDemystifier::class.java.getResource("/input/puzzle8.txt")
        ?.readText()
        ?.split("\n")
        ?.filter { it.isNotBlank() }
        ?.map { s: String ->
            val (patterns, output) = s.split("|").map { it.trim() }
            InputEntry(
                patterns.split(" ").map { it.trim() },
                output.split(" ").map { it.trim() }
            )
        }
        ?: listOf()

    fun countEasyDigits(): Int {
        var counter = 0
        input.forEach { entry: InputEntry ->
            counter += entry.output.sumOf {
                val result = when(it.length) {
                    2, 3, 4, 7 -> 1
                    else -> 0
                }
                result
            }
        }
        return counter
    }

    private fun decryptPattern(patterns: List<String>): DigitWiring {
        val dividedPatterns = patterns.groupBy { it.length }
        val segmentOne: Char
        val segmentTwo: Char
        val segmentThree: Char
        val segmentFour: Char
        val segmentFive: Char
        val segmentSix: Char
        val segmentSeven: Char
        // Extract possibilities for the obvious digits
        val patternForOne = dividedPatterns.getOrDefault(2, null)?.get(0)?.toList()

        val patternForSeven = dividedPatterns.getOrDefault(3, null)?.get(0)?.toList()

        val patternForFour = dividedPatterns.getOrDefault(4, null)?.get(0)?.toList()

        if (patternForSeven == null || patternForOne == null || patternForFour == null ) {
            return DigitWiring()
        }
        segmentOne = patternForSeven.filterNot { patternForOne.contains(it) }[0]
        val possibilitiesForSegments3And6 = patternForSeven.filter { patternForOne.contains(it) }

        val possibilitiesForSegment2And4 = patternForFour.filterNot { patternForOne.contains(it) || it == segmentOne }

        // Find a 3 in the patterns, this will be a number
        // with 5 segments,
        // with all the possibilities for 3 and 6,
        // with the segment 1,
        // and with one of the possibilities of the 2 and 4
        val patternForThree = dividedPatterns
            .getOrDefault(5, null)
            ?.map { it.toList() }
            ?.filter { it.contains(segmentOne) }
            ?.filter { it.containsAll(possibilitiesForSegments3And6) }
            ?.filter { chars ->
                possibilitiesForSegment2And4.any { chars.contains(it) }
            }
            ?.getOrNull(0)

        if (patternForThree == null) {
            println("no pattern for 3")
            return DigitWiring()
        }

        segmentFour = patternForThree.filter { possibilitiesForSegment2And4.contains(it) }[0]
        segmentTwo = possibilitiesForSegment2And4.filterNot { it == segmentFour }[0]
        segmentSeven = patternForThree.filterNot {
            it == segmentOne || it == segmentFour || patternForOne.contains(it)
        }[0]

        // Next, we find a segment representing a 5, this will be a number with
        // 5 segments
        // the segments 1, 2, 4 and 7 in it
        // one of the segments from the possibilities for 3 and 6

        val patternForFive = dividedPatterns
            .getOrDefault(5, null)
            ?.map { it.toList()}
            ?.filter{ it.containsAll(listOf(segmentOne, segmentTwo, segmentFour, segmentSeven)) }
            ?.filter { list: List<Char> ->
                possibilitiesForSegments3And6.any { list.contains(it) }
            }
            ?.getOrNull(0)

        if (patternForFive == null) {
            println("no pattern for 5")
            return DigitWiring()
        }

        segmentSix = patternForFive.filter { possibilitiesForSegments3And6.contains(it) }[0]
        segmentThree = possibilitiesForSegments3And6.filterNot { it == segmentSix }[0]

        // Finally, we deduce the last segment
        segmentFive = "abcdefg".toList().filterNot {
            listOf(segmentOne, segmentTwo, segmentThree, segmentFour, segmentSix, segmentSeven).contains(it)
        }[0]
        return DigitWiring(
            segmentOne.toString(),
            segmentTwo.toString(),
            segmentThree.toString(),
            segmentFour.toString(),
            segmentFive.toString(),
            segmentSix.toString(),
            segmentSeven.toString()
        )
    }

    fun findAllDigits(): Int {
        val display = decryptPattern(input[0].patterns)
        println("$display -> ${display.findNumberForList(input[0].output)}")

        return input.fold(0) { acc, inputEntry ->
            val digitWiring = decryptPattern(inputEntry.patterns)
            acc + digitWiring.findNumberForList(inputEntry.output)
        }
    }
}

Compiled from "SevenSegmentsDemystifier.kt"
public final class puzzle8.SevenSegmentsDemystifier {
  private final java.util.List<puzzle8.InputEntry> input;

  public puzzle8.SevenSegmentsDemystifier();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: aload_0
       5: ldc           #2                  // class puzzle8/SevenSegmentsDemystifier
       7: ldc           #10                 // String /input/puzzle8.txt
       9: invokevirtual #16                 // Method java/lang/Class.getResource:(Ljava/lang/String;)Ljava/net/URL;
      12: astore_1
      13: aload_1
      14: ifnull        726
      17: aload_1
      18: astore_2
      19: getstatic     #22                 // Field kotlin/text/Charsets.UTF_8:Ljava/nio/charset/Charset;
      22: astore_3
      23: aload_2
      24: invokestatic  #28                 // Method kotlin/io/TextStreamsKt.readBytes:(Ljava/net/URL;)[B
      27: astore        4
      29: new           #30                 // class java/lang/String
      32: dup
      33: aload         4
      35: aload_3
      36: invokespecial #33                 // Method java/lang/String."<init>":([BLjava/nio/charset/Charset;)V
      39: checkcast     #35                 // class java/lang/CharSequence
      42: iconst_1
      43: anewarray     #30                 // class java/lang/String
      46: astore_3
      47: aload_3
      48: iconst_0
      49: ldc           #37                 // String \n
      51: aastore
      52: aload_3
      53: iconst_0
      54: iconst_0
      55: bipush        6
      57: aconst_null
      58: invokestatic  #43                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      61: astore_2
      62: aload_2
      63: ifnull        726
      66: aload_2
      67: checkcast     #45                 // class java/lang/Iterable
      70: astore        4
      72: astore        29
      74: iconst_0
      75: istore        5
      77: aload         4
      79: astore        6
      81: new           #47                 // class java/util/ArrayList
      84: dup
      85: invokespecial #48                 // Method java/util/ArrayList."<init>":()V
      88: checkcast     #50                 // class java/util/Collection
      91: astore        7
      93: iconst_0
      94: istore        8
      96: aload         6
      98: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     103: astore        9
     105: aload         9
     107: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     112: ifeq          167
     115: aload         9
     117: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     122: astore        10
     124: aload         10
     126: checkcast     #30                 // class java/lang/String
     129: astore        11
     131: iconst_0
     132: istore        12
     134: aload         11
     136: checkcast     #35                 // class java/lang/CharSequence
     139: invokestatic  #68                 // Method kotlin/text/StringsKt.isBlank:(Ljava/lang/CharSequence;)Z
     142: ifne          149
     145: iconst_1
     146: goto          150
     149: iconst_0
     150: nop
     151: ifeq          105
     154: aload         7
     156: aload         10
     158: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     163: pop
     164: goto          105
     167: aload         7
     169: checkcast     #74                 // class java/util/List
     172: nop
     173: aload         29
     175: swap
     176: checkcast     #45                 // class java/lang/Iterable
     179: astore        5
     181: astore        29
     183: iconst_0
     184: istore        6
     186: aload         5
     188: astore        7
     190: new           #47                 // class java/util/ArrayList
     193: dup
     194: aload         5
     196: bipush        10
     198: invokestatic  #80                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     201: invokespecial #83                 // Method java/util/ArrayList."<init>":(I)V
     204: checkcast     #50                 // class java/util/Collection
     207: astore        8
     209: iconst_0
     210: istore        9
     212: aload         7
     214: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     219: astore        10
     221: aload         10
     223: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     228: ifeq          714
     231: aload         10
     233: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     238: astore        11
     240: aload         8
     242: aload         11
     244: checkcast     #30                 // class java/lang/String
     247: astore        12
     249: astore        30
     251: iconst_0
     252: istore        13
     254: aload         12
     256: checkcast     #35                 // class java/lang/CharSequence
     259: iconst_1
     260: anewarray     #30                 // class java/lang/String
     263: astore        14
     265: aload         14
     267: iconst_0
     268: ldc           #85                 // String |
     270: aastore
     271: aload         14
     273: iconst_0
     274: iconst_0
     275: bipush        6
     277: aconst_null
     278: invokestatic  #43                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     281: checkcast     #45                 // class java/lang/Iterable
     284: astore        14
     286: iconst_0
     287: istore        15
     289: aload         14
     291: astore        16
     293: new           #47                 // class java/util/ArrayList
     296: dup
     297: aload         14
     299: bipush        10
     301: invokestatic  #80                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     304: invokespecial #83                 // Method java/util/ArrayList."<init>":(I)V
     307: checkcast     #50                 // class java/util/Collection
     310: astore        17
     312: iconst_0
     313: istore        18
     315: aload         16
     317: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     322: astore        19
     324: aload         19
     326: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     331: ifeq          381
     334: aload         19
     336: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     341: astore        20
     343: aload         17
     345: aload         20
     347: checkcast     #30                 // class java/lang/String
     350: astore        21
     352: astore        22
     354: iconst_0
     355: istore        23
     357: aload         21
     359: checkcast     #35                 // class java/lang/CharSequence
     362: invokestatic  #89                 // Method kotlin/text/StringsKt.trim:(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
     365: invokevirtual #93                 // Method java/lang/Object.toString:()Ljava/lang/String;
     368: nop
     369: aload         22
     371: swap
     372: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     377: pop
     378: goto          324
     381: aload         17
     383: checkcast     #74                 // class java/util/List
     386: nop
     387: astore        24
     389: aload         24
     391: iconst_0
     392: invokeinterface #97,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     397: checkcast     #30                 // class java/lang/String
     400: astore        14
     402: aload         24
     404: iconst_1
     405: invokeinterface #97,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     410: checkcast     #30                 // class java/lang/String
     413: astore        15
     415: aload         14
     417: checkcast     #35                 // class java/lang/CharSequence
     420: iconst_1
     421: anewarray     #30                 // class java/lang/String
     424: astore        16
     426: aload         16
     428: iconst_0
     429: ldc           #99                 // String
     431: aastore
     432: aload         16
     434: iconst_0
     435: iconst_0
     436: bipush        6
     438: aconst_null
     439: invokestatic  #43                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     442: checkcast     #45                 // class java/lang/Iterable
     445: astore        16
     447: iconst_0
     448: istore        17
     450: aload         16
     452: astore        18
     454: new           #47                 // class java/util/ArrayList
     457: dup
     458: aload         16
     460: bipush        10
     462: invokestatic  #80                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     465: invokespecial #83                 // Method java/util/ArrayList."<init>":(I)V
     468: checkcast     #50                 // class java/util/Collection
     471: astore        19
     473: iconst_0
     474: istore        20
     476: aload         18
     478: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     483: astore        21
     485: aload         21
     487: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     492: ifeq          542
     495: aload         21
     497: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     502: astore        23
     504: aload         19
     506: aload         23
     508: checkcast     #30                 // class java/lang/String
     511: astore        25
     513: astore        26
     515: iconst_0
     516: istore        27
     518: aload         25
     520: checkcast     #35                 // class java/lang/CharSequence
     523: invokestatic  #89                 // Method kotlin/text/StringsKt.trim:(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
     526: invokevirtual #93                 // Method java/lang/Object.toString:()Ljava/lang/String;
     529: nop
     530: aload         26
     532: swap
     533: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     538: pop
     539: goto          485
     542: aload         19
     544: checkcast     #74                 // class java/util/List
     547: nop
     548: aload         15
     550: checkcast     #35                 // class java/lang/CharSequence
     553: iconst_1
     554: anewarray     #30                 // class java/lang/String
     557: astore        16
     559: aload         16
     561: iconst_0
     562: ldc           #99                 // String
     564: aastore
     565: aload         16
     567: iconst_0
     568: iconst_0
     569: bipush        6
     571: aconst_null
     572: invokestatic  #43                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     575: checkcast     #45                 // class java/lang/Iterable
     578: astore        16
     580: astore        26
     582: iconst_0
     583: istore        17
     585: aload         16
     587: astore        18
     589: new           #47                 // class java/util/ArrayList
     592: dup
     593: aload         16
     595: bipush        10
     597: invokestatic  #80                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     600: invokespecial #83                 // Method java/util/ArrayList."<init>":(I)V
     603: checkcast     #50                 // class java/util/Collection
     606: astore        19
     608: iconst_0
     609: istore        20
     611: aload         18
     613: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     618: astore        21
     620: aload         21
     622: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     627: ifeq          677
     630: aload         21
     632: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     637: astore        23
     639: aload         19
     641: aload         23
     643: checkcast     #30                 // class java/lang/String
     646: astore        25
     648: astore        28
     650: iconst_0
     651: istore        27
     653: aload         25
     655: checkcast     #35                 // class java/lang/CharSequence
     658: invokestatic  #89                 // Method kotlin/text/StringsKt.trim:(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
     661: invokevirtual #93                 // Method java/lang/Object.toString:()Ljava/lang/String;
     664: nop
     665: aload         28
     667: swap
     668: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     673: pop
     674: goto          620
     677: aload         19
     679: checkcast     #74                 // class java/util/List
     682: nop
     683: aload         26
     685: swap
     686: astore        31
     688: astore        32
     690: new           #101                // class puzzle8/InputEntry
     693: dup
     694: aload         32
     696: aload         31
     698: invokespecial #104                // Method puzzle8/InputEntry."<init>":(Ljava/util/List;Ljava/util/List;)V
     701: nop
     702: aload         30
     704: swap
     705: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     710: pop
     711: goto          221
     714: aload         8
     716: checkcast     #74                 // class java/util/List
     719: nop
     720: aload         29
     722: swap
     723: goto          729
     726: invokestatic  #108                // Method kotlin/collections/CollectionsKt.emptyList:()Ljava/util/List;
     729: putfield      #112                // Field input:Ljava/util/List;
     732: return

  public final int countEasyDigits();
    Code:
       0: iconst_0
       1: istore_1
       2: aload_0
       3: getfield      #112                // Field input:Ljava/util/List;
       6: checkcast     #45                 // class java/lang/Iterable
       9: astore_2
      10: iconst_0
      11: istore_3
      12: aload_2
      13: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      18: astore        4
      20: aload         4
      22: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      27: ifeq          188
      30: aload         4
      32: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      37: astore        5
      39: aload         5
      41: checkcast     #101                // class puzzle8/InputEntry
      44: astore        6
      46: iconst_0
      47: istore        7
      49: iload_1
      50: aload         6
      52: invokevirtual #148                // Method puzzle8/InputEntry.getOutput:()Ljava/util/List;
      55: checkcast     #45                 // class java/lang/Iterable
      58: astore        8
      60: istore        9
      62: iconst_0
      63: istore        10
      65: aload         8
      67: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      72: astore        11
      74: aload         11
      76: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      81: ifeq          173
      84: aload         11
      86: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      91: astore        12
      93: iload         10
      95: aload         12
      97: checkcast     #30                 // class java/lang/String
     100: astore        13
     102: istore        14
     104: iconst_0
     105: istore        15
     107: aload         13
     109: invokevirtual #151                // Method java/lang/String.length:()I
     112: tableswitch   { // 2 to 7
                     2: 152
                     3: 152
                     4: 152
                     5: 156
                     6: 156
                     7: 152
               default: 156
          }
     152: iconst_1
     153: goto          157
     156: iconst_0
     157: istore        16
     159: iload         16
     161: istore        17
     163: iload         14
     165: iload         17
     167: iadd
     168: istore        10
     170: goto          74
     173: iload         10
     175: istore        14
     177: iload         9
     179: iload         14
     181: iadd
     182: istore_1
     183: nop
     184: nop
     185: goto          20
     188: nop
     189: iload_1
     190: ireturn

  private final puzzle8.DigitWiring decryptPattern(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: checkcast     #45                 // class java/lang/Iterable
       4: astore_3
       5: iconst_0
       6: istore        4
       8: aload_3
       9: astore        5
      11: new           #165                // class java/util/LinkedHashMap
      14: dup
      15: invokespecial #166                // Method java/util/LinkedHashMap."<init>":()V
      18: checkcast     #168                // class java/util/Map
      21: astore        6
      23: iconst_0
      24: istore        7
      26: aload         5
      28: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      33: astore        8
      35: aload         8
      37: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      42: ifeq          150
      45: aload         8
      47: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      52: astore        9
      54: aload         9
      56: checkcast     #30                 // class java/lang/String
      59: astore        10
      61: iconst_0
      62: istore        11
      64: aload         10
      66: invokevirtual #151                // Method java/lang/String.length:()I
      69: invokestatic  #174                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      72: astore        12
      74: aload         6
      76: astore        13
      78: iconst_0
      79: istore        14
      81: aload         13
      83: aload         12
      85: invokeinterface #177,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      90: astore        15
      92: aload         15
      94: ifnonnull     129
      97: iconst_0
      98: istore        16
     100: new           #47                 // class java/util/ArrayList
     103: dup
     104: invokespecial #48                 // Method java/util/ArrayList."<init>":()V
     107: checkcast     #74                 // class java/util/List
     110: astore        16
     112: aload         13
     114: aload         12
     116: aload         16
     118: invokeinterface #181,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     123: pop
     124: aload         16
     126: goto          131
     129: aload         15
     131: nop
     132: checkcast     #74                 // class java/util/List
     135: astore        10
     137: aload         10
     139: aload         9
     141: invokeinterface #182,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     146: pop
     147: goto          35
     150: aload         6
     152: nop
     153: astore_2
     154: iconst_0
     155: istore_3
     156: iconst_0
     157: istore        4
     159: iconst_0
     160: istore        5
     162: iconst_0
     163: istore        6
     165: iconst_0
     166: istore        7
     168: iconst_0
     169: istore        8
     171: iconst_0
     172: istore        9
     174: aload_2
     175: iconst_2
     176: invokestatic  #174                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     179: aconst_null
     180: invokeinterface #185,  3          // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     185: checkcast     #74                 // class java/util/List
     188: dup
     189: ifnull        214
     192: iconst_0
     193: invokeinterface #97,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     198: checkcast     #30                 // class java/lang/String
     201: dup
     202: ifnull        214
     205: checkcast     #35                 // class java/lang/CharSequence
     208: invokestatic  #189                // Method kotlin/text/StringsKt.toList:(Ljava/lang/CharSequence;)Ljava/util/List;
     211: goto          216
     214: pop
     215: aconst_null
     216: astore        10
     218: aload_2
     219: iconst_3
     220: invokestatic  #174                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     223: aconst_null
     224: invokeinterface #185,  3          // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     229: checkcast     #74                 // class java/util/List
     232: dup
     233: ifnull        258
     236: iconst_0
     237: invokeinterface #97,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     242: checkcast     #30                 // class java/lang/String
     245: dup
     246: ifnull        258
     249: checkcast     #35                 // class java/lang/CharSequence
     252: invokestatic  #189                // Method kotlin/text/StringsKt.toList:(Ljava/lang/CharSequence;)Ljava/util/List;
     255: goto          260
     258: pop
     259: aconst_null
     260: astore        11
     262: aload_2
     263: iconst_4
     264: invokestatic  #174                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     267: aconst_null
     268: invokeinterface #185,  3          // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     273: checkcast     #74                 // class java/util/List
     276: dup
     277: ifnull        302
     280: iconst_0
     281: invokeinterface #97,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     286: checkcast     #30                 // class java/lang/String
     289: dup
     290: ifnull        302
     293: checkcast     #35                 // class java/lang/CharSequence
     296: invokestatic  #189                // Method kotlin/text/StringsKt.toList:(Ljava/lang/CharSequence;)Ljava/util/List;
     299: goto          304
     302: pop
     303: aconst_null
     304: astore        12
     306: aload         11
     308: ifnull        321
     311: aload         10
     313: ifnull        321
     316: aload         12
     318: ifnonnull     339
     321: new           #191                // class puzzle8/DigitWiring
     324: dup
     325: aconst_null
     326: aconst_null
     327: aconst_null
     328: aconst_null
     329: aconst_null
     330: aconst_null
     331: aconst_null
     332: bipush        127
     334: aconst_null
     335: invokespecial #194                // Method puzzle8/DigitWiring."<init>":(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     338: areturn
     339: aload         11
     341: checkcast     #45                 // class java/lang/Iterable
     344: astore        13
     346: iconst_0
     347: istore        14
     349: aload         13
     351: astore        15
     353: new           #47                 // class java/util/ArrayList
     356: dup
     357: invokespecial #48                 // Method java/util/ArrayList."<init>":()V
     360: checkcast     #50                 // class java/util/Collection
     363: astore        16
     365: iconst_0
     366: istore        17
     368: aload         15
     370: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     375: astore        18
     377: aload         18
     379: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     384: ifeq          437
     387: aload         18
     389: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     394: astore        19
     396: aload         19
     398: checkcast     #196                // class java/lang/Character
     401: invokevirtual #200                // Method java/lang/Character.charValue:()C
     404: istore        20
     406: iconst_0
     407: istore        21
     409: aload         10
     411: iload         20
     413: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     416: invokeinterface #206,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
     421: ifne          377
     424: aload         16
     426: aload         19
     428: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     433: pop
     434: goto          377
     437: aload         16
     439: checkcast     #74                 // class java/util/List
     442: nop
     443: iconst_0
     444: invokeinterface #97,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     449: checkcast     #196                // class java/lang/Character
     452: invokevirtual #200                // Method java/lang/Character.charValue:()C
     455: istore_3
     456: aload         11
     458: checkcast     #45                 // class java/lang/Iterable
     461: astore        14
     463: iconst_0
     464: istore        15
     466: aload         14
     468: astore        16
     470: new           #47                 // class java/util/ArrayList
     473: dup
     474: invokespecial #48                 // Method java/util/ArrayList."<init>":()V
     477: checkcast     #50                 // class java/util/Collection
     480: astore        17
     482: iconst_0
     483: istore        18
     485: aload         16
     487: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     492: astore        19
     494: aload         19
     496: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     501: ifeq          554
     504: aload         19
     506: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     511: astore        20
     513: aload         20
     515: checkcast     #196                // class java/lang/Character
     518: invokevirtual #200                // Method java/lang/Character.charValue:()C
     521: istore        21
     523: iconst_0
     524: istore        22
     526: aload         10
     528: iload         21
     530: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     533: invokeinterface #206,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
     538: ifeq          494
     541: aload         17
     543: aload         20
     545: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     550: pop
     551: goto          494
     554: aload         17
     556: checkcast     #74                 // class java/util/List
     559: nop
     560: astore        13
     562: aload         12
     564: checkcast     #45                 // class java/lang/Iterable
     567: astore        15
     569: iconst_0
     570: istore        16
     572: aload         15
     574: astore        17
     576: new           #47                 // class java/util/ArrayList
     579: dup
     580: invokespecial #48                 // Method java/util/ArrayList."<init>":()V
     583: checkcast     #50                 // class java/util/Collection
     586: astore        18
     588: iconst_0
     589: istore        19
     591: aload         17
     593: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     598: astore        20
     600: aload         20
     602: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     607: ifeq          674
     610: aload         20
     612: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     617: astore        21
     619: aload         21
     621: checkcast     #196                // class java/lang/Character
     624: invokevirtual #200                // Method java/lang/Character.charValue:()C
     627: istore        22
     629: iconst_0
     630: istore        23
     632: aload         10
     634: iload         22
     636: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     639: invokeinterface #206,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
     644: ifne          653
     647: iload         22
     649: iload_3
     650: if_icmpne     657
     653: iconst_1
     654: goto          658
     657: iconst_0
     658: ifne          600
     661: aload         18
     663: aload         21
     665: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     670: pop
     671: goto          600
     674: aload         18
     676: checkcast     #74                 // class java/util/List
     679: nop
     680: astore        14
     682: nop
     683: aload_2
     684: iconst_5
     685: invokestatic  #174                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     688: aconst_null
     689: invokeinterface #185,  3          // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     694: checkcast     #74                 // class java/util/List
     697: astore        16
     699: aload         16
     701: ifnull        1203
     704: aload         16
     706: checkcast     #45                 // class java/lang/Iterable
     709: astore        18
     711: nop
     712: iconst_0
     713: istore        19
     715: aload         18
     717: astore        20
     719: new           #47                 // class java/util/ArrayList
     722: dup
     723: aload         18
     725: bipush        10
     727: invokestatic  #80                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     730: invokespecial #83                 // Method java/util/ArrayList."<init>":(I)V
     733: checkcast     #50                 // class java/util/Collection
     736: astore        21
     738: iconst_0
     739: istore        22
     741: aload         20
     743: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     748: astore        23
     750: aload         23
     752: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     757: ifeq          803
     760: aload         23
     762: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     767: astore        24
     769: aload         21
     771: aload         24
     773: checkcast     #30                 // class java/lang/String
     776: astore        25
     778: astore        36
     780: iconst_0
     781: istore        26
     783: aload         25
     785: checkcast     #35                 // class java/lang/CharSequence
     788: invokestatic  #189                // Method kotlin/text/StringsKt.toList:(Ljava/lang/CharSequence;)Ljava/util/List;
     791: aload         36
     793: swap
     794: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     799: pop
     800: goto          750
     803: aload         21
     805: checkcast     #74                 // class java/util/List
     808: nop
     809: checkcast     #45                 // class java/lang/Iterable
     812: astore        19
     814: nop
     815: iconst_0
     816: istore        20
     818: aload         19
     820: astore        21
     822: new           #47                 // class java/util/ArrayList
     825: dup
     826: invokespecial #48                 // Method java/util/ArrayList."<init>":()V
     829: checkcast     #50                 // class java/util/Collection
     832: astore        22
     834: iconst_0
     835: istore        23
     837: aload         21
     839: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     844: astore        24
     846: aload         24
     848: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     853: ifeq          902
     856: aload         24
     858: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     863: astore        25
     865: aload         25
     867: checkcast     #74                 // class java/util/List
     870: astore        26
     872: iconst_0
     873: istore        27
     875: aload         26
     877: iload_3
     878: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
     881: invokeinterface #206,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
     886: ifeq          846
     889: aload         22
     891: aload         25
     893: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     898: pop
     899: goto          846
     902: aload         22
     904: checkcast     #74                 // class java/util/List
     907: nop
     908: checkcast     #45                 // class java/lang/Iterable
     911: astore        20
     913: nop
     914: iconst_0
     915: istore        21
     917: aload         20
     919: astore        22
     921: new           #47                 // class java/util/ArrayList
     924: dup
     925: invokespecial #48                 // Method java/util/ArrayList."<init>":()V
     928: checkcast     #50                 // class java/util/Collection
     931: astore        23
     933: iconst_0
     934: istore        24
     936: aload         22
     938: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     943: astore        25
     945: aload         25
     947: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     952: ifeq          1002
     955: aload         25
     957: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     962: astore        26
     964: aload         26
     966: checkcast     #74                 // class java/util/List
     969: astore        27
     971: iconst_0
     972: istore        28
     974: aload         27
     976: aload         13
     978: checkcast     #50                 // class java/util/Collection
     981: invokeinterface #210,  2          // InterfaceMethod java/util/List.containsAll:(Ljava/util/Collection;)Z
     986: ifeq          945
     989: aload         23
     991: aload         26
     993: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     998: pop
     999: goto          945
    1002: aload         23
    1004: checkcast     #74                 // class java/util/List
    1007: nop
    1008: checkcast     #45                 // class java/lang/Iterable
    1011: astore        21
    1013: nop
    1014: iconst_0
    1015: istore        22
    1017: aload         21
    1019: astore        23
    1021: new           #47                 // class java/util/ArrayList
    1024: dup
    1025: invokespecial #48                 // Method java/util/ArrayList."<init>":()V
    1028: checkcast     #50                 // class java/util/Collection
    1031: astore        24
    1033: iconst_0
    1034: istore        25
    1036: aload         23
    1038: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1043: astore        26
    1045: aload         26
    1047: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1052: ifeq          1187
    1055: aload         26
    1057: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1062: astore        27
    1064: aload         27
    1066: checkcast     #74                 // class java/util/List
    1069: astore        28
    1071: iconst_0
    1072: istore        29
    1074: aload         14
    1076: checkcast     #45                 // class java/lang/Iterable
    1079: astore        30
    1081: iconst_0
    1082: istore        31
    1084: aload         30
    1086: instanceof    #50                 // class java/util/Collection
    1089: ifeq          1109
    1092: aload         30
    1094: checkcast     #50                 // class java/util/Collection
    1097: invokeinterface #213,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
    1102: ifeq          1109
    1105: iconst_0
    1106: goto          1170
    1109: aload         30
    1111: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1116: astore        32
    1118: aload         32
    1120: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1125: ifeq          1169
    1128: aload         32
    1130: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1135: astore        33
    1137: aload         33
    1139: checkcast     #196                // class java/lang/Character
    1142: invokevirtual #200                // Method java/lang/Character.charValue:()C
    1145: istore        34
    1147: iconst_0
    1148: istore        35
    1150: aload         28
    1152: iload         34
    1154: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1157: invokeinterface #206,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    1162: ifeq          1118
    1165: iconst_1
    1166: goto          1170
    1169: iconst_0
    1170: nop
    1171: ifeq          1045
    1174: aload         24
    1176: aload         27
    1178: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1183: pop
    1184: goto          1045
    1187: aload         24
    1189: checkcast     #74                 // class java/util/List
    1192: nop
    1193: iconst_0
    1194: invokestatic  #217                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1197: checkcast     #74                 // class java/util/List
    1200: goto          1204
    1203: aconst_null
    1204: astore        15
    1206: aload         15
    1208: ifnonnull     1238
    1211: ldc           #219                // String no pattern for 3
    1213: getstatic     #225                // Field java/lang/System.out:Ljava/io/PrintStream;
    1216: swap
    1217: invokevirtual #231                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
    1220: new           #191                // class puzzle8/DigitWiring
    1223: dup
    1224: aconst_null
    1225: aconst_null
    1226: aconst_null
    1227: aconst_null
    1228: aconst_null
    1229: aconst_null
    1230: aconst_null
    1231: bipush        127
    1233: aconst_null
    1234: invokespecial #194                // Method puzzle8/DigitWiring."<init>":(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
    1237: areturn
    1238: aload         15
    1240: checkcast     #45                 // class java/lang/Iterable
    1243: astore        16
    1245: iconst_0
    1246: istore        17
    1248: aload         16
    1250: astore        18
    1252: new           #47                 // class java/util/ArrayList
    1255: dup
    1256: invokespecial #48                 // Method java/util/ArrayList."<init>":()V
    1259: checkcast     #50                 // class java/util/Collection
    1262: astore        19
    1264: iconst_0
    1265: istore        20
    1267: aload         18
    1269: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1274: astore        21
    1276: aload         21
    1278: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1283: ifeq          1336
    1286: aload         21
    1288: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1293: astore        22
    1295: aload         22
    1297: checkcast     #196                // class java/lang/Character
    1300: invokevirtual #200                // Method java/lang/Character.charValue:()C
    1303: istore        23
    1305: iconst_0
    1306: istore        24
    1308: aload         14
    1310: iload         23
    1312: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1315: invokeinterface #206,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    1320: ifeq          1276
    1323: aload         19
    1325: aload         22
    1327: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1332: pop
    1333: goto          1276
    1336: aload         19
    1338: checkcast     #74                 // class java/util/List
    1341: nop
    1342: iconst_0
    1343: invokeinterface #97,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1348: checkcast     #196                // class java/lang/Character
    1351: invokevirtual #200                // Method java/lang/Character.charValue:()C
    1354: istore        6
    1356: aload         14
    1358: checkcast     #45                 // class java/lang/Iterable
    1361: astore        16
    1363: iconst_0
    1364: istore        17
    1366: aload         16
    1368: astore        18
    1370: new           #47                 // class java/util/ArrayList
    1373: dup
    1374: invokespecial #48                 // Method java/util/ArrayList."<init>":()V
    1377: checkcast     #50                 // class java/util/Collection
    1380: astore        19
    1382: iconst_0
    1383: istore        20
    1385: aload         18
    1387: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1392: astore        21
    1394: aload         21
    1396: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1401: ifeq          1454
    1404: aload         21
    1406: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1411: astore        22
    1413: aload         22
    1415: checkcast     #196                // class java/lang/Character
    1418: invokevirtual #200                // Method java/lang/Character.charValue:()C
    1421: istore        23
    1423: iconst_0
    1424: istore        24
    1426: iload         23
    1428: iload         6
    1430: if_icmpne     1437
    1433: iconst_1
    1434: goto          1438
    1437: iconst_0
    1438: ifne          1394
    1441: aload         19
    1443: aload         22
    1445: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1450: pop
    1451: goto          1394
    1454: aload         19
    1456: checkcast     #74                 // class java/util/List
    1459: nop
    1460: iconst_0
    1461: invokeinterface #97,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1466: checkcast     #196                // class java/lang/Character
    1469: invokevirtual #200                // Method java/lang/Character.charValue:()C
    1472: istore        4
    1474: aload         15
    1476: checkcast     #45                 // class java/lang/Iterable
    1479: astore        16
    1481: iconst_0
    1482: istore        17
    1484: aload         16
    1486: astore        18
    1488: new           #47                 // class java/util/ArrayList
    1491: dup
    1492: invokespecial #48                 // Method java/util/ArrayList."<init>":()V
    1495: checkcast     #50                 // class java/util/Collection
    1498: astore        19
    1500: iconst_0
    1501: istore        20
    1503: aload         18
    1505: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1510: astore        21
    1512: aload         21
    1514: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1519: ifeq          1593
    1522: aload         21
    1524: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1529: astore        22
    1531: aload         22
    1533: checkcast     #196                // class java/lang/Character
    1536: invokevirtual #200                // Method java/lang/Character.charValue:()C
    1539: istore        23
    1541: iconst_0
    1542: istore        24
    1544: iload         23
    1546: iload_3
    1547: if_icmpeq     1572
    1550: iload         23
    1552: iload         6
    1554: if_icmpeq     1572
    1557: aload         10
    1559: iload         23
    1561: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1564: invokeinterface #206,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    1569: ifeq          1576
    1572: iconst_1
    1573: goto          1577
    1576: iconst_0
    1577: ifne          1512
    1580: aload         19
    1582: aload         22
    1584: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1589: pop
    1590: goto          1512
    1593: aload         19
    1595: checkcast     #74                 // class java/util/List
    1598: nop
    1599: iconst_0
    1600: invokeinterface #97,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1605: checkcast     #196                // class java/lang/Character
    1608: invokevirtual #200                // Method java/lang/Character.charValue:()C
    1611: istore        9
    1613: nop
    1614: aload_2
    1615: iconst_5
    1616: invokestatic  #174                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
    1619: aconst_null
    1620: invokeinterface #185,  3          // InterfaceMethod java/util/Map.getOrDefault:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    1625: checkcast     #74                 // class java/util/List
    1628: astore        17
    1630: aload         17
    1632: ifnull        2079
    1635: aload         17
    1637: checkcast     #45                 // class java/lang/Iterable
    1640: astore        19
    1642: nop
    1643: iconst_0
    1644: istore        20
    1646: aload         19
    1648: astore        21
    1650: new           #47                 // class java/util/ArrayList
    1653: dup
    1654: aload         19
    1656: bipush        10
    1658: invokestatic  #80                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
    1661: invokespecial #83                 // Method java/util/ArrayList."<init>":(I)V
    1664: checkcast     #50                 // class java/util/Collection
    1667: astore        22
    1669: iconst_0
    1670: istore        23
    1672: aload         21
    1674: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1679: astore        24
    1681: aload         24
    1683: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1688: ifeq          1734
    1691: aload         24
    1693: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1698: astore        25
    1700: aload         22
    1702: aload         25
    1704: checkcast     #30                 // class java/lang/String
    1707: astore        26
    1709: astore        36
    1711: iconst_0
    1712: istore        27
    1714: aload         26
    1716: checkcast     #35                 // class java/lang/CharSequence
    1719: invokestatic  #189                // Method kotlin/text/StringsKt.toList:(Ljava/lang/CharSequence;)Ljava/util/List;
    1722: aload         36
    1724: swap
    1725: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1730: pop
    1731: goto          1681
    1734: aload         22
    1736: checkcast     #74                 // class java/util/List
    1739: nop
    1740: checkcast     #45                 // class java/lang/Iterable
    1743: astore        20
    1745: nop
    1746: iconst_0
    1747: istore        21
    1749: aload         20
    1751: astore        22
    1753: new           #47                 // class java/util/ArrayList
    1756: dup
    1757: invokespecial #48                 // Method java/util/ArrayList."<init>":()V
    1760: checkcast     #50                 // class java/util/Collection
    1763: astore        23
    1765: iconst_0
    1766: istore        24
    1768: aload         22
    1770: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1775: astore        25
    1777: aload         25
    1779: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1784: ifeq          1878
    1787: aload         25
    1789: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1794: astore        26
    1796: aload         26
    1798: checkcast     #74                 // class java/util/List
    1801: astore        27
    1803: iconst_0
    1804: istore        28
    1806: aload         27
    1808: iconst_4
    1809: anewarray     #196                // class java/lang/Character
    1812: astore        29
    1814: aload         29
    1816: iconst_0
    1817: iload_3
    1818: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1821: aastore
    1822: aload         29
    1824: iconst_1
    1825: iload         4
    1827: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1830: aastore
    1831: aload         29
    1833: iconst_2
    1834: iload         6
    1836: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1839: aastore
    1840: aload         29
    1842: iconst_3
    1843: iload         9
    1845: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    1848: aastore
    1849: aload         29
    1851: invokestatic  #235                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
    1854: checkcast     #50                 // class java/util/Collection
    1857: invokeinterface #210,  2          // InterfaceMethod java/util/List.containsAll:(Ljava/util/Collection;)Z
    1862: ifeq          1777
    1865: aload         23
    1867: aload         26
    1869: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1874: pop
    1875: goto          1777
    1878: aload         23
    1880: checkcast     #74                 // class java/util/List
    1883: nop
    1884: checkcast     #45                 // class java/lang/Iterable
    1887: astore        21
    1889: nop
    1890: iconst_0
    1891: istore        22
    1893: aload         21
    1895: astore        23
    1897: new           #47                 // class java/util/ArrayList
    1900: dup
    1901: invokespecial #48                 // Method java/util/ArrayList."<init>":()V
    1904: checkcast     #50                 // class java/util/Collection
    1907: astore        24
    1909: iconst_0
    1910: istore        25
    1912: aload         23
    1914: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1919: astore        26
    1921: aload         26
    1923: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1928: ifeq          2063
    1931: aload         26
    1933: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1938: astore        27
    1940: aload         27
    1942: checkcast     #74                 // class java/util/List
    1945: astore        28
    1947: iconst_0
    1948: istore        29
    1950: aload         13
    1952: checkcast     #45                 // class java/lang/Iterable
    1955: astore        30
    1957: iconst_0
    1958: istore        31
    1960: aload         30
    1962: instanceof    #50                 // class java/util/Collection
    1965: ifeq          1985
    1968: aload         30
    1970: checkcast     #50                 // class java/util/Collection
    1973: invokeinterface #213,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
    1978: ifeq          1985
    1981: iconst_0
    1982: goto          2046
    1985: aload         30
    1987: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1992: astore        32
    1994: aload         32
    1996: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2001: ifeq          2045
    2004: aload         32
    2006: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    2011: astore        33
    2013: aload         33
    2015: checkcast     #196                // class java/lang/Character
    2018: invokevirtual #200                // Method java/lang/Character.charValue:()C
    2021: istore        34
    2023: iconst_0
    2024: istore        35
    2026: aload         28
    2028: iload         34
    2030: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2033: invokeinterface #206,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    2038: ifeq          1994
    2041: iconst_1
    2042: goto          2046
    2045: iconst_0
    2046: nop
    2047: ifeq          1921
    2050: aload         24
    2052: aload         27
    2054: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    2059: pop
    2060: goto          1921
    2063: aload         24
    2065: checkcast     #74                 // class java/util/List
    2068: nop
    2069: iconst_0
    2070: invokestatic  #217                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    2073: checkcast     #74                 // class java/util/List
    2076: goto          2080
    2079: aconst_null
    2080: astore        16
    2082: aload         16
    2084: ifnonnull     2114
    2087: ldc           #237                // String no pattern for 5
    2089: getstatic     #225                // Field java/lang/System.out:Ljava/io/PrintStream;
    2092: swap
    2093: invokevirtual #231                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
    2096: new           #191                // class puzzle8/DigitWiring
    2099: dup
    2100: aconst_null
    2101: aconst_null
    2102: aconst_null
    2103: aconst_null
    2104: aconst_null
    2105: aconst_null
    2106: aconst_null
    2107: bipush        127
    2109: aconst_null
    2110: invokespecial #194                // Method puzzle8/DigitWiring."<init>":(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
    2113: areturn
    2114: aload         16
    2116: checkcast     #45                 // class java/lang/Iterable
    2119: astore        17
    2121: iconst_0
    2122: istore        18
    2124: aload         17
    2126: astore        19
    2128: new           #47                 // class java/util/ArrayList
    2131: dup
    2132: invokespecial #48                 // Method java/util/ArrayList."<init>":()V
    2135: checkcast     #50                 // class java/util/Collection
    2138: astore        20
    2140: iconst_0
    2141: istore        21
    2143: aload         19
    2145: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    2150: astore        22
    2152: aload         22
    2154: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2159: ifeq          2212
    2162: aload         22
    2164: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    2169: astore        23
    2171: aload         23
    2173: checkcast     #196                // class java/lang/Character
    2176: invokevirtual #200                // Method java/lang/Character.charValue:()C
    2179: istore        24
    2181: iconst_0
    2182: istore        25
    2184: aload         13
    2186: iload         24
    2188: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2191: invokeinterface #206,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    2196: ifeq          2152
    2199: aload         20
    2201: aload         23
    2203: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    2208: pop
    2209: goto          2152
    2212: aload         20
    2214: checkcast     #74                 // class java/util/List
    2217: nop
    2218: iconst_0
    2219: invokeinterface #97,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    2224: checkcast     #196                // class java/lang/Character
    2227: invokevirtual #200                // Method java/lang/Character.charValue:()C
    2230: istore        8
    2232: aload         13
    2234: checkcast     #45                 // class java/lang/Iterable
    2237: astore        17
    2239: iconst_0
    2240: istore        18
    2242: aload         17
    2244: astore        19
    2246: new           #47                 // class java/util/ArrayList
    2249: dup
    2250: invokespecial #48                 // Method java/util/ArrayList."<init>":()V
    2253: checkcast     #50                 // class java/util/Collection
    2256: astore        20
    2258: iconst_0
    2259: istore        21
    2261: aload         19
    2263: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    2268: astore        22
    2270: aload         22
    2272: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2277: ifeq          2330
    2280: aload         22
    2282: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    2287: astore        23
    2289: aload         23
    2291: checkcast     #196                // class java/lang/Character
    2294: invokevirtual #200                // Method java/lang/Character.charValue:()C
    2297: istore        24
    2299: iconst_0
    2300: istore        25
    2302: iload         24
    2304: iload         8
    2306: if_icmpne     2313
    2309: iconst_1
    2310: goto          2314
    2313: iconst_0
    2314: ifne          2270
    2317: aload         20
    2319: aload         23
    2321: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    2326: pop
    2327: goto          2270
    2330: aload         20
    2332: checkcast     #74                 // class java/util/List
    2335: nop
    2336: iconst_0
    2337: invokeinterface #97,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    2342: checkcast     #196                // class java/lang/Character
    2345: invokevirtual #200                // Method java/lang/Character.charValue:()C
    2348: istore        5
    2350: ldc           #239                // String abcdefg
    2352: checkcast     #35                 // class java/lang/CharSequence
    2355: invokestatic  #189                // Method kotlin/text/StringsKt.toList:(Ljava/lang/CharSequence;)Ljava/util/List;
    2358: checkcast     #45                 // class java/lang/Iterable
    2361: astore        17
    2363: iconst_0
    2364: istore        18
    2366: aload         17
    2368: astore        19
    2370: new           #47                 // class java/util/ArrayList
    2373: dup
    2374: invokespecial #48                 // Method java/util/ArrayList."<init>":()V
    2377: checkcast     #50                 // class java/util/Collection
    2380: astore        20
    2382: iconst_0
    2383: istore        21
    2385: aload         19
    2387: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    2392: astore        22
    2394: aload         22
    2396: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2401: ifeq          2517
    2404: aload         22
    2406: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    2411: astore        23
    2413: aload         23
    2415: checkcast     #196                // class java/lang/Character
    2418: invokevirtual #200                // Method java/lang/Character.charValue:()C
    2421: istore        24
    2423: iconst_0
    2424: istore        25
    2426: bipush        6
    2428: anewarray     #196                // class java/lang/Character
    2431: astore        26
    2433: aload         26
    2435: iconst_0
    2436: iload_3
    2437: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2440: aastore
    2441: aload         26
    2443: iconst_1
    2444: iload         4
    2446: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2449: aastore
    2450: aload         26
    2452: iconst_2
    2453: iload         5
    2455: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2458: aastore
    2459: aload         26
    2461: iconst_3
    2462: iload         6
    2464: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2467: aastore
    2468: aload         26
    2470: iconst_4
    2471: iload         8
    2473: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2476: aastore
    2477: aload         26
    2479: iconst_5
    2480: iload         9
    2482: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2485: aastore
    2486: aload         26
    2488: invokestatic  #235                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
    2491: iload         24
    2493: invokestatic  #203                // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
    2496: invokeinterface #206,  2          // InterfaceMethod java/util/List.contains:(Ljava/lang/Object;)Z
    2501: ifne          2394
    2504: aload         20
    2506: aload         23
    2508: invokeinterface #72,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    2513: pop
    2514: goto          2394
    2517: aload         20
    2519: checkcast     #74                 // class java/util/List
    2522: nop
    2523: iconst_0
    2524: invokeinterface #97,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    2529: checkcast     #196                // class java/lang/Character
    2532: invokevirtual #200                // Method java/lang/Character.charValue:()C
    2535: istore        7
    2537: new           #191                // class puzzle8/DigitWiring
    2540: dup
    2541: iload_3
    2542: invokestatic  #242                // Method java/lang/String.valueOf:(C)Ljava/lang/String;
    2545: iload         4
    2547: invokestatic  #242                // Method java/lang/String.valueOf:(C)Ljava/lang/String;
    2550: iload         5
    2552: invokestatic  #242                // Method java/lang/String.valueOf:(C)Ljava/lang/String;
    2555: iload         6
    2557: invokestatic  #242                // Method java/lang/String.valueOf:(C)Ljava/lang/String;
    2560: iload         7
    2562: invokestatic  #242                // Method java/lang/String.valueOf:(C)Ljava/lang/String;
    2565: iload         8
    2567: invokestatic  #242                // Method java/lang/String.valueOf:(C)Ljava/lang/String;
    2570: iload         9
    2572: invokestatic  #242                // Method java/lang/String.valueOf:(C)Ljava/lang/String;
    2575: invokespecial #245                // Method puzzle8/DigitWiring."<init>":(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
    2578: areturn

  public final int findAllDigits();
    Code:
       0: aload_0
       1: aload_0
       2: getfield      #112                // Field input:Ljava/util/List;
       5: iconst_0
       6: invokeinterface #97,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      11: checkcast     #101                // class puzzle8/InputEntry
      14: invokevirtual #304                // Method puzzle8/InputEntry.getPatterns:()Ljava/util/List;
      17: invokespecial #306                // Method decryptPattern:(Ljava/util/List;)Lpuzzle8/DigitWiring;
      20: astore_1
      21: new           #308                // class java/lang/StringBuilder
      24: dup
      25: invokespecial #309                // Method java/lang/StringBuilder."<init>":()V
      28: aload_1
      29: invokevirtual #313                // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
      32: ldc_w         #315                // String  ->
      35: invokevirtual #318                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      38: aload_1
      39: aload_0
      40: getfield      #112                // Field input:Ljava/util/List;
      43: iconst_0
      44: invokeinterface #97,  2           // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      49: checkcast     #101                // class puzzle8/InputEntry
      52: invokevirtual #148                // Method puzzle8/InputEntry.getOutput:()Ljava/util/List;
      55: invokevirtual #322                // Method puzzle8/DigitWiring.findNumberForList:(Ljava/util/List;)I
      58: invokevirtual #325                // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      61: invokevirtual #326                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      64: getstatic     #225                // Field java/lang/System.out:Ljava/io/PrintStream;
      67: swap
      68: invokevirtual #231                // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      71: aload_0
      72: getfield      #112                // Field input:Ljava/util/List;
      75: checkcast     #45                 // class java/lang/Iterable
      78: astore_2
      79: iconst_0
      80: istore_3
      81: iconst_0
      82: istore        4
      84: iload_3
      85: istore        5
      87: aload_2
      88: invokeinterface #54,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      93: astore        6
      95: aload         6
      97: invokeinterface #60,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     102: ifeq          157
     105: aload         6
     107: invokeinterface #64,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     112: astore        7
     114: iload         5
     116: aload         7
     118: checkcast     #101                // class puzzle8/InputEntry
     121: astore        8
     123: istore        9
     125: iconst_0
     126: istore        10
     128: aload_0
     129: aload         8
     131: invokevirtual #304                // Method puzzle8/InputEntry.getPatterns:()Ljava/util/List;
     134: invokespecial #306                // Method decryptPattern:(Ljava/util/List;)Lpuzzle8/DigitWiring;
     137: astore        11
     139: iload         9
     141: aload         11
     143: aload         8
     145: invokevirtual #148                // Method puzzle8/InputEntry.getOutput:()Ljava/util/List;
     148: invokevirtual #322                // Method puzzle8/DigitWiring.findNumberForList:(Ljava/util/List;)I
     151: iadd
     152: istore        5
     154: goto          95
     157: iload         5
     159: ireturn
}

Compiled from "SevenSegmentsDemystifier.kt"
public final class puzzle8.SevenSegmentsDemystifierKt {
  public static final void main();
    Code:
       0: new           #8                  // class puzzle8/SevenSegmentsDemystifier
       3: dup
       4: invokespecial #11                 // Method puzzle8/SevenSegmentsDemystifier."<init>":()V
       7: astore_0
       8: new           #13                 // class puzzle8/DigitWiring
      11: dup
      12: aconst_null
      13: aconst_null
      14: aconst_null
      15: aconst_null
      16: aconst_null
      17: aconst_null
      18: aconst_null
      19: bipush        127
      21: aconst_null
      22: invokespecial #16                 // Method puzzle8/DigitWiring."<init>":(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
      25: astore_1
      26: iconst_0
      27: istore        4
      29: invokestatic  #22                 // Method java/lang/System.currentTimeMillis:()J
      32: lstore        5
      34: iconst_0
      35: istore        7
      37: new           #24                 // class java/lang/StringBuilder
      40: dup
      41: invokespecial #25                 // Method java/lang/StringBuilder."<init>":()V
      44: ldc           #27                 // String test:
      46: invokevirtual #31                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      49: aload_1
      50: ldc           #33                 // String acf
      52: invokevirtual #37                 // Method puzzle8/DigitWiring.findNumber:(Ljava/lang/String;)I
      55: invokevirtual #40                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      58: invokevirtual #44                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      61: getstatic     #48                 // Field java/lang/System.out:Ljava/io/PrintStream;
      64: swap
      65: invokevirtual #54                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      68: new           #24                 // class java/lang/StringBuilder
      71: dup
      72: invokespecial #25                 // Method java/lang/StringBuilder."<init>":()V
      75: ldc           #56                 // String Part 1 solution is:
      77: invokevirtual #31                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      80: aload_0
      81: invokevirtual #60                 // Method puzzle8/SevenSegmentsDemystifier.countEasyDigits:()I
      84: invokevirtual #40                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      87: invokevirtual #44                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      90: getstatic     #48                 // Field java/lang/System.out:Ljava/io/PrintStream;
      93: swap
      94: invokevirtual #54                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      97: new           #24                 // class java/lang/StringBuilder
     100: dup
     101: invokespecial #25                 // Method java/lang/StringBuilder."<init>":()V
     104: ldc           #62                 // String Part 2 solution is:
     106: invokevirtual #31                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     109: aload_0
     110: invokevirtual #65                 // Method puzzle8/SevenSegmentsDemystifier.findAllDigits:()I
     113: invokevirtual #40                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
     116: invokevirtual #44                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     119: getstatic     #48                 // Field java/lang/System.out:Ljava/io/PrintStream;
     122: swap
     123: invokevirtual #54                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     126: nop
     127: nop
     128: invokestatic  #22                 // Method java/lang/System.currentTimeMillis:()J
     131: lload         5
     133: lsub
     134: lstore_2
     135: new           #24                 // class java/lang/StringBuilder
     138: dup
     139: invokespecial #25                 // Method java/lang/StringBuilder."<init>":()V
     142: ldc           #67                 // String Time:
     144: invokevirtual #31                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     147: lload_2
     148: invokevirtual #70                 // Method java/lang/StringBuilder.append:(J)Ljava/lang/StringBuilder;
     151: invokevirtual #44                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     154: getstatic     #48                 // Field java/lang/System.out:Ljava/io/PrintStream;
     157: swap
     158: invokevirtual #54                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     161: return

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #83                 // Method main:()V
       3: return
}