diff --git a/src/SMParser/SMParser.java b/src/SMParser/SMParser.java index e7d1b31..48757bb 100644 --- a/src/SMParser/SMParser.java +++ b/src/SMParser/SMParser.java @@ -1,28 +1,37 @@ package SMParser; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; +import java.io.OutputStream; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Paths; -import java.util.Arrays; +import java.util.ArrayList; + +import javax.json.Json; +import javax.json.JsonArrayBuilder; +import javax.json.JsonObject; +import javax.json.JsonObjectBuilder; +import javax.json.JsonWriter; public class SMParser { - private static String[] metaDataHeaders = {"OFFSET:","TITLE:","ARTIST:", "DISPLAYBPM:", "MUSIC","SAMPLESTART:"}; - String[] metadata; - + private static String[] metaDataHeaders = {"OFFSET:","TITLE:","ARTIST:", "DISPLAYBPM:", "MUSIC","SAMPLESTART:", "BANNER:", "BACKGROUND:", "SUBTITLE:"}; + private String[] metadata; + private ArrayList arrays; public SMParser(){ try { String file = readFile("test", Charset.defaultCharset()); String[] mainsplit = file.split("\\#"); - String[] metadata = new String[metaDataHeaders.length]; - + arrays = new ArrayList(); + metadata = new String[metaDataHeaders.length]; for(String s:mainsplit){ //searching for the metadata int i = 0; for(String header:metaDataHeaders){ if(s.contains(header)){ - metadata[i] = getValue(s).replace(';', ' '); + metadata[i] = getValue(s).replace(';', ' ').trim(); } i++; } @@ -36,9 +45,13 @@ public class SMParser { } s= s.replaceAll("//.*", ""); // remove some more bs s = s.replaceAll("\\;", ""); - System.out.println(difficulty); + notesplit = s.split("\\,"); //split everything in arrays which contains "beats" for 1 second double secondscounter = Double.parseDouble(metadata[0])*-1; + int extraButtonTime = notesplit.length / difficultyToMaxButtons(difficulty); + int maxButtons = 1; + JsonArrayBuilder objectsArrayBuilder = Json.createArrayBuilder(); + for(String notespersecond:notesplit){ notespersecond = notespersecond.trim(); String[] notes = notespersecond.split("\n"); @@ -47,21 +60,70 @@ public class SMParser { for(String note:notes){ int direction = noteToDirection(note); if(direction != -1){ - System.out.println(time + "\t\t" + direction); + JsonObjectBuilder object = Json.createObjectBuilder(); + object.add("time", time); + object.add("direction", direction); + object.add("button", (int)(Math.random()*maxButtons)); + objectsArrayBuilder.add(object.build()); + } + if(extraButtonTime*maxButtons < time){ + maxButtons++; } time += precision; } secondscounter++; } - System.out.println("----------"); + + arrays.add(Json.createObjectBuilder()); + arrays.get(arrays.size()-1).add("difficulty", difficulty); + arrays.get(arrays.size()-1).add("objects", objectsArrayBuilder); } }; } + writeJsonFile(); } catch (IOException e) { e.printStackTrace(); } } + private void writeJsonFile(){ + JsonObjectBuilder jsonfilebuilder = Json.createObjectBuilder(); + JsonArrayBuilder dataArrayBuilder = Json.createArrayBuilder(); + + jsonfilebuilder.add("meta", Json.createObjectBuilder().add("title", metadata[1]).add("subtitle", metadata[8]).add("author", metadata[2]).add("BPM", Double.parseDouble(metadata[3])).add("sample_start", Double.parseDouble(metadata[5]))); + jsonfilebuilder.add("file", Json.createObjectBuilder().add("audio", metadata[4]).add("background", metadata[7]).add("banner", metadata[6])); + for(JsonObjectBuilder ar:arrays){ + dataArrayBuilder.add(ar.build()); + } + jsonfilebuilder.add("data", dataArrayBuilder); + + + try { + JsonObject file = jsonfilebuilder.build(); + OutputStream os; + os = new FileOutputStream("emp.txt"); + JsonWriter jsonWriter = Json.createWriter(os); + jsonWriter.writeObject(file); + jsonWriter.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + + } + + private int difficultyToMaxButtons(String d){ + if(d.equals("Beginner")){ + return 2; + }else if(d.equals("Easy")){ + return 3; + }else if(d.equals("Medium")){ + return 4; + }else if(d.equals("Hard")){ + return 6; + } + return 0; + } + private String getValue(String s){ String[] split = s.split("\\:"); if(split[1] != null){ diff --git a/test b/test new file mode 100644 index 0000000..02e0a28 --- /dev/null +++ b/test @@ -0,0 +1,2125 @@ +#TITLE:WE ARE THE CHAMPIONS; +#SUBTITLE:(Factory Team Remix); +#ARTIST:LIVE 2 LOVE; +#TITLETRANSLIT:; +#SUBTITLETRANSLIT:; +#ARTISTTRANSLIT:; +#CREDIT:; +#BANNER:WE ARE THE CHAMPIONS (Factory Team Remix).png; +#BACKGROUND:WE ARE THE CHAMPIONS (Factory Team Remix)-bg.png; +#LYRICSPATH:WE ARE THE CHAMPIONS (Factory Team Remix).lrc; +#CDTITLE:./CDTITLES/DANCE MANIA SPORTS.PNG; +#MUSIC:WE ARE THE CHAMPIONS (Factory Team Remix).mp3; +#OFFSET:-3.823; +#SAMPLESTART:44.260; +#SAMPLELENGTH:12.000; +#SELECTABLE:YES; +#DISPLAYBPM:136.000; +#BPMS:0.000=136.000; +#STOPS:; +#BGCHANGES:; + +//---------------dance-single - ---------------- +#NOTES: + dance-single: + : + Beginner: + 1: + 0.155,0.200,0.146,0.000,0.000: +0000 +0000 +0000 +0000 +, +0000 +0000 +0000 +0000 +, +1000 +0000 +1000 +0000 +, +0001 +0000 +0001 +0000 +, +0100 +0000 +0100 +0000 +, +1001 +0000 +0000 +0000 +, +1000 +0000 +0001 +0001 +, +0000 +0000 +0100 +0100 +, +0000 +0000 +1000 +0000 +, +0010 +0000 +0010 +0010 +, +0000 +0000 +1000 +1000 +, +0000 +0000 +0010 +0000 +, +0001 +0000 +0001 +0000 +, +0010 +0000 +0100 +0000 +, +0001 +0000 +0100 +0000 +, +1000 +0000 +0100 +0000 +, +0001 +0000 +0010 +0000 +, +1000 +0000 +0010 +0000 +, +1001 +0000 +0010 +0000 +, +1001 +0000 +0100 +0000 +, +1001 +0000 +0000 +0000 +, +1001 +0000 +0110 +0000 +, +0110 +0000 +1001 +0000 +, +0001 +0000 +0001 +0000 +, +1000 +0000 +1000 +0000 +, +0001 +0000 +0001 +0000 +, +1001 +0000 +1001 +0000 +, +1000 +0000 +1000 +0000 +, +0001 +0000 +0001 +0000 +, +1000 +0000 +1000 +0000 +, +1001 +0000 +1001 +0000 +, +1000 +0000 +0001 +0000 +, +1000 +0000 +0001 +0000 +, +0001 +0000 +1000 +0000 +, +0001 +0000 +1000 +0000 +, +0001 +0000 +1000 +0000 +, +0001 +0001 +0000 +0000 +, +1000 +0000 +0001 +0000 +, +1000 +1000 +0000 +0000 +, +0010 +0000 +0100 +0000 +, +0010 +0000 +0100 +0000 +, +0010 +0000 +0000 +0000 +; + +//---------------dance-single - ---------------- +#NOTES: + dance-single: + : + Easy: + 3: + 0.217,0.262,0.146,0.037,0.000: // measure 1 +0000 +0000 +0000 +0000 +, // measure 2 +0000 +0000 +0000 +0000 +, // measure 3 +1000 +0000 +1000 +0000 +, // measure 4 +0001 +0000 +0001 +0000 +, // measure 5 +0100 +0000 +0100 +0000 +, // measure 6 +1001 +0000 +0000 +0000 +, // measure 7 +1000 +0000 +0001 +0001 +, // measure 8 +0100 +0000 +0100 +0100 +, // measure 9 +1000 +0000 +1000 +0001 +, // measure 10 +0010 +0000 +0010 +0010 +, // measure 11 +0001 +0000 +1000 +1000 +, // measure 12 +0100 +0000 +0010 +0100 +, // measure 13 +0001 +0000 +0001 +1000 +, // measure 14 +0010 +0000 +0100 +0010 +, // measure 15 +0001 +0100 +0100 +0000 +, // measure 16 +1000 +0100 +0100 +0000 +, // measure 17 +0001 +0010 +0010 +0000 +, // measure 18 +1000 +0010 +0010 +0000 +, // measure 19 +1001 +0000 +0010 +0000 +, // measure 20 +1001 +0000 +0100 +0000 +, // measure 21 +2002 +0000 +3003 +0000 +, // measure 22 +1001 +0000 +0110 +0000 +, // measure 23 +0110 +0000 +1001 +0000 +, // measure 24 +0001 +0010 +0001 +0000 +, // measure 25 +1000 +0010 +1000 +0000 +, // measure 26 +0001 +0010 +0001 +0000 +, // measure 27 +1001 +0000 +1001 +0000 +, // measure 28 +1000 +0100 +1000 +0000 +, // measure 29 +0001 +0100 +0001 +0000 +, // measure 30 +1000 +0100 +1000 +0000 +, // measure 31 +1001 +0000 +1001 +0000 +, // measure 32 +1000 +0010 +0001 +0010 +, // measure 33 +1000 +0100 +0001 +0100 +, // measure 34 +0001 +0010 +1000 +0010 +, // measure 35 +0001 +0100 +1000 +0100 +, // measure 36 +0001 +1000 +1000 +0100 +, // measure 37 +0001 +0001 +0100 +0000 +, // measure 38 +1000 +0001 +0001 +0100 +, // measure 39 +1000 +1000 +0100 +0000 +, // measure 40 +0010 +0000 +0100 +0000 +, // measure 41 +0010 +0100 +0100 +0000 +, // measure 42 +0020 +0000 +0000 +0000 +, // measure 43 +0000 +0000 +0000 +0000 +, // measure 44 +0030 +0000 +0000 +0000 +; + +//---------------dance-single - ---------------- +#NOTES: + dance-single: + : + Medium: + 5: + 0.362,0.366,0.268,0.195,0.000: +0000 +0000 +0000 +0000 +, +0000 +0000 +0000 +0000 +, +1000 +1000 +0001 +0001 +, +0010 +1000 +0001 +0000 +0010 +0001 +1000 +0000 +, +0010 +0010 +0100 +0100 +, +1000 +0100 +0010 +0001 +0100 +0000 +1001 +0000 +, +1000 +0010 +1000 +0100 +, +0001 +0000 +0010 +0000 +0001 +0100 +0100 +0000 +, +1000 +0100 +0001 +0010 +, +1000 +0000 +0001 +0000 +1001 +0000 +0100 +0100 +, +0001 +0010 +0001 +0100 +, +1000 +0000 +0010 +0000 +1000 +0100 +0100 +0000 +, +0001 +0100 +1000 +0010 +, +0001 +0000 +1000 +0000 +1001 +0000 +0010 +0010 +, +1000 +1001 +0010 +0011 +, +1000 +0100 +1000 +0000 +0001 +0100 +0001 +0000 +, +0001 +1001 +0010 +1010 +, +0001 +0100 +0001 +0000 +1000 +0100 +1000 +0000 +, +2000 +3100 +0200 +0310 +, +0020 +0031 +0002 +0013 +, +0020 +0200 +0000 +0330 +, +2000 +0010 +3002 +0100 +, +2003 +0010 +0002 +3003 +, +1000 +0010 +0001 +0010 +, +0101 +0000 +0000 +1010 +0000 +0000 +0000 +1000 +, +0010 +0100 +0010 +0100 +, +0110 +0001 +0110 +1000 +, +0001 +0010 +1000 +0010 +, +0100 +0010 +0010 +0000 +1000 +0001 +0001 +0000 +, +0010 +0101 +0010 +1100 +, +0001 +0100 +1000 +0000 +1000 +0100 +0001 +0000 +, +0100 +0010 +0001 +0101 +, +2000 +0000 +0000 +0002 +0000 +0000 +3003 +0000 +, +0100 +0010 +1000 +1100 +, +0002 +0000 +0000 +2000 +0000 +0000 +3003 +0000 +, +0010 +0110 +0100 +0110 +, +0001 +0000 +1000 +0100 +0010 +0001 +0100 +0000 +, +0101 +1000 +1100 +0001 +, +0110 +0000 +0000 +1001 +0000 +0000 +0100 +0000 +, +1000 +0010 +0001 +0000 +0001 +0010 +1000 +0000 +, +1000 +0100 +0010 +0100 +1000 +0000 +0001 +0000 +, +2002 +0000 +0000 +0000 +, +0000 +0000 +0000 +0000 +, +3003 +0000 +0000 +0000 +; + +//---------------dance-single - ---------------- +#NOTES: + dance-single: + : + Hard: + 7: + 0.412,0.392,0.085,0.061,0.079: +0000 +0000 +0000 +0000 +, +0000 +0000 +0000 +0000 +, +1000 +0000 +0001 +1000 +0000 +0100 +0010 +0001 +, +0000 +1000 +0001 +0000 +0010 +0001 +0100 +0000 +, +0001 +0000 +1000 +0001 +0000 +0010 +0100 +1000 +, +0000 +0001 +1000 +0000 +0100 +1000 +0010 +0000 +, +1000 +0001 +0100 +0000 +0001 +1000 +0100 +0000 +, +1000 +0010 +0100 +0000 +1000 +0100 +0010 +0000 +, +0001 +1000 +0010 +0000 +1000 +0001 +0010 +0000 +, +0001 +0100 +0010 +0000 +1000 +0010 +0100 +0000 +, +0001 +0100 +0010 +0000 +1000 +0000 +1001 +0000 +, +1000 +0100 +0010 +0000 +0001 +0000 +1001 +0000 +, +1000 +0001 +1000 +0000 +0001 +1000 +0001 +0000 +, +0010 +0000 +0000 +0010 +0000 +0000 +0010 +0000 +0100 +0000 +0000 +0100 +0000 +0000 +0100 +0000 +, +1000 +0100 +1000 +0001 +0000 +0001 +1000 +0010 +, +0000 +0100 +0001 +1000 +0100 +0000 +0101 +0000 +, +0001 +0100 +0001 +1000 +0000 +1000 +0001 +0010 +, +0000 +0100 +1000 +0001 +0010 +0000 +0110 +0000 +, +1000 +0000 +0000 +0010 +0000 +0000 +1000 +0000 +0001 +0000 +0000 +0010 +0000 +0000 +0001 +0000 +, +0100 +0000 +0000 +0001 +0000 +0000 +0100 +0000 +0010 +0000 +0000 +0100 +0000 +0000 +0001 +0000 +, +1000 +0000 +0000 +0010 +0000 +0000 +1000 +0000 +0001 +0000 +0000 +0100 +0000 +0000 +0001 +0000 +, +2000 +0010 +3001 +0000 +0002 +0010 +1003 +0000 +, +2000 +0100 +3001 +0000 +1001 +0000 +0000 +0000 +, +0001 +0010 +0100 +0010 +0000 +0100 +0100 +0000 +, +1000 +0010 +0100 +0010 +0000 +0100 +0100 +0000 +, +1000 +0001 +1000 +0100 +0010 +0001 +0010 +0000 +, +0001 +0000 +0000 +0001 +0000 +0000 +0001 +0000 +1000 +0000 +0000 +1000 +0000 +0000 +1000 +0000 +, +0001 +0100 +0010 +0100 +0000 +0010 +0010 +0000 +, +1000 +0100 +0010 +0100 +0000 +0010 +0010 +0000 +, +0001 +1000 +0100 +0010 +0001 +1000 +0010 +0000 +, +1000 +0000 +0000 +1000 +0000 +0000 +1000 +0000 +0001 +0000 +0000 +0001 +0000 +0000 +0001 +0000 +, +0010 +0000 +0010 +0001 +0000 +0001 +0010 +0000 +, +0011 +0000 +0100 +1000 +0000 +0000 +0100 +0000 +, +1000 +0000 +1000 +0100 +0000 +0100 +1000 +0000 +, +1010 +0000 +1000 +0001 +0000 +0000 +0001 +0000 +, +0100 +0010 +1000 +0010 +0000 +1000 +0100 +0000 +, +0010 +0001 +1000 +0100 +0000 +0001 +0010 +0000 +, +0100 +1000 +0001 +0010 +0000 +0001 +0100 +0000 +, +0001 +0100 +0010 +1000 +0000 +0001 +0100 +0000 +, +0010 +1000 +0010 +0000 +0100 +0010 +0100 +0000 +, +0001 +0000 +0100 +0000 +0010 +0000 +1000 +0000 +0000 +0000 +0010 +0000 +0000 +0200 +0000 +0000 +, +2000 +0000 +0000 +0000 +, +0000 +0000 +0000 +0000 +, +3300 +0000 +0000 +0000 +; + +//---------------dance-double - ---------------- +#NOTES: + dance-double: + : + Easy: + 3: + 0.203,0.262,0.183,0.049,0.000: +00000000 +00000000 +00000000 +00000000 +, +00000000 +00000000 +00000000 +00000000 +, +00010000 +00000000 +00010000 +00000000 +, +00001000 +00000000 +00001000 +00000000 +, +00010000 +00000000 +00001000 +00000000 +, +00100000 +00000000 +01000000 +00000000 +, +10000000 +00000000 +00010000 +00000000 +, +01000000 +01000000 +00100000 +00000000 +, +10000000 +00000000 +01000000 +00000000 +, +00010000 +00000000 +00011000 +00000000 +, +00000100 +00000000 +00001000 +00000000 +, +00000100 +00000100 +00000010 +00000000 +, +00000001 +00000000 +00000100 +00000000 +, +00001000 +00000000 +00011000 +00000000 +, +00100000 +00010000 +00010000 +00000000 +, +10000000 +10000000 +01000000 +00000000 +, +10000000 +00010000 +00010000 +00000000 +, +01000000 +01000000 +00010000 +00000000 +, +00011000 +00000000 +00001000 +00000000 +, +00001010 +00000000 +00001000 +00000000 +, +00022000 +00000000 +00033000 +00000000 +, +00001000 +00000000 +01000000 +00000000 +, +00010000 +00000000 +10010000 +00000000 +, +00100000 +10000000 +00100000 +00000000 +, +01000000 +00010000 +01000000 +00000000 +, +00001000 +00000000 +00011000 +00000000 +, +00010000 +00000000 +00000100 +00000000 +, +00000010 +00000001 +00000010 +00000000 +, +00000100 +00001000 +00000100 +00000000 +, +00010000 +00000000 +00011000 +00000000 +, +00001000 +00000000 +00100000 +00000000 +, +00010000 +01000000 +10000000 +01000000 +, +10010000 +00000000 +10010000 +00000000 +, +00100000 +00001000 +00010000 +00001000 +, +00011000 +00000000 +00011000 +00000000 +, +00000010 +00001000 +00000001 +00000001 +, +00000100 +00000010 +00001000 +00001000 +, +00000100 +00000000 +00010000 +00001000 +, +00011000 +00000000 +00011000 +00000000 +, +00001000 +00000000 +00100000 +00000000 +, +00010000 +00010000 +10000000 +00000000 +, +20020000 +00000000 +00000000 +00000000 +, +00000000 +00000000 +00000000 +00000000 +, +30030000 +00000000 +00000000 +00000000 +; + +//---------------dance-double - ---------------- +#NOTES: + dance-double: + : + Medium: + 5: + 0.311,0.314,0.256,0.097,0.000: +00000000 +00000000 +00000000 +00000000 +, +00000000 +00000000 +00000000 +00000000 +, +10000000 +10000000 +00010000 +00010000 +, +00100000 +00000000 +00010000 +00000000 +10000000 +01000000 +00010000 +00000000 +, +00001000 +00001000 +00000010 +00000010 +, +00000001 +00001000 +00001001 +00000000 +, +00000100 +00000001 +00000010 +00000001 +, +00000001 +00000100 +00001000 +00010000 +, +01000000 +10000000 +00100000 +10000000 +, +10000000 +01000000 +00010000 +00001000 +, +00000100 +00000010 +00001000 +00001100 +, +00000001 +00000100 +00000010 +00001010 +, +00010000 +00001000 +00100000 +01100000 +, +00100000 +00010000 +01000000 +00000000 +00100000 +10000000 +01000000 +00000000 +, +00100000 +00001000 +00010000 +00011000 +, +00000010 +00000000 +00000100 +00000000 +00000001 +00000001 +00000100 +00000000 +, +00000010 +00010000 +00001000 +00011000 +, +00100000 +00000000 +01000000 +00000000 +10000000 +10000000 +01000000 +00000000 +, +10010000 +00000000 +01100000 +00000000 +, +00011000 +00000000 +00000110 +00000000 +, +00000002 +00002000 +00000000 +00003003 +, +00000020 +00000000 +00020030 +00000000 +, +00032000 +00000000 +02003000 +03000000 +, +00010000 +00100000 +00010000 +10000000 +, +10010000 +00000000 +00000000 +01100000 +00000000 +00000000 +00000000 +00000000 +, +00100000 +01000000 +00100000 +01100000 +, +10000000 +00010000 +01000000 +00000000 +00010000 +10000000 +00100000 +00000000 +, +01000000 +00010000 +00001000 +00000010 +, +00000100 +00000001 +00001000 +00001001 +, +00000100 +00000010 +00000001 +00000101 +, +00001000 +00000010 +00000100 +00000000 +00000001 +00000010 +00000100 +00000000 +, +00001000 +00010000 +00100000 +01000000 +, +00110000 +00000000 +00000000 +00011000 +00000000 +00000000 +00000000 +00000000 +, +00001000 +00000010 +00000001 +00001000 +, +00001100 +00000000 +00000000 +00011000 +00000000 +00000000 +00000000 +00000000 +, +00010000 +00100000 +10000000 +01000000 +, +00010000 +00001000 +00000010 +00000001 +, +00001000 +00010000 +10000000 +00010000 +, +00001000 +00000001 +00001000 +00010000 +, +00100000 +00010000 +01000000 +00000000 +00010000 +10000000 +01000000 +00000000 +, +00010000 +00001000 +00011000 +00000000 +, +00022000 +00000000 +00000000 +00000000 +, +00000000 +00000000 +00000000 +00000000 +, +00033000 +00000000 +00000000 +00000000 +; + +//---------------dance-double - ---------------- +#NOTES: + dance-double: + : + Hard: + 7: + 0.414,0.416,0.085,0.073,0.067: +00000000 +00000000 +00000000 +00000000 +, +00000000 +00000000 +00000000 +00000000 +, +00001000 +00000000 +00100000 +00010000 +00000000 +01000000 +00100000 +10000000 +, +00000000 +01000000 +00100000 +00000000 +00010000 +00000000 +00011000 +00000000 +, +00010000 +00000000 +00000010 +00001000 +00000000 +00000100 +00000010 +00000001 +, +00000000 +00000100 +00000010 +00000000 +00010000 +00000000 +00100000 +00000000 +, +10000000 +00010000 +01000000 +00000000 +00100000 +10000000 +01000000 +00000000 +, +00100000 +00001000 +00010000 +00000000 +00000100 +00000000 +00001100 +00000000 +, +00000001 +00001000 +00000010 +00000000 +00000100 +00000001 +00000010 +00000000 +, +00000100 +00010000 +00001000 +00000000 +00100000 +00000000 +00110000 +00000000 +, +01000000 +00100000 +00010000 +00000000 +10000000 +01000000 +00010000 +00000000 +, +00001000 +00010000 +00000100 +00000000 +00000010 +00000001 +00001000 +00000000 +, +00000010 +00000100 +00000001 +00000000 +00001000 +00000010 +00010000 +00000000 +, +00001000 +00100000 +00001000 +00010000 +00000010 +00001000 +00000100 +00000000 +, +00010000 +00001000 +01000000 +00010000 +00000000 +10000000 +01000000 +00100000 +, +00000000 +00010000 +00100000 +00001000 +01000000 +00000000 +01010000 +00000000 +, +00001000 +00010000 +00000100 +00001000 +00000000 +00000001 +00000100 +00000010 +, +00000000 +00001000 +00000010 +00010000 +00000100 +00000000 +00001100 +00000000 +, +00000010 +00000000 +00000000 +00000001 +00000000 +00000000 +00000100 +00000000 +00001000 +00000000 +00000000 +00010000 +00000000 +00000000 +00100000 +00000000 +, +10000000 +00000000 +00000000 +00010000 +00000000 +00000000 +01000000 +00000000 +00100000 +00000000 +00000000 +10000000 +00000000 +00000000 +00010000 +00000000 +, +10000000 +00000000 +00000000 +00100000 +00000000 +00000000 +10000000 +00000000 +01000000 +00000000 +00000000 +00100000 +00000000 +00000000 +00001000 +00000000 +, +00020000 +00000000 +00030000 +00000100 +00000200 +00000000 +00000300 +00010000 +, +00020000 +00000000 +00000000 +00001000 +00002000 +00000000 +00033000 +00000000 +, +00000010 +00000100 +00000010 +00000100 +00000000 +00000001 +00000100 +00000000 +, +00000010 +00001000 +00000010 +00001000 +00000000 +00010000 +00001000 +00000000 +, +01000000 +00100000 +01000000 +00100000 +00000000 +00010000 +00100000 +00000000 +, +00001000 +00000000 +00000000 +00001000 +00000000 +00000000 +00001000 +00000000 +01000000 +00000000 +00000000 +01000000 +00000000 +00000000 +01000000 +00000000 +, +00100000 +01000000 +00100000 +01000000 +00000000 +10000000 +01000000 +00000000 +, +00100000 +00010000 +00100000 +00010000 +00000000 +00001000 +00010000 +00000000 +, +00000100 +00000010 +00000100 +00000010 +00000000 +00001000 +00000010 +00000000 +, +00010000 +00000000 +00000000 +00010000 +00000000 +00000000 +00010000 +00000000 +00000100 +00000000 +00000000 +00000100 +00000000 +00000000 +00000100 +00000000 +, +00010000 +00000000 +00001000 +00100000 +00000000 +00001000 +00010000 +00000000 +, +00110000 +00000000 +10000000 +00010000 +00000000 +00000000 +00100000 +00000000 +, +00001000 +00000000 +00010000 +00000010 +00000000 +00010000 +00001000 +00000000 +, +00001010 +00000000 +00000001 +00001000 +00000000 +00000000 +00000100 +00000000 +, +00010000 +00001000 +00010000 +00000100 +00000010 +00000001 +00000100 +00000001 +, +00000100 +00000010 +00010000 +00001000 +01000000 +00100000 +10000000 +00000000 +, +01000000 +00100000 +01000000 +00010000 +00001000 +00010000 +00000010 +00000100 +, +00000001 +00000100 +00000010 +00001000 +00000100 +00010000 +00001000 +00000000 +, +00100000 +00001000 +00010000 +00000000 +00000010 +00010000 +00001000 +00000000 +, +01000000 +00000000 +00001000 +00000000 +00010000 +00000000 +00000100 +00000000 +00000000 +00000000 +00000010 +00000000 +00000000 +00000002 +00000000 +00000000 +, +00002000 +00000000 +00000000 +00000000 +, +00000000 +00000000 +00000000 +00003003 +;