//Cube Synthesizer Map - 3x3x3 Picture Cubes
//
/*Facelet Numbering System: FRULDB

               | 18 | 19 | 20 |
               | 21 | 22 | 23 |
               | 24 | 25 | 26 |
| 27 | 28 | 29 |  0 |  1 |  2 |  9 | 10 | 11 |
| 30 | 31 | 32 |  3 |  4 |  5 | 12 | 13 | 14 |
| 33 | 34 | 35 |  6 |  7 |  8 | 15 | 16 | 17 |
               | 36 | 37 | 38 | 45 | 46 | 47 |
               | 39 | 40 | 41 | 48 | 49 | 50 |
               | 42 | 43 | 44 | 51 | 52 | 53 |
*/   
/*List of currently available mapping functions for picture cubes:
- mapBinaryClockCube
- mapClockCalendarCube
- mapDigitalCalendarCube
- mapDigitalClockCube
- mapGeoCube
- mapGeoClockCube
- mapTimeZoneCube
- mapDotMatrixCube
*/

function mapBinaryClockCube(timeHours, timeMinutes, timeSeconds) {
    //Map Binary Clock Cube Texture
    //
    //1 - Declare
    //
    var hours;
    var minutes;
    var seconds;

    var i;
    var j;
    var k;
    //
    //2 - Construct arrays
    //
    hours = [[0], [1], [2], [3]];
    minutes = [[0], [1], [2], [3]];
    seconds = [[0], [1], [2], [3]];
    //
    //3 - Map Texture
    //
    //Top Layer: hours
    //Top Left Digit
    hours[0][0] = 0;
    hours[1][0] = 47;
    hours[2][0] = 27;
    hours[3][0] = 29;

    //Top Center Digit
    hours[0][1] = 1;
    hours[1][1] = 10;
    hours[2][1] = 28;
    hours[3][1] = 46;
    
    //Top Right Digit
    hours[0][2] = 2;
    hours[1][2] = 11;
    hours[2][2] = 45;
    hours[3][2] = 9;
    
    //Middle Layer: minutes
    //Middle Left Digit
    minutes[0][0] = 3;
    minutes[1][0] = 50;
    minutes[2][0] = 30;
    minutes[3][0] = 32;
    
    //Middle Center Digit
    minutes[0][1] = 4;
    minutes[1][1] = 13;
    minutes[2][1] = 31;
    minutes[3][1] = 49;
    
    //Middle Right Digit
    minutes[0][2] = 5;
    minutes[1][2] = 14;
    minutes[2][2] = 48;
    minutes[3][2] = 12;
    
    //Bottom Layer: seconds
    //Bottom Left Digit
    seconds[0][0] = 6;
    seconds[1][0] = 53;
    seconds[2][0] = 33;
    seconds[3][0] = 35;
    
    //Bottom Center Digit
    seconds[0][1] = 7;
    seconds[1][1] = 16;
    seconds[2][1] = 34;
    seconds[3][1] = 52;

    //Bottom Right Digit
    seconds[0][2] = 8;
    seconds[1][2] = 17;
    seconds[2][2] = 51;
    seconds[3][2] = 15;
    
    //Initialize facelets
    //Top Layer: hours
    i = Math.floor(timeHours / 16);
    j = Math.floor((timeHours % 16) / 4);
    k = timeHours % 4;
    CS.frontFaceStickersArray[0] = hours[i][0];
    CS.frontFaceStickersArray[1] = hours[j][1];
    CS.frontFaceStickersArray[2] = hours[k][2];

    //Middle Layer: minutes
    i = Math.floor(timeMinutes / 16);
    j = Math.floor((timeMinutes % 16) / 4);
    k = timeMinutes % 4;
    CS.frontFaceStickersArray[3] = minutes[i][0];
    CS.frontFaceStickersArray[4] = minutes[j][1];
    CS.frontFaceStickersArray[5] = minutes[k][2];

    //Bottom Layer: seconds
    i = Math.floor(timeSeconds / 16);
    j = Math.floor((timeSeconds % 16) / 4);
    k = timeSeconds % 4;
    CS.frontFaceStickersArray[6] = seconds[i][0];
    CS.frontFaceStickersArray[7] = seconds[j][1];
    CS.frontFaceStickersArray[8] = seconds[k][2];

    //Center facelet orientation: 0 (0°), 1 (270°), 2 (180°), 3 (90°)
    CS.centerOrientation = 0;
}

function mapClockCalendarCube(dateWeekday, dateDay, dateMonth, timeHours, timeMinutes) {
    //Map Clock & Calendar Cube
    //
    //1 - Declare
    //
    var weekdays;
    var days;
    var months;
    var hours;
    var minutes;

    var i;
    var j;
    var k;
    //
    //2 - Construct arrays
    //
    weekdays = [[0], [1], [2], [3], [4], [5], [6]];
    days = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]];
    months = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11]];
    hours = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]];
    minutes = [[0], [1], [2]];
    //
    //3 - Map Texture
    //
    //Top Layer: time (default) or temperature
    //Top Left Digit: hour MSD (default) or temperature MSD
    hours[0][0] = 0;
    hours[1][0] = 24;
    hours[2][0] = 29;

    //Top Center Digit: hour LSD (default) or temperature LSD
    hours[0][1] = 1;
    hours[1][1] = 25;
    hours[2][1] = 28;
    hours[3][1] = 21;
    hours[4][1] = 23;
    hours[5][1] = 10;
    hours[6][1] = 34;
    hours[7][1] = 39;
    hours[8][1] = 41;
    hours[9][1] = 16;
    
    //Top Right Digit: minutes (default) or temperature label
    minutes[0][2] = 2;
    minutes[1][2] = 9;
    minutes[2][2] = 26;

    //Middle Layer: weekday
    //Use Blank 5 for SAT and Blank 3 otherwise
    //Middle Left
    weekdays[0][0] = 3;
    weekdays[1][0] = 3;
    weekdays[2][0] = 3;
    weekdays[3][0] = 3;
    weekdays[4][0] = 3;
    weekdays[5][0] = 3;
    weekdays[6][0] = 5;

    //Middle Center
    weekdays[0][1] = 40;
    weekdays[1][1] = 4;
    weekdays[2][1] = 22;
    weekdays[3][1] = 13;
    weekdays[4][1] = 49;
    weekdays[5][1] = 31;
    weekdays[6][1] = 40;

    //Middle Right
    weekdays[0][2] = 12;
    weekdays[1][2] = 5;
    weekdays[2][2] = 5;
    weekdays[3][2] = 5;
    weekdays[4][2] = 5;
    weekdays[5][2] = 5;
    weekdays[6][2] = 32;

    //Bottom Layer: day & month (default) or time
    //Bottom Left Digit: day MSD (default) or hour MSD
    days[0][0] = 6;
    days[1][0] = 35;
    days[2][0] = 36;
    days[3][0] = 17;

    //Bottom Center Digit: day LSD (default) or hour LSD
    days[0][1] = 37;
    days[1][1] = 7;
    days[2][1] = 30;
    days[3][1] = 50;
    days[4][1] = 14;
    days[5][1] = 48;
    days[6][1] = 43;
    days[7][1] = 52;
    days[8][1] = 19;
    days[9][1] = 46;
    
    //Bottom Right Digit: month (default) or minutes
    months[0][2] = 8;
    months[1][2] = 15;
    months[2][2] = 38;
    months[3][2] = 45;
    months[4][2] = 11;
    months[5][2] = 20;
    months[6][2] = 18;
    months[7][2] = 27;
    months[8][2] = 47;
    months[9][2] = 33;
    months[10][2] = 42;
    months[11][2] = 53;
    
    //Initialize facelets
    //Top Layer: time (default) or temperature
    i = Math.floor(timeHours / 10);
    j = timeHours % 10;
    k = Math.floor(timeMinutes / 30);
    CS.frontFaceStickersArray[0] = hours[i][0];
    CS.frontFaceStickersArray[1] = hours[j][1];
    CS.frontFaceStickersArray[2] = minutes[k][2];

    //Middle Layer: weekday
    i = dateWeekday;
    j = dateWeekday;
    k = dateWeekday;
    CS.frontFaceStickersArray[3] = weekdays[i][0];
    CS.frontFaceStickersArray[4] = weekdays[j][1];
    CS.frontFaceStickersArray[5] = weekdays[k][2];

    //Bottom Layer: day & month (default) or time
    i = Math.floor(dateDay / 10);
    j = dateDay % 10;
    k = dateMonth;
    CS.frontFaceStickersArray[6] = days[i][0];
    CS.frontFaceStickersArray[7] = days[j][1];
    CS.frontFaceStickersArray[8] = months[k][2];

    //Center facelet orientation: 0 (0°), 1 (270°), 2 (180°), 3 (90°)
    CS.centerOrientation = 0;
}

function mapDigitalCalendarCube(dateDay, dateMonth, dateYear) {
    //Map Digital Calendar Cube
    //
    //1 - Declare
    //
    var days;
    var months;
    var years;

    var i;
    var j;
    var k;
    var z;
    //
    //2 - Construct arrays
    //
    days = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]];
    months = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]];
    years = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]];
    //
    //3 - Map Texture
    //
    //Top Layer: month
    //Top Left Word: 'MONTH'
    //Use MONTH 47 for months 6 & 7 and MONTH 0 for all other months 
    z = dateMonth;
    if ((z === 6) || (z === 7)) {
        months[0][0] = 47;
    }
    else {
        months[0][0] = 0;
    }
    
    //Top Center Digit: month LSD
    months[0][1] = 1;
    months[1][1] = 25;

    //Top Right Digit: month MSD
    months[0][2] = 26;
    months[1][2] = 2;
    months[2][2] = 9;
    months[3][2] = 20;
    months[4][2] = 11;
    months[5][2] = 45;
    months[6][2] = 24;
    months[7][2] = 29;
    months[8][2] = 27;
    months[9][2] = 18;
    
    //Middle Layer: day
    //Middle Left Word: 'DAY' (default) or 'WEEK'
    days[0][0] = 3;
    days[1][0] = 32;
    
    //Middle Center: day MSD (default) or week MSD
    days[0][1] = 4;
    days[1][1] = 22;
    days[2][1] = 13;
    days[3][1] = 40;
    days[4][1] = 31;
    days[5][1] = 49;

    //Middle Right: day LSD (default) or week LSD
    days[0][2] = 12;
    days[1][2] = 5;
    days[2][2] = 46;
    days[3][2] = 19;
    days[4][2] = 14;
    days[5][2] = 48;
    days[6][2] = 39;
    days[7][2] = 34;
    days[8][2] = 52;
    days[9][2] = 43;

    //Bottom Layer: year
    //Bottom Left Word: 'YEAR'
    //Use YEAR 53 for years ending with 6 or 7 and YEAR 6 otherwise 
    z = dateYear % 10;
    if ((z === 6) || (z === 7)) {
        years[0][0] = 53;
    }
    else {
        years[0][0] = 6;
    }

    //Bottom Center Digit: year MSD
    years[0][1] = 7;
    years[1][1] = 37;
    years[2][1] = 16;
    years[3][1] = 41;
    years[4][1] = 30;
    years[5][1] = 50;
    years[6][1] = 28;
    years[7][1] = 21;
    years[8][1] = 23;
    years[9][1] = 10;

    //Bottom Right Digit: year LSD
    years[0][2] = 8;
    years[1][2] = 38;
    years[2][2] = 15;
    years[3][2] = 44;
    years[4][2] = 17;
    years[5][2] = 51;
    years[6][2] = 36;
    years[7][2] = 35;
    years[8][2] = 33;
    years[9][2] = 42;
    
    //Initialize facelets
    //Top Layer: month
    i = 0;
    j = Math.floor(dateMonth / 10);
    k = dateMonth % 10;
    CS.frontFaceStickersArray[0] = months[i][0];
    CS.frontFaceStickersArray[1] = months[j][1];
    CS.frontFaceStickersArray[2] = months[k][2];

    //Middle Layer: day
    i = 0;
    j = Math.floor(dateDay / 10);
    k = dateDay % 10;
    CS.frontFaceStickersArray[3] = days[i][0];
    CS.frontFaceStickersArray[4] = days[j][1];
    CS.frontFaceStickersArray[5] = days[k][2];

    //Bottom Layer: year
    i = 0;
    j = Math.floor(dateYear / 10);
    k = dateYear % 10;
    CS.frontFaceStickersArray[6] = years[i][0];
    CS.frontFaceStickersArray[7] = years[j][1];
    CS.frontFaceStickersArray[8] = years[k][2];

    //Center facelet orientation: 0 (0°), 1 (270°), 2 (180°), 3 (90°)
    CS.centerOrientation = 0;
}

function mapDigitalClockCube(timeHours, timeMinutes, timeSeconds) {
    //Map Digital Clock Cube

    //1 - Declare
    var hours;
    var minutes;
    var seconds;
    
    var i;
    var j;
    var k;
    var z;
    //
    //2 - Construct arrays
    //
    hours = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]];
    minutes = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]];
    seconds = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]];
    //
    //3 - Map Texture
    //
    //Top Layer: hours
    //Top Left: blank
    //Use Blank 47 for hours ending with 6 or 7 and Blank 0 otherwise 
    z = timeHours % 10;
    if ((z === 6) || (z === 7)) {
        hours[0][0] = 47;
    }
    else {
        hours[0][0] = 0;
    }

    //Top Center Digit: hour LSD
    hours[0][1] = 1;
    hours[1][1] = 25;
    hours[2][1] = 10;
    hours[3][1] = 23;
    hours[4][1] = 28;
    hours[5][1] = 21;

    //Top Right Digit: hour MSD
    hours[0][2] = 2;
    hours[1][2] = 26;
    hours[2][2] = 9;
    hours[3][2] = 20;
    hours[4][2] = 11;
    hours[5][2] = 45;
    hours[6][2] = 24;
    hours[7][2] = 29;
    hours[8][2] = 27;
    hours[9][2] = 18;

    //Middle Layer: minutes
    //Middle Left Label: ':' (default) or '.'
    minutes[0][0] = 3;
    minutes[1][0] = 32;

    //Middle Center: minutes MSD (default)
    minutes[0][1] = 4;
    minutes[1][1] = 22;
    minutes[2][1] = 13;
    minutes[3][1] = 40;
    minutes[4][1] = 31;
    minutes[5][1] = 49;

    //Middle Right: minutes LSD (default)
    minutes[0][2] = 5;
    minutes[1][2] = 12;
    minutes[2][2] = 46;
    minutes[3][2] = 19;
    minutes[4][2] = 14;
    minutes[5][2] = 48;
    minutes[6][2] = 39;
    minutes[7][2] = 34;
    minutes[8][2] = 52;
    minutes[9][2] = 43;

    //Bottom Layer: seconds
    //Bottom Left Label: ':' (default) or number
    //Use Colon 53 for seconds ending with 6 or 7 and Colon 6 otherwise
    z = timeSeconds % 10;
    if ((z === 6) || (z === 7)) {
        seconds[0][0] = 53;
    }
    else {
        seconds[0][0] = 6;
    }

    //Bottom Center Digit: seconds MSD
    seconds[0][1] = 7;
    seconds[1][1] = 37;
    seconds[2][1] = 16;
    seconds[3][1] = 41;
    seconds[4][1] = 30;
    seconds[5][1] = 50;
    
    //Bottom Right Digit: seconds LSD
    seconds[0][2] = 8;
    seconds[1][2] = 38;
    seconds[2][2] = 15;
    seconds[3][2] = 44;
    seconds[4][2] = 17;
    seconds[5][2] = 51;
    seconds[6][2] = 36;
    seconds[7][2] = 35;
    seconds[8][2] = 33;
    seconds[9][2] = 42;

    //Initialize facelets
    //Top Layer: hours
    i = 0;
    j = Math.floor(timeHours / 10);
    k = timeHours % 10;
    CS.frontFaceStickersArray[0] = hours[i][0];
    CS.frontFaceStickersArray[1] = hours[j][1];
    CS.frontFaceStickersArray[2] = hours[k][2];

    //Middle Layer: minutes
    i = 0;
    j = Math.floor(timeMinutes / 10);
    k = timeMinutes % 10;
    CS.frontFaceStickersArray[3] = minutes[i][0];
    CS.frontFaceStickersArray[4] = minutes[j][1];
    CS.frontFaceStickersArray[5] = minutes[k][2];

    //Bottom Layer: seconds
    i = 0;
    j = Math.floor(timeSeconds / 10);
    k = timeSeconds % 10;
    CS.frontFaceStickersArray[6] = seconds[i][0];
    CS.frontFaceStickersArray[7] = seconds[j][1];
    CS.frontFaceStickersArray[8] = seconds[k][2];

    //Center facelet orientation: 0 (0°), 1 (270°), 2 (180°), 3 (90°)
    CS.centerOrientation = 0;
}

function mapGeoCube(arcDegrees, arcMinutes, arcSeconds, direction) {
    //Map Geo Cube
    //
    //1 - Declare
    //
    var degrees;
    var minutes;
    var seconds;

    var h;
    var u;

    var i;
    var j;
    var k;
    var z;
    //
    //2 - Construct arrays
    //
    degrees = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]];
    minutes = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]];
    seconds = [[0], [1], [2], [3], [4], [5]];
    //
    //3 - Map Texture
    //
    //Top Layer: arc degrees (°)
    //Use Blank 47 if arcDegrees is less than 100 and ends with 6 or 7 and use Blank 0 otherwise
    h = Math.floor(arcDegrees / 100);
    if (h === 0) {
        u = arcDegrees % 10;
        if ((u === 6) || (u === 7)) {
            degrees[0][0] = 47;
        }
        else {
            degrees[0][0] = 0;
        }
    }
    //Top Left Digit
    degrees[1][0] = 51;

    //Top Center Digit
    degrees[0][1] = 1;
    degrees[1][1] = 25;
    degrees[2][1] = 23;
    degrees[3][1] = 10;
    degrees[4][1] = 19;
    degrees[5][1] = 46;
    degrees[6][1] = 21;
    degrees[7][1] = 28;
    degrees[8][1] = 50;
    degrees[9][1] = 30;

    //Top Right Digit
    degrees[0][2] = 2;
    degrees[1][2] = 9;
    degrees[2][2] = 26;
    degrees[3][2] = 11;
    degrees[4][2] = 20;
    degrees[5][2] = 45;
    degrees[6][2] = 24;
    degrees[7][2] = 29;
    degrees[8][2] = 18;
    degrees[9][2] = 27;

    //Middle Layer: arc minutes (')
    //Middle Left Blank
    minutes[0][0] = 3;
    minutes[1][0] = 32;

    //Middle Center Digit
    minutes[0][1] = 4;
    minutes[1][1] = 22;
    minutes[2][1] = 13;
    minutes[3][1] = 31;
    minutes[4][1] = 49;
    minutes[5][1] = 40;

    //Middle Right Digit
    minutes[0][2] = 5;
    minutes[1][2] = 12;
    minutes[2][2] = 34;
    minutes[3][2] = 39;
    minutes[4][2] = 43;
    minutes[5][2] = 52;
    minutes[6][2] = 41;
    minutes[7][2] = 16;
    minutes[8][2] = 14;
    minutes[9][2] = 48;

    //Bottom Layer: arc seconds (") plus directions
    //Bottom Left Digit
    seconds[0][0] = 6;
    seconds[1][0] = 35;
    seconds[2][0] = 36;
    seconds[3][0] = 33;
    seconds[4][0] = 42;
    seconds[5][0] = 53;

    //Bottom Center Digit
    seconds[0][1] = 7;
    seconds[1][1] = 37;

    //Bottom Right Letter (0 = 'N', 1 = 'E', 2 = 'S', 3 = 'W')
    seconds[0][2] = 17;
    seconds[1][2] = 8;
    seconds[2][2] = 44;
    seconds[3][2] = 15;

    //Initialize facelets
    //Top Layer: arc degrees (°)
    i = Math.floor(arcDegrees / 100);
    z = arcDegrees % 100;
    j = Math.floor(z / 10);
    k = z % 10;
    CS.frontFaceStickersArray[0] = degrees[i][0];
    CS.frontFaceStickersArray[1] = degrees[j][1];
    CS.frontFaceStickersArray[2] = degrees[k][2];

    //Middle Layer: arc minutes (')
    i = 0;
    j = Math.floor(arcMinutes / 10);
    k = arcMinutes % 10;
    CS.frontFaceStickersArray[3] = minutes[i][0];
    CS.frontFaceStickersArray[4] = minutes[j][1];
    CS.frontFaceStickersArray[5] = minutes[k][2];

    //Bottom Layer: arc seconds (") plus directions
    i = Math.floor(arcSeconds / 10);
    z = arcSeconds % 10;
    j = Math.floor(z / 5);
    k = direction;
    CS.frontFaceStickersArray[6] = seconds[i][0];
    CS.frontFaceStickersArray[7] = seconds[j][1];
    CS.frontFaceStickersArray[8] = seconds[k][2];

    //Center facelet orientation: 0 (0°), 1 (270°), 2 (180°), 3 (90°)
    CS.centerOrientation = 0;
}

function mapGeoClockCube(arcDegrees, arcMinutes, arcSeconds, direction, mode) {
    //Map Geographical Coordinates & Clock Cube
    //Note: Cube Mode is set by parameter 'mode'
    //
    //Mode 0 ('Geo Cube'):
    //direction: 0 ("North"), 1 ("East"), 2 ("South") or 3 ("West")
    //arcDegrees: 0...180
    //arcMinutes: 0...59
    //arcSeconds: 0...59
    //
    //Mode 1 ('Clock Cube'):
    //direction: 1 (English Time), 2 ("Summer Time") or 3 ("Winter Time)
    //arcDegrees = hours: 0...23
    //arcMinutes = minutes: 0...59
    //arcSeconds = seconds: 0...59
    //
    //1 - Declare
    //
    var degrees;
    var minutes;
    var seconds;

    var h;
    var u;

    var i;
    var j;
    var k;
    var z;
    //
    //2 - Construct arrays
    //
    degrees = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]];
    minutes = [[0], [1], [2], [3], [4], [5], [6], [7], [8], [9]];
    seconds = [[0], [1], [2], [3], [4], [5]];
    //
    //3 - Map Texture
    //
    //Top Layer: arc degrees (°) or hours
    //Top Left Blank
    //Mode 0: use Blank 47 as 'zero' if arcDegrees < 100 and ends with 6 or 7 and use Blank 0 as 'zero' otherwise
    if (mode === 0) {
        h = Math.floor(arcDegrees / 100);
        if (h === 0) {
            u = arcDegrees % 10;
            if ((u === 6) || (u === 7)) {
                degrees[0][0] = 47;
            }
            else {
                degrees[0][0] = 0;
            }
        }
    }
    //Mode 1: use Blank 0 as 'zero'
    else if (mode === 1) {
        degrees[0][0] = 0;
    }
    //Top Left Digit
    degrees[1][0] = 51;
    degrees[2][0] = 44;

    //Top Center Digit
    degrees[0][1] = 1;
    degrees[1][1] = 25;
    degrees[2][1] = 23;
    degrees[3][1] = 10;
    degrees[4][1] = 19;
    degrees[5][1] = 46;
    degrees[6][1] = 21;
    degrees[7][1] = 28;
    degrees[8][1] = 50;
    degrees[9][1] = 30;

    //Mode 0: Top Right Digit
    if (mode === 0) {
        degrees[0][2] = 2;
        degrees[1][2] = 9;
        degrees[2][2] = 26;
        degrees[3][2] = 11;
        degrees[4][2] = 20;
        degrees[5][2] = 45;
        degrees[6][2] = 24;
        degrees[7][2] = 29;
        degrees[8][2] = 18;
        degrees[9][2] = 27;
    }
    //Mode 1: Top Right Blank 47
    else if (mode === 1) {
        degrees[0][2] = 47;
    }    

    //Middle Layer: arc minutes (')
    //Middle Left; Blank 3 ('Geo Cube' Mode) or Colon 32 ('Clock Cube' Mode)
    minutes[0][0] = 3;
    minutes[1][0] = 32;

    //Middle Center Digit
    minutes[0][1] = 4;
    minutes[1][1] = 22;
    minutes[2][1] = 13;
    minutes[3][1] = 31;
    minutes[4][1] = 49;
    minutes[5][1] = 40;

    //Middle Right Digit
    minutes[0][2] = 5;
    minutes[1][2] = 12;
    minutes[2][2] = 34;
    minutes[3][2] = 39;
    minutes[4][2] = 43;
    minutes[5][2] = 52;
    minutes[6][2] = 41;
    minutes[7][2] = 16;
    minutes[8][2] = 14;
    minutes[9][2] = 48;

    //Bottom Layer: arc seconds (") plus directions
    //Bottom Left Digit
    seconds[0][0] = 6;
    seconds[1][0] = 35;
    seconds[2][0] = 36;
    seconds[3][0] = 33;
    seconds[4][0] = 42;
    seconds[5][0] = 53;

    //Bottom Center Digit
    seconds[0][1] = 7;
    seconds[1][1] = 37;

    //Bottom Right Letter (0 = 'N', 1 = 'E', 2 = 'S', 3 = 'W')
    seconds[0][2] = 17;
    seconds[1][2] = 8;
    seconds[2][2] = 38;
    seconds[3][2] = 15;

    //Initialize facelets
    //Top Layer: arc degrees (°) or hours
    //Mode 0
    if (mode === 0) {
        i = Math.floor(arcDegrees / 100);
        z = arcDegrees % 100;
        j = Math.floor(z / 10);
        k = z % 10;
    }
    else if (mode === 1) {
        i = Math.floor(arcDegrees / 10);
        j = arcDegrees % 10;
        k = 0;
    }
    CS.frontFaceStickersArray[0] = degrees[i][0];
    CS.frontFaceStickersArray[1] = degrees[j][1];
    CS.frontFaceStickersArray[2] = degrees[k][2];

    //Middle Layer: arc minutes (') or minutes
    i = mode;
    j = Math.floor(arcMinutes / 10);
    k = arcMinutes % 10;
    CS.frontFaceStickersArray[3] = minutes[i][0];
    CS.frontFaceStickersArray[4] = minutes[j][1];
    CS.frontFaceStickersArray[5] = minutes[k][2];

    //Bottom Layer: arc seconds (") plus directions or seconds plus time zone
    i = Math.floor(arcSeconds / 10);
    z = arcSeconds % 10;
    j = Math.floor(z / 5);
    k = direction;
    CS.frontFaceStickersArray[6] = seconds[i][0];
    CS.frontFaceStickersArray[7] = seconds[j][1];
    CS.frontFaceStickersArray[8] = seconds[k][2];

    //Center facelet orientation: 0 (0°), 1 (270°), 2 (180°), 3 (90°)
    CS.centerOrientation = 0;
}

function mapTimeZoneCube(abbreviatedPlaceName, offsetSign, offsetHours, offsetMinutes) {
    //Map Time Zone Cube
    //Passed Parameters:
    //'abbreviatedPlaceName': 2- or 3-character string representing an abbreviated place name
    //'offsetSign': "-', "+", "DST"
    //'offsetHours': 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 (hours)
    //'offsetMinutes': 0, 30 (minutes)
    //Note 1: When 'offsetSign' is set to "DST", 'offsetHours' is the time offset relative to the *local* UTC
    //Note 2: In normal operation, 'offsetSign' is set either to "-" or to "+"
    //Note 3: The normal display range of 'offsetHours' is from 0 up to 10
    //Note 4: For time offsets outside this range, ie. 11, 12, 13 or 14, only the least decimal digit is displayed

    //
    //1 - Declare
    //
    var s0;
    var s1;
    var s2;
    var s3;
    var s4;
    var s5;
    var s6;
    var s7;
    var s8;

    var newOffsetHours;

    //
    //2 - Initialize
    //
    //Stickers
    s0 = 0;
    s1 = 1;
    s2 = 2;
    s3 = 3;
    s4 = 4;
    s5 = 5;
    s6 = 6;
    s7 = 7;
    s8 = 8;

    //Set New Time Offset Range
    if (offsetHours >= 11) {
        newOffsetHours = offsetHours % 10;
    }
    else {
        newOffsetHours = offsetHours;
    }

    //
    //3 - Map Texture
    //
    //Top or Middle Layer: Abbreviated Place Name
    switch (abbreviatedPlaceName) {
        //A
        case "ATH":
            s0 = 17;
            s1 = 21;
            s2 = 53;
            s3 = 30;
            s4 = 13;
            s5 = 32;
            break;
        //B
        case "BAH":
            s0 = 27;
            s1 = 25;
            s2 = 45;
            break;
        case "BAK":
            s0 = 27;
            s1 = 25;
            s2 = 11;
            break;
        case "BAL":
            s0 = 27;
            s1 = 25;
            s2 = 44;
            break;
        case "BAN":
            s0 = 27;
            s1 = 25;
            s2 = 2;
            break;
        case "BAR":
            s0 = 27;
            s1 = 25;
            s2 = 26;
            break;
        case "BAS":
            s0 = 27;
            s1 = 25;
            s2 = 9;
            break;
        case "BEI":
            s0 = 27;
            s1 = 28;
            s2 = 42;
            break;
        case "BEL":
            s0 = 27;
            s1 = 28;
            s2 = 44;
            break;
        case "BEN":
            s0 = 27;
            s1 = 28;
            s2 = 2;
            break;
        case "BER":
            s0 = 27;
            s1 = 28;
            s2 = 26;
            break;
        case "BOL":
            s0 = 27;
            s1 = 1;
            s2 = 44;
            break;
        case "BOR":
            s0 = 27;
            s1 = 1;
            s2 = 26;
            break;
        case "BOS":
            s0 = 27;
            s1 = 1;
            s2 = 9;
            break;
        //C
        case "CAI":
            s0 = 24;
            s1 = 25;
            s2 = 42;
            break;
        case "CAL":
            s0 = 24;
            s1 = 25;
            s2 = 44;
            break;
        case "CAN":
            s0 = 24;
            s1 = 25;
            s2 = 2;
            break;
        case "CAR":
            s0 = 24;
            s1 = 25;
            s2 = 26;
            break;
        case "CAS":
            s0 = 24;
            s1 = 25;
            s2 = 9;
            break;
        case "COL":
            s0 = 24;
            s1 = 1;
            s2 = 44;
            break;
        case "CON":
            s0 = 24;
            s1 = 1;
            s2 = 2;
            break;
        case "COR":
            s0 = 24;
            s1 = 1;
            s2 = 26;
            break;
        //D
        case "DAK":
            s0 = 33;
            s1 = 25;
            s2 = 11;
            break;
        case "DAL":
            s0 = 33;
            s1 = 25;
            s2 = 44;
            break;
        case "DAN":
            s0 = 33;
            s1 = 25;
            s2 = 2;
            break;
        case "DAR":
            s0 = 33;
            s1 = 25;
            s2 = 26;
            break;
        case "DAX":
            s0 = 33;
            s1 = 25;
            s2 = 51;
            break;
        case "DEL":
            s0 = 33;
            s1 = 28;
            s2 = 44;
            break;
        case "DEN":
            s0 = 33;
            s1 = 28;
            s2 = 2;
            break;
        case "DOH":
            s0 = 33;
            s1 = 1;
            s2 = 45;
            break;
        case "DOR":
            s0 = 33;
            s1 = 1;
            s2 = 26;
            break;
        //H
        case "HAN":
            s0 = 17;
            s1 = 21;
            s2 = 53;
            s3 = 32;
            s4 = 22;
            s5 = 12;
            break;
        case "HOC":
            s0 = 17;
            s1 = 21;
            s2 = 53;
            s3 = 32;
            s4 = 40;
            s5 = 10;
            break;
        case "HON":
            s0 = 17;
            s1 = 21;
            s2 = 53;
            s3 = 32;
            s4 = 40;
            s5 = 12;
            break;
        case "HYD":
            s0 = 17;
            s1 = 21;
            s2 = 53;
            s3 = 32;
            s4 = 49;
            s5 = 23;
            break;
        //L
        case "LA":
            s0 = 0;
            s1 = 25;
            s2 = 17;
            break;
        case "LAH":
            s0 = 0;
            s1 = 25;
            s2 = 45;
            break;
        case "LAN":
            s0 = 0;
            s1 = 25;
            s2 = 2;
            break;
        case "LAR":
            s0 = 0;
            s1 = 25;
            s2 = 26;
            break;
        case "LAS":
            s0 = 0;
            s1 = 25;
            s2 = 9;
            break;
        case "LAX":
            s0 = 0;
            s1 = 25;
            s2 = 51;
            break;
        case "LES":
            s0 = 0;
            s1 = 28;
            s2 = 9;
            break;
        case "LON":
            s0 = 0;
            s1 = 1;
            s2 = 2;
            break;
        case "LOR":
            s0 = 0;
            s1 = 1;
            s2 = 26;
            break;
        //M
        case "MAK":
            s0 = 18;
            s1 = 25;
            s2 = 11;
            break;
        case "MAL":
            s0 = 18;
            s1 = 25;
            s2 = 44;
            break;
        case "MAN":
            s0 = 18;
            s1 = 25;
            s2 = 2;
            break;
        case "MAR":
            s0 = 18;
            s1 = 25;
            s2 = 26;
            break;
        case "MAS":
            s0 = 18;
            s1 = 25;
            s2 = 9;
            break;
        case "MEH":
            s0 = 18;
            s1 = 28;
            s2 = 45;
            break;
        case "MEL":
            s0 = 18;
            s1 = 28;
            s2 = 44;
            break;
        case "MEX":
            s0 = 18;
            s1 = 28;
            s2 = 51;
            break;
        case "MOL":
            s0 = 18;
            s1 = 1;
            s2 = 44;
            break;
        case "MON":
            s0 = 18;
            s1 = 1;
            s2 = 2;
            break;
        case "MOR":
            s0 = 18;
            s1 = 1;
            s2 = 26;
            break;
        case "MOS":
            s0 = 18;
            s1 = 1;
            s2 = 9;
            break;
        //N
        case "NAI":
            s0 = 20;
            s1 = 25;
            s2 = 42;
            break;
        case "NAN":
            s0 = 20;
            s1 = 25;
            s2 = 2;
            break;
        case "NAR":
            s0 = 20;
            s1 = 25;
            s2 = 26;
            break;
        case "NAS":
            s0 = 20;
            s1 = 25;
            s2 = 9;
            break;
        case "NAX":
            s0 = 20;
            s1 = 25;
            s2 = 51;
            break;
        case "NIC":
            s0 = 17;
            s1 = 21;
            s2 = 53;
            s3 = 12;
            s4 = 31;
            s5 = 10;
            break;
        case "NOR":
            s0 = 20;
            s1 = 1;
            s2 = 26;
            break;
        case "NYC":
            s0 = 17;
            s1 = 21;
            s2 = 53;
            s3 = 12;
            s4 = 49;
            s5 = 10;
            break;
        //P
        case "PAK":
            s0 = 29;
            s1 = 25;
            s2 = 11;
            break;
        case "PAL":
            s0 = 29;
            s1 = 25;
            s2 = 44;
            break;
        case "PAN":
            s0 = 29;
            s1 = 25;
            s2 = 2;
            break;
        case "PAR":
            s0 = 29;
            s1 = 25;
            s2 = 26;
            break;
        case "PAS":
            s0 = 29;
            s1 = 25;
            s2 = 9;
            break;
        case "PAX":
            s0 = 29;
            s1 = 25;
            s2 = 51;
            break;
        case "PAZ":
            s0 = 29;
            s1 = 25;
            s2 = 20;
            break;
        case "PER":
            s0 = 29;
            s1 = 28;
            s2 = 26;
            break;
        case "POH":
            s0 = 29;
            s1 = 4;
            s2 = 45;
            break;
        case "PON":
            s0 = 29;
            s1 = 4;
            s2 = 2;
            break;
        case "POR":
            s0 = 29;
            s1 = 4;
            s2 = 26;
            break;
        //R
        case "RAN":
            s0 = 17;
            s1 = 21;
            s2 = 53;
            s3 = 19;
            s4 = 22;
            s5 = 12;
            break;
        case "RIO":
            s0 = 17;
            s1 = 21;
            s2 = 53;
            s3 = 19;
            s4 = 31;
            s5 = 50;
            break;
        case "ROC":
            s0 = 17;
            s1 = 21;
            s2 = 53;
            s3 = 19;
            s4 = 40;
            s5 = 10;
            break;
        //S 
        case "SAN":
            s0 = 17;
            s1 = 21;
            s2 = 53;
            s3 = 46;
            s4 = 22;
            s5 = 12;
            break;
        case "SAO":
            s0 = 17;
            s1 = 21;
            s2 = 53;
            s3 = 46;
            s4 = 22;
            s5 = 50;
            break;
        case "SIN":
            s0 = 17;
            s1 = 21;
            s2 = 53;
            s3 = 46;
            s4 = 31;
            s5 = 12;
            break;
        case "SOC":
            s0 = 17;
            s1 = 21;
            s2 = 53;
            s3 = 46;
            s4 = 40;
            s5 = 10;
            break;
        case "STO":
            s0 = 17;
            s1 = 21;
            s2 = 53;
            s3 = 46;
            s4 = 13;
            s5 = 50;
            break;
        case "SYD":
            s0 = 17;
            s1 = 21;
            s2 = 53;
            s3 = 46;
            s4 = 49;
            s5 = 23;
            break;
        //T 
        case "TAH":
            s0 = 47;
            s1 = 25;
            s2 = 45;
            break;
        case "TAI":
            s0 = 47;
            s1 = 25;
            s2 = 42;
            break;
        case "TAL":
            s0 = 47;
            s1 = 25;
            s2 = 44;
            break;
        case "TAN":
            s0 = 47;
            s1 = 25;
            s2 = 2;
            break;
        case "TAR":
            s0 = 47;
            s1 = 25;
            s2 = 26;
            break;
        case "TAS":
            s0 = 47;
            s1 = 25;
            s2 = 9;
            break;
        case "TEH":
            s0 = 47;
            s1 = 28;
            s2 = 45;
            break;
        case "TEL":
            s0 = 47;
            s1 = 28;
            s2 = 44;
            break;
        case "TEX":
            s0 = 47;
            s1 = 28;
            s2 = 51;
            break;
        case "TOK":
            s0 = 47;
            s1 = 1;
            s2 = 11;
            break;
        case "TON":
            s0 = 47;
            s1 = 1;
            s2 = 2;
            break;
        case "TOR":
            s0 = 47;
            s1 = 1;
            s2 = 26;
            break;
        //Z 
        case "ZAK":
            s0 = 2;
            s1 = 25;
            s2 = 11;
            break;
    
    }

    //
    //Bottom Layer: Time Offset
    //
    
    //Bottom Right Sticker: Minutes of Time Offset
    switch (offsetMinutes) {
        case 0:
            s8 = 8;
            break;
        case 30:
            s8 = 15;
            break;
    }

    //Bottom Middle Sticker: Hours of Time Offset
    switch (newOffsetHours) {
        case 0:
            s7 = 7;
            break;
        case 1:
            s7 = 37;
            break;
        case 2:
            s7 = 39;
            break;
        case 3:
            s7 = 34;
            break;
        case 4:
            s7 = 14;
            break;
        case 5:
            s7 = 48;
            break;
        case 6:
            s7 = 41;
            break;
        case 7:
            s7 = 16;
            break;
        case 8:
            s7 = 43;
            break;
        case 9:
            s7 = 52;
            break;
        case 10:
            s7 = 37;
            s8 = 38; //Bottom Right Sticker - Supersedes value of 'offsetMinutes'
            break;
    }

    //Bottom Left Sticker: Offset Sign or DST
    switch (offsetSign) {
        case "-":
            s6 = 35;
            break;
        case "+":
            s6 = 6;
            break;
        case "DST":
            s6 = 36;
            break;
    }

    //Front Face Stickers
    CS.frontFaceStickersArray[0] = s0;
    CS.frontFaceStickersArray[1] = s1;
    CS.frontFaceStickersArray[2] = s2;
    CS.frontFaceStickersArray[3] = s3;
    CS.frontFaceStickersArray[4] = s4;
    CS.frontFaceStickersArray[5] = s5;
    CS.frontFaceStickersArray[6] = s6;
    CS.frontFaceStickersArray[7] = s7;
    CS.frontFaceStickersArray[8] = s8;

    //Center facelet orientation: 0 (0°), 1 (270°), 2 (180°), 3 (90°)
    CS.centerOrientation = 0;
}

function mapDotMatrixCube(patternID) {
    //Map Dot Matrix Cube
    //Passed Parameter: patternID (Pattern Identifier)
    //
    
    //
    //1 - Declare
    //
    var s0;
    var s1;
    var s2;
    var s3;
    var s4;
    var s5;
    var s6;
    var s7;
    var s8;
    var o4;

    //
    //2 - Initialize
    //
    //Face F Sticker Positions
    s0 = 0;
    s1 = 1;
    s2 = 2;
    s3 = 3;
    s4 = 4;
    s5 = 5;
    s6 = 6;
    s7 = 7;
    s8 = 8;
    
    //Face F Center Orientation
    o4 = 0;

    //
    //3 - Map Texture
    //
    //Map Pattern
    switch (patternID) {
        //Block #1 - Numerals: "0" to "9" (Numbers) 
        case "0":
            s0 = 27;
            s1 = 32;
            s2 = 2;
            s3 = 14;
            s4 = 13;
            s5 = 5;
            s6 = 20;
            s7 = 23;
            s8 = 8;
            o4 = 0;
            break;
        case "1":
            s0 = 42;
            s1 = 1;
            s2 = 0;
            s3 = 12;
            s4 = 4;
            s5 = 7;
            s6 = 9;
            s7 = 23;
            s8 = 8;
            o4 = 0;
            break;
        case "2":
            s0 = 27;
            s1 = 30;
            s2 = 0;
            s3 = 19;
            s4 = 22;
            s5 = 1;
            s6 = 9;
            s7 = 12;
            s8 = 8;
            o4 = 1;
            break;
        case "3":
            s0 = 0;
            s1 = 14;
            s2 = 27;
            s3 = 3;
            s4 = 22;
            s5 = 28;
            s6 = 6;
            s7 = 12;
            s8 = 20;
            o4 = 2;
            break;
        case "4":
            s0 = 20;
            s1 = 37;
            s2 = 2;
            s3 = 41;
            s4 = 40;
            s5 = 5;
            s6 = 6;
            s7 = 19;
            s8 = 8;
            o4 = 1;
            break;
        case "5":
            s0 = 0;
            s1 = 41;
            s2 = 17;
            s3 = 3;
            s4 = 13;
            s5 = 28;
            s6 = 6;
            s7 = 12;
            s8 = 20;
            o4 = 3;
            break;
        case "6":
            s0 = 27;
            s1 = 14;
            s2 = 2;
            s3 = 37;
            s4 = 31;
            s5 = 5;
            s6 = 20;
            s7 = 23;
            s8 = 8;
            o4 = 3;
            break;
        case "7":
            s0 = 26;
            s1 = 14;
            s2 = 15;
            s3 = 3;
            s4 = 31;
            s5 = 5;
            s6 = 6;
            s7 = 23;
            s8 = 0;
            o4 = 0;
            break;
        case "8":
            s0 = 38;
            s1 = 37;
            s2 = 0;
            s3 = 30;
            s4 = 31;
            s5 = 1;
            s6 = 9;
            s7 = 12;
            s8 = 6;
            o4 = 1;
            break;
        case "9":
            s0 = 0;
            s1 = 28;
            s2 = 27;
            s3 = 3;
            s4 = 22;
            s5 = 41;
            s6 = 6;
            s7 = 12;
            s8 = 20;
            o4 = 2;
            break;

        //Block #2 - Numerals: "0:" to "9:" (Time)
        case "0:":
            s0 = 38;
            s1 = 37;
            s2 = 0;
            s3 = 14;
            s4 = 13;
            s5 = 21;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 0;
            break;
        case "1:":
            s0 = 0;
            s1 = 10;
            s2 = 2;
            s3 = 3;
            s4 = 13;
            s5 = 21;
            s6 = 6;
            s7 = 19;
            s8 = 18;
            o4 = 0;
            break;
        case "2:":
            s0 = 11;
            s1 = 37;
            s2 = 0;
            s3 = 30;
            s4 = 22;
            s5 = 21;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 1;
            break;
        case "3:":
            s0 = 11;
            s1 = 37;
            s2 = 0;
            s3 = 10;
            s4 = 40;
            s5 = 21;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 0;
            break;
        case "4:":
            s0 = 20;
            s1 = 37;
            s2 = 2;
            s3 = 10;
            s4 = 40;
            s5 = 21;
            s6 = 6;
            s7 = 19;
            s8 = 18;
            o4 = 0;
            break;
        case "5:":
            s0 = 38;
            s1 = 14;
            s2 = 0;
            s3 = 10;
            s4 = 40;
            s5 = 21;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 0;
            break;
        case "6:":
            s0 = 38;
            s1 = 14;
            s2 = 0;
            s3 = 37;
            s4 = 40;
            s5 = 21;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 0;
            break;
        case "7:":
            s0 = 11;
            s1 = 37;
            s2 = 2;
            s3 = 3;
            s4 = 13;
            s5 = 21;
            s6 = 6;
            s7 = 19;
            s8 = 18;
            o4 = 0;
            break;
        case "8:":
            s0 = 38;
            s1 = 37;
            s2 = 0;
            s3 = 30;
            s4 = 31;
            s5 = 21;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 1;
            break;
        case "9:":
            s0 = 38;
            s1 = 37;
            s2 = 0;
            s3 = 10;
            s4 = 40;
            s5 = 21;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 0;
            break;

        //Block #3 - Numerals: '0.' to '9.' (Date)
        case "0.":
            s0 = 38;
            s1 = 37;
            s2 = 0;
            s3 = 14;
            s4 = 13;
            s5 = 1;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 0;
            break;
        case "1.":
            s0 = 0;
            s1 = 10;
            s2 = 2;
            s3 = 3;
            s4 = 13;
            s5 = 1;
            s6 = 6;
            s7 = 19;
            s8 = 18;
            o4 = 0;
            break;
        case "2.":
            s0 = 11;
            s1 = 37;
            s2 = 0;
            s3 = 30;
            s4 = 22;
            s5 = 1;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 1;
            break;
        case "3.":
            s0 = 11;
            s1 = 37;
            s2 = 0;
            s3 = 10;
            s4 = 40;
            s5 = 1;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 0;
            break;
        case "4.":
            s0 = 20;
            s1 = 37;
            s2 = 2;
            s3 = 10;
            s4 = 40;
            s5 = 1;
            s6 = 6;
            s7 = 19;
            s8 = 18;
            o4 = 0;
            break;
        case "5.":
            s0 = 38;
            s1 = 14;
            s2 = 0;
            s3 = 10;
            s4 = 40;
            s5 = 1;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 0;
            break;
        case "6.":
            s0 = 38;
            s1 = 14;
            s2 = 0;
            s3 = 37;
            s4 = 40;
            s5 = 1;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 0;
            break;
        case "7.":
            s0 = 11;
            s1 = 37;
            s2 = 2;
            s3 = 3;
            s4 = 13;
            s5 = 1;
            s6 = 6;
            s7 = 19;
            s8 = 18;
            o4 = 0;
            break;
        case "8.":
            s0 = 38;
            s1 = 37;
            s2 = 2;
            s3 = 30;
            s4 = 31;
            s5 = 1;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 1;
            break;
        case "9.":
            s0 = 38;
            s1 = 37;
            s2 = 0;
            s3 = 10;
            s4 = 40;
            s5 = 1;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 0;
            break;

        //Block #4 - Numerals: "0|" to "9|" (Date)
        case "0|":
            s0 = 38;
            s1 = 37;
            s2 = 0;
            s3 = 14;
            s4 = 13;
            s5 = 25;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 0;
            break;
        case "1|":
            s0 = 0;
            s1 = 10;
            s2 = 2;
            s3 = 3;
            s4 = 13;
            s5 = 25;
            s6 = 6;
            s7 = 19;
            s8 = 18;
            o4 = 0;
            break;
        case "2|":
            s0 = 11;
            s1 = 37;
            s2 = 0;
            s3 = 30;
            s4 = 22;
            s5 = 25;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 1;
            break;
        case "3|":
            s0 = 11;
            s1 = 37;
            s2 = 0;
            s3 = 10;
            s4 = 40;
            s5 = 25;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 0;
            break;
        case "4|":
            s0 = 20;
            s1 = 37;
            s2 = 2;
            s3 = 10;
            s4 = 40;
            s5 = 25;
            s6 = 6;
            s7 = 19;
            s8 = 18;
            o4 = 0;
            break;
        case "5|":
            s0 = 38;
            s1 = 14;
            s2 = 0;
            s3 = 10;
            s4 = 40;
            s5 = 25;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 0;
            break;
        case "6|":
            s0 = 38;
            s1 = 14;
            s2 = 0;
            s3 = 37;
            s4 = 40;
            s5 = 25;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 0;
            break;
        case "7|":
            s0 = 11;
            s1 = 37;
            s2 = 2;
            s3 = 3;
            s4 = 13;
            s5 = 25;
            s6 = 6;
            s7 = 19;
            s8 = 18;
            o4 = 0;
            break;
        case "8|":
            s0 = 38;
            s1 = 37;
            s2 = 0;
            s3 = 30;
            s4 = 31;
            s5 = 25;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 1;
            break;
        case "9|":
            s0 = 38;
            s1 = 37;
            s2 = 0;
            s3 = 10;
            s4 = 40;
            s5 = 25;
            s6 = 9;
            s7 = 12;
            s8 = 18;
            o4 = 0;
            break;
    
        //Block #5 - English Alphabet Letters: from "A" to "X"
        case "A":
            s0 = 35;
            s1 = 32;
            s2 = 0;
            s3 = 37;
            s4 = 39;
            s5 = 5;
            s6 = 26;
            s7 = 19;
            s8 = 8;
            o4 = 0;
            break;
        case "B":
            s0 = 38;
            s1 = 30;
            s2 = 0;
            s3 = 37;
            s4 = 31;
            s5 = 5;
            s6 = 9;
            s7 = 23;
            s8 = 6;
            o4 = 3;
            break;
        case "C":
            s0 = 0;
            s1 = 28;
            s2 = 17;
            s3 = 3;
            s4 = 13;
            s5 = 5;
            s6 = 6;
            s7 = 19;
            s8 = 15;
            o4 = 2;
            break;
        case "D":
            s0 = 38;
            s1 = 32;
            s2 = 0;
            s3 = 14;
            s4 = 13;
            s5 = 5;
            s6 = 9;
            s7 = 23;
            s8 = 6;
            o4 = 0;
            break;
        case "E":
            s0 = 38;
            s1 = 21;
            s2 = 0;
            s3 = 37;
            s4 = 22;
            s5 = 5;
            s6 = 9;
            s7 = 23;
            s8 = 6;
            o4 = 1;
            break;
        case "F":
            s0 = 38;
            s1 = 21;
            s2 = 0;
            s3 = 37;
            s4 = 22;
            s5 = 5;
            s6 = 26;
            s7 = 3;
            s8 = 6;
            o4 = 1;
            break;
        case "G":
            s0 = 0;
            s1 = 28;
            s2 = 17;
            s3 = 3;
            s4 = 13;
            s5 = 41;
            s6 = 6;
            s7 = 19;
            s8 = 15;
            o4 = 2;
            break;
        case "H":
            s0 = 17;
            s1 = 10;
            s2 = 0;
            s3 = 37;
            s4 = 40;
            s5 = 5;
            s6 = 26;
            s7 = 19;
            s8 = 8;
            o4 = 0;
            break;
        case "I":
            s0 = 36;
            s1 = 21;
            s2 = 0;
            s3 = 12;
            s4 = 4;
            s5 = 1;
            s6 = 9;
            s7 = 23;
            s8 = 8;
            o4 = 0;
            break;
        case "J":
            s0 = 0;
            s1 = 16;
            s2 = 6;
            s3 = 3;
            s4 = 13;
            s5 = 5;
            s6 = 9;
            s7 = 7;
            s8 = 8;
            o4 = 2;
            break;
        case "K":
            s0 = 17;
            s1 = 28;
            s2 = 0;
            s3 = 37;
            s4 = 22;
            s5 = 5;
            s6 = 26;
            s7 = 19;
            s8 = 8;
            o4 = 0;
            break;
        case "L":
            s0 = 17;
            s1 = 1;
            s2 = 0;
            s3 = 14;
            s4 = 4;
            s5 = 7;
            s6 = 9;
            s7 = 23;
            s8 = 8;
            o4 = 0;
            break;
        case "M":
            s0 = 44;
            s1 = 23;
            s2 = 15;
            s3 = 14;
            s4 = 22;
            s5 = 12;
            s6 = 26;
            s7 = 7;
            s8 = 20;
            o4 = 1;
            break;
        case "N":
            s0 = 44;
            s1 = 10;
            s2 = 0;
            s3 = 14;
            s4 = 40;
            s5 = 5;
            s6 = 26;
            s7 = 19;
            s8 = 8;
            o4 = 0;
            break;
        case "O":
            s0 = 27;
            s1 = 32;
            s2 = 2;
            s3 = 14;
            s4 = 13;
            s5 = 5;
            s6 = 20;
            s7 = 23;
            s8 = 8;
            o4 = 0;
            break;
        case "P":
            s0 = 38;
            s1 = 32;
            s2 = 0;
            s3 = 37;
            s4 = 22;
            s5 = 5;
            s6 = 26;
            s7 = 1;
            s8 = 6;
            o4 = 1;
            break;
        case "Q":
            s0 = 27;
            s1 = 30;
            s2 = 2;
            s3 = 14;
            s4 = 13;
            s5 = 5;
            s6 = 20;
            s7 = 37;
            s8 = 8;
            o4 = 0;
            break;
        case "R":
            s0 = 38;
            s1 = 32;
            s2 = 0;
            s3 = 37;
            s4 = 13;
            s5 = 5;
            s6 = 26;
            s7 = 19;
            s8 = 6;
            o4 = 2;
            break;
        case "S":
            s0 = 38;
            s1 = 14;
            s2 = 0;
            s3 = 23;
            s4 = 31;
            s5 = 1;
            s6 = 9;
            s7 = 12;
            s8 = 6;
            o4 = 3;
            break;
        case "T":
            s0 = 36;
            s1 = 21;
            s2 = 2;
            s3 = 12;
            s4 = 4;
            s5 = 1;
            s6 = 20;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "U":
            s0 = 17;
            s1 = 10;
            s2 = 0;
            s3 = 14;
            s4 = 13;
            s5 = 1;
            s6 = 9;
            s7 = 12;
            s8 = 8;
            o4 = 0;
            break;
        case "V":
            s0 = 17;
            s1 = 10;
            s2 = 2;
            s3 = 14;
            s4 = 31;
            s5 = 5;
            s6 = 20;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "W":
            s0 = 17;
            s1 = 1;
            s2 = 15;
            s3 = 14;
            s4 = 13;
            s5 = 12;
            s6 = 20;
            s7 = 19;
            s8 = 6;
            o4 = 2;
            break;
        case "X":
            s0 = 17;
            s1 = 10;
            s2 = 0;
            s3 = 30;
            s4 = 31;
            s5 = 5;
            s6 = 26;
            s7 = 19;
            s8 = 8;
            o4 = 1;
            break;
        case "Y":
            s0 = 9;
            s1 = 1;
            s2 = 15;
            s3 = 3;
            s4 = 31;
            s5 = 19;
            s6 = 6;
            s7 = 23;
            s8 = 0;
            o4 = 1;
            break;
        case "Z":
            s0 = 11;
            s1 = 41;
            s2 = 0;
            s3 = 30;
            s4 = 4;
            s5 = 1;
            s6 = 9;
            s7 = 12;
            s8 = 8;
            o4 = 0;
            break;
        
        //Block #6 - Acronyms & Expressions
        case "hP":
            s0 = 17;
            s1 = 10;
            s2 = 38;
            s3 = 37;
            s4 = 49;
            s5 = 16;
            s6 = 26;
            s7 = 12;
            s8 = 6;
            o4 = 0;
            break;   
        case "IP":
            s0 = 9;
            s1 = 10;
            s2 = 38;
            s3 = 12;
            s4 = 13;
            s5 = 16;
            s6 = 20;
            s7 = 19;
            s8 = 6;
            o4 = 0;
            break;  
        case "TP":
            s0 = 36;
            s1 = 37;
            s2 = 38;
            s3 = 12;
            s4 = 13;
            s5 = 16;
            s6 = 20;
            s7 = 19;
            s8 = 0;
            o4 = 0;
            break;  
        case "Hi":
            s0 = 17;
            s1 = 10;
            s2 = 24;
            s3 = 37;
            s4 = 40;
            s5 = 14;
            s6 = 26;
            s7 = 19;
            s8 = 18;
            o4 = 0;
            break;
        
        //Block #7 - Moving Letters
        case "F1":
            s0 = 0;
            s1 = 1;
            s2 = 11;
            s3 = 3;
            s4 = 4;
            s5 = 14;
            s6 = 6;
            s7 = 7;
            s8 = 18;
            o4 = 0;
            break;
        case "F2":
            s0 = 0;
            s1 = 1;
            s2 = 44;
            s3 = 3;
            s4 = 4;
            s5 = 43;
            s6 = 6;
            s7 = 7;
            s8 = 20;
            o4 = 0;
            break;
        case "F3":
            s0 = 0;
            s1 = 10;
            s2 = 17;
            s3 = 3;
            s4 = 13;
            s5 = 16;
            s6 = 6;
            s7 = 19;
            s8 = 8;
            o4 = 0;
            break;
        case "F4":
            s0 = 0;
            s1 = 41;
            s2 = 18;
            s3 = 3;
            s4 = 40;
            s5 = 19;
            s6 = 6;
            s7 = 23;
            s8 = 8;
            o4 = 3;
            break;
        case "F5":
            s0 = 9;
            s1 = 14;
            s2 = 0;
            s3 = 12;
            s4 = 13;
            s5 = 1;
            s6 = 20;
            s7 = 7;
            s8 = 8;
            o4 = 3;
            break;
        case "F6":
            s0 = 38;
            s1 = 21;
            s2 = 0;
            s3 = 37;
            s4 = 22;
            s5 = 5;
            s6 = 26;
            s7 = 1;
            s8 = 6;
            o4 = 1;
            break;
        case "F7":
            s0 = 11;
            s1 = 1;
            s2 = 2;
            s3 = 10;
            s4 = 4;
            s5 = 5;
            s6 = 6;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "F8":
            s0 = 24;
            s1 = 3;
            s2 = 2;
            s3 = 25;
            s4 = 4;
            s5 = 5;
            s6 = 6;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;

        //Block #8 - Lower-Case Letters
        case "b":
            s0 = 17;
            s1 = 1;
            s2 = 0;
            s3 = 37;
            s4 = 31;
            s5 = 5;
            s6 = 9;
            s7 = 23;
            s8 = 8;
            o4 = 3;
            break;
        case "d":
            s0 = 0;
            s1 = 10;
            s2 = 2;
            s3 = 30;
            s4 = 40;
            s5 = 1;
            s6 = 20;
            s7 = 12;
            s8 = 8;
            o4 = 0;
            break;

        //Block #9 - Two-Letter Combinations
        case "AE":
            s0 = 38;
            s1 = 41;
            s2 = 18;
            s3 = 37;
            s4 = 40;
            s5 = 19;
            s6 = 26;
            s7 = 12;
            s8 = 20;
            o4 = 3;
            break;
        case "GT":
            s0 = 27;
            s1 = 21;
            s2 = 2;
            s3 = 30;
            s4 = 40;
            s5 = 19;
            s6 = 20;
            s7 = 12;
            s8 = 8;
            o4 = 0;
            break;
        case "OE":
            s0 = 38;
            s1 = 41;
            s2 = 18;
            s3 = 14;
            s4 = 40;
            s5 = 19;
            s6 = 9;
            s7 = 12;
            s8 = 20;
            o4 = 3;
            break;
        case "UE":
            s0 = 17;
            s1 = 41;
            s2 = 18;
            s3 = 14;
            s4 = 40;
            s5 = 19;
            s6 = 9;
            s7 = 12;
            s8 = 20;
            o4 = 3;
            break;

        //Block #10 - Unicode Character Escape Sequences  
        //"u0025" = "%"       
        case "u0025":
            s0 = 9;
            s1 = 16;
            s2 = 29;
            s3 = 3;
            s4 = 31;
            s5 = 10;
            s6 = 20;
            s7 = 7;
            s8 = 15;
            o4 = 0;
            break;
        //"u0040" = "@"     
        case "u0040":
            s0 = 20;
            s1 = 14;
            s2 = 27;
            s3 = 12;
            s4 = 13;
            s5 = 41;
            s6 = 6;
            s7 = 23;
            s8 = 15;
            o4 = 0;
            break;
        //"u00C7" = "Ç"  
        case "u00C7":
            s0 = 0;
            s1 = 28;
            s2 = 17;
            s3 = 3;
            s4 = 13;
            s5 = 5;
            s6 = 6;
            s7 = 19;
            s8 = 42;
            o4 = 2;
            break;

        //Block #11 - Symbols  
        case "Symbol1":
            s0 = 45;
            s1 = 1;
            s2 = 2;
            s3 = 3;
            s4 = 4;
            s5 = 5;
            s6 = 6;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol2":
            s0 = 29;
            s1 = 21;
            s2 = 2;
            s3 = 25;
            s4 = 22;
            s5 = 5;
            s6 = 6;
            s7 = 7;
            s8 = 8;
            o4 = 1;
            break;
        case "Symbol3":
            s0 = 0;
            s1 = 1;
            s2 = 6;
            s3 = 3;
            s4 = 4;
            s5 = 5;
            s6 = 26;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol4":
            s0 = 0;
            s1 = 1;
            s2 = 2;
            s3 = 3;
            s4 = 4;
            s5 = 5;
            s6 = 11;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol5":
            s0 = 0;
            s1 = 3;
            s2 = 6;
            s3 = 25;
            s4 = 4;
            s5 = 5;
            s6 = 26;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol6":
            s0 = 0;
            s1 = 3;
            s2 = 2;
            s3 = 25;
            s4 = 4;
            s5 = 5;
            s6 = 11;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol7":
            s0 = 0;
            s1 = 3;
            s2 = 2;
            s3 = 25;
            s4 = 4;
            s5 = 5;
            s6 = 6;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol8":
            s0 = 17;
            s1 = 1;
            s2 = 2;
            s3 = 3;
            s4 = 4;
            s5 = 5;
            s6 = 6;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol9":
            s0 = 0;
            s1 = 1;
            s2 = 2;
            s3 = 48;
            s4 = 4;
            s5 = 5;
            s6 = 6;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol10":
            s0 = 0;
            s1 = 1;
            s2 = 2;
            s3 = 10;
            s4 = 22;
            s5 = 5;
            s6 = 6;
            s7 = 7;
            s8 = 8;
            o4 = 1;
            break;
        case "Symbol11":
            s0 = 0;
            s1 = 1;
            s2 = 2;
            s3 = 10;
            s4 = 13;
            s5 = 5;
            s6 = 6;
            s7 = 7;
            s8 = 8;
            o4 = 3;
            break;
        case "Symbol12":
            s0 = 0;
            s1 = 1;
            s2 = 2;
            s3 = 3;
            s4 = 4;
            s5 = 5;
            s6 = 17;
            s7 = 14;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol13":
            s0 = 17;
            s1 = 3;
            s2 = 0;
            s3 = 25;
            s4 = 4;
            s5 = 5;
            s6 = 26;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol14":
            s0 = 24;
            s1 = 1;
            s2 = 6;
            s3 = 14;
            s4 = 4;
            s5 = 5;
            s6 = 26;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol15":
            s0 = 0;
            s1 = 21;
            s2 = 2;
            s3 = 30;
            s4 = 22;
            s5 = 1;
            s6 = 20;
            s7 = 12;
            s8 = 8;
            o4 = 1;
            break;
        case "Symbol16":
            s0 = 0;
            s1 = 1;
            s2 = 2;
            s3 = 3;
            s4 = 4;
            s5 = 5;
            s6 = 11;
            s7 = 10;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol17":
            s0 = 17;
            s1 = 16;
            s2 = 2;
            s3 = 3;
            s4 = 4;
            s5 = 5;
            s6 = 6;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol18":
            s0 = 0;
            s1 = 1;
            s2 = 2;
            s3 = 30;
            s4 = 4;
            s5 = 5;
            s6 = 20;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol19":
            s0 = 0;
            s1 = 1;
            s2 = 6;
            s3 = 28;
            s4 = 4;
            s5 = 5;
            s6 = 26;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol20":
            s0 = 20;
            s1 = 21;
            s2 = 2;
            s3 = 34;
            s4 = 4;
            s5 = 5;
            s6 = 6;
            s7 = 23;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol21":
            s0 = 29;
            s1 = 1;
            s2 = 6;
            s3 = 19;
            s4 = 22;
            s5 = 5;
            s6 = 26;
            s7 = 7;
            s8 = 8;
            o4 = 1;
            break;
        case "Symbol22":
            s0 = 0;
            s1 = 23;
            s2 = 18;
            s3 = 3;
            s4 = 13;
            s5 = 5;
            s6 = 6;
            s7 = 19;
            s8 = 26;
            o4 = 0;
            break;
        case "Symbol23":
            s0 = 26;
            s1 = 19;
            s2 = 0;
            s3 = 3;
            s4 = 13;
            s5 = 5;
            s6 = 18;
            s7 = 23;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol24":
            s0 = 0;
            s1 = 10;
            s2 = 18;
            s3 = 3;
            s4 = 13;
            s5 = 5;
            s6 = 6;
            s7 = 16;
            s8 = 26;
            o4 = 0;
            break;
        case "Symbol25":
            s0 = 26;
            s1 = 16;
            s2 = 0;
            s3 = 3;
            s4 = 13;
            s5 = 5;
            s6 = 18;
            s7 = 10;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol26":
            s0 = 0;
            s1 = 1;
            s2 = 2;
            s3 = 43;
            s4 = 22;
            s5 = 5;
            s6 = 20;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol27":
            s0 = 0;
            s1 = 1;
            s2 = 2;
            s3 = 16;
            s4 = 22;
            s5 = 5;
            s6 = 6;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol28":
            s0 = 0;
            s1 = 1;
            s2 = 6;
            s3 = 28;
            s4 = 22;
            s5 = 5;
            s6 = 26;
            s7 = 23;
            s8 = 8;
            o4 = 1;
            break;
        case "Symbol29":
            s0 = 0;
            s1 = 1;
            s2 = 2;
            s3 = 23;
            s4 = 13;
            s5 = 7;
            s6 = 20;
            s7 = 12;
            s8 = 8;
            o4 = 3;
            break;
        case "Symbol30":
            s0 = 0;
            s1 = 23;
            s2 = 18;
            s3 = 19;
            s4 = 22;
            s5 = 5;
            s6 = 26;
            s7 = 7;
            s8 = 8;
            o4 = 1;
            break;
        case "Symbol31":
            s0 = 33;
            s1 = 1;
            s2 = 2;
            s3 = 3;
            s4 = 31;
            s5 = 5;
            s6 = 6;
            s7 = 7;
            s8 = 20;
            o4 = 1;
            break;
        case "Symbol32":
            s0 = 20;
            s1 = 21;
            s2 = 2;
            s3 = 39;
            s4 = 13;
            s5 = 19;
            s6 = 6;
            s7 = 23;
            s8 = 8;
            o4 = 3;
            break;
        case "Symbol33":
            s0 = 0;
            s1 = 25;
            s2 = 20;
            s3 = 23;
            s4 = 13;
            s5 = 43;
            s6 = 6;
            s7 = 19;
            s8 = 8;
            o4 = 3;
            break;
        case "Symbol34":
            s0 = 20;
            s1 = 43;
            s2 = 2;
            s3 = 25;
            s4 = 13;
            s5 = 19;
            s6 = 6;
            s7 = 23;
            s8 = 8;
            o4 = 2;
            break;
        case "Symbol35":
            s0 = 0;
            s1 = 16;
            s2 = 2;
            s3 = 34;
            s4 = 40;
            s5 = 19;
            s6 = 6;
            s7 = 23;
            s8 = 8;
            o4 = 2;
            break;
        case "Symbol36":
            s0 = 47;
            s1 = 21;
            s2 = 2;
            s3 = 25;
            s4 = 31;
            s5 = 5;
            s6 = 6;
            s7 = 7;
            s8 = 8;
            o4 = 1;
            break;
        case "Symbol37":
            s0 = 0;
            s1 = 25;
            s2 = 47;
            s3 = 3;
            s4 = 31;
            s5 = 21;
            s6 = 6;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol38":
            s0 = 2;
            s1 = 19;
            s2 = 29;
            s3 = 3;
            s4 = 49;
            s5 = 23;
            s6 = 6;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol39":
            s0 = 33;
            s1 = 23;
            s2 = 2;
            s3 = 19;
            s4 = 49;
            s5 = 5;
            s6 = 6;
            s7 = 7;
            s8 = 8;
            o4 = 0;
            break;
        case "Symbol40":
            s0 = 42;
            s1 = 52;
            s2 = 20;
            s3 = 39;
            s4 = 49;
            s5 = 19;
            s6 = 6;
            s7 = 23;
            s8 = 8;
            o4 = 0;
            break;

        //Block #12 - Droplets
        case "Droplets1":
            s0 = 36;
            s1 = 46;
            s2 = 18;
            s3 = 3;
            s4 = 22;
            s5 = 5;
            s6 = 0;
            s7 = 7;
            s8 = 8;
            o4 = 1;
            break;
        case "Droplets2":
            s0 = 36;
            s1 = 39;
            s2 = 18;
            s3 = 3;
            s4 = 13;
            s5 = 5;
            s6 = 2;
            s7 = 7;
            s8 = 8;
            o4 = 2;
            break;
        case "Droplets3":
            s0 = 36;
            s1 = 39;
            s2 = 18;
            s3 = 3;
            s4 = 22;
            s5 = 5;
            s6 = 2;
            s7 = 23;
            s8 = 8;
            o4 = 1;
            break;
        case "Droplets4":
            s0 = 36;
            s1 = 12;
            s2 = 18;
            s3 = 3;
            s4 = 13;
            s5 = 1;
            s6 = 20;
            s7 = 7;
            s8 = 8;
            o4 = 2;
            break;
        case "Droplets5":
            s0 = 36;
            s1 = 12;
            s2 = 18;
            s3 = 3;
            s4 = 22;
            s5 = 1;
            s6 = 20;
            s7 = 23;
            s8 = 8;
            o4 = 1;
            break;
        case "Droplets6":
            s0 = 33;
            s1 = 12;
            s2 = 18;
            s3 = 3;
            s4 = 13;
            s5 = 1;
            s6 = 20;
            s7 = 19;
            s8 = 8;
            o4 = 2;
            break;
        case "Droplets7":
            s0 = 33;
            s1 = 12;
            s2 = 18;
            s3 = 3;
            s4 = 22;
            s5 = 1;
            s6 = 20;
            s7 = 34;
            s8 = 8;
            o4 = 1;
            break;
        case "Droplets8":
            s0 = 29;
            s1 = 23;
            s2 = 18;
            s3 = 3;
            s4 = 13;
            s5 = 7;
            s6 = 20;
            s7 = 12;
            s8 = 8;
            o4 = 2;
            break;

        //Block #13 - Chinese Trigrams 
        case "Qian":
            s0 = 11;
            s1 = 14;
            s2 = 17;
            s3 = 10;
            s4 = 13;
            s5 = 16;
            s6 = 9;
            s7 = 12;
            s8 = 15;
            o4 = 3;
            break;
        case "Dui":
            s0 = 11;
            s1 = 1;
            s2 = 17;
            s3 = 10;
            s4 = 13;
            s5 = 16;
            s6 = 9;
            s7 = 12;
            s8 = 15;
            o4 = 3;
            break;
        case "Li":
            s0 = 11;
            s1 = 14;
            s2 = 17;
            s3 = 10;
            s4 = 4;
            s5 = 16;
            s6 = 9;
            s7 = 12;
            s8 = 15;
            o4 = 0;
            break;
        case "Zhen":
            s0 = 11;
            s1 = 1;
            s2 = 17;
            s3 = 10;
            s4 = 4;
            s5 = 16;
            s6 = 9;
            s7 = 12;
            s8 = 15;
            o4 = 0;
            break;
        case "Xun":
            s0 = 11;
            s1 = 14;
            s2 = 17;
            s3 = 10;
            s4 = 13;
            s5 = 16;
            s6 = 9;
            s7 = 7;
            s8 = 15;
            o4 = 3;
            break;
        case "Kan":
            s0 = 11;
            s1 = 1;
            s2 = 17;
            s3 = 10;
            s4 = 13;
            s5 = 16;
            s6 = 9;
            s7 = 7;
            s8 = 15;
            o4 = 3;
            break;
        case "Gen":
            s0 = 11;
            s1 = 14;
            s2 = 17;
            s3 = 10;
            s4 = 4;
            s5 = 16;
            s6 = 9;
            s7 = 7;
            s8 = 15;
            o4 = 0;
            break;
        case "Kun":
            s0 = 11;
            s1 = 1;
            s2 = 17;
            s3 = 10;
            s4 = 4;
            s5 = 16;
            s6 = 9;
            s7 = 7;
            s8 = 15;
            o4 = 0;
            break;

        //Block #14 - Chinese Characters 
        case "Ren":
            s0 = 0;
            s1 = 23;
            s2 = 18;
            s3 = 19;
            s4 = 31;
            s5 = 5;
            s6 = 26;
            s7 = 7;
            s8 = 20;
            o4 = 1;
            break;
        case "Shang":
            s0 = 0;
            s1 = 16;
            s2 = 6;
            s3 = 3;
            s4 = 40;
            s5 = 19;
            s6 = 9;
            s7 = 12;
            s8 = 20;
            o4 = 3;
            break;
        case "Tu":
            s0 = 0;
            s1 = 16;
            s2 = 6;
            s3 = 23;
            s4 = 40;
            s5 = 1;
            s6 = 9;
            s7 = 12;
            s8 = 20;
            o4 = 3;
            break;
        case "Xia":
            s0 = 11;
            s1 = 48;
            s2 = 18;
            s3 = 3;
            s4 = 13;
            s5 = 19;
            s6 = 6;
            s7 = 23;
            s8 = 8;
            o4 = 2;
            break;

        //Block #15 - Left-Hand Side Letters 
        case "C_Left":
            s0 = 27;
            s1 = 30;
            s2 = 2;
            s3 = 14;
            s4 = 4;
            s5 = 1;
            s6 = 20;
            s7 = 12;
            s8 = 8;
            o4 = 0;
            break;
        case "G_Left":
            s0 = 27;
            s1 = 21;
            s2 = 2;
            s3 = 14;
            s4 = 40;
            s5 = 7;
            s6 = 20;
            s7 = 12;
            s8 = 8;
            o4 = 0;
            break;
        case "S_Left":
            s0 = 27;
            s1 = 14;
            s2 = 0;
            s3 = 23;
            s4 = 31;
            s5 = 1;
            s6 = 9;
            s7 = 12;
            s8 = 8;
            o4 = 3;
            break;
        case "U_Left":
            s0 = 17;
            s1 = 10;
            s2 = 2;
            s3 = 14;
            s4 = 13;
            s5 = 1;
            s6 = 20;
            s7 = 12;
            s8 = 8;
            o4 = 0;
            break;
        case "W_Left":
            s0 = 17;
            s1 = 1;
            s2 = 15;
            s3 = 14;
            s4 = 13;
            s5 = 12;
            s6 = 20;
            s7 = 19;
            s8 = 6;
            o4 = 2;
            break;
        case "Y_Left":
            s0 = 17;
            s1 = 10;
            s2 = 2;
            s3 = 28;
            s4 = 22;
            s5 = 5;
            s6 = 20;
            s7 = 7;
            s8 = 8;
            o4 = 1;
            break;

    }

    //Front Face Stickers
    CS.frontFaceStickersArray[0] = s0;
    CS.frontFaceStickersArray[1] = s1;
    CS.frontFaceStickersArray[2] = s2;
    CS.frontFaceStickersArray[3] = s3;
    CS.frontFaceStickersArray[4] = s4;
    CS.frontFaceStickersArray[5] = s5;
    CS.frontFaceStickersArray[6] = s6;
    CS.frontFaceStickersArray[7] = s7;
    CS.frontFaceStickersArray[8] = s8;

    //Center facelet orientation: 0 (0°), 1 (270°), 2 (180°), 3 (90°)
    CS.centerOrientation = o4;
}

