B4A Library [B4X] QRGenerator - Cross platform QR code generator (Version 1 LMQH to Version 40 LMQH in post #11)

This is based on @Erel's posting here:


Have added all the required generator polynomial factors that are required for Version 1 to Version 40 QR Codes
Changed the names of the array holding the generator polynomial factors to:
B4X:
    '7, 10, 13, 15, 16, 17, 18, 20, 22, 24, 26, 28, and 30
    Private Generator7() As Int = Array As Int(1, 127, 122, 154, 164, 11, 68, 117)
    Private Generator10() As Int = Array As Int(1, 216, 194, 159, 111, 199, 94, 95, 113, 157, 193)
    Private Generator13() As Int = Array As Int(1, 137, 73, 227, 17, 177, 17, 52, 13, 46, 43, 83, 132, 120)
    Private Generator15() As Int = Array As Int(1, 29, 196, 111, 163, 112, 74, 10, 105, 105, 139, 132, 151, 32, 134, 26)
    Private Generator16() As Int = Array As Int(1, 59, 13, 104, 189, 68, 209, 30, 8, 163, 65, 41, 229, 98, 50, 36, 59)
    Private Generator17() As Int = Array As Int(1, 119, 66, 83, 120, 119, 22, 197, 83, 249, 41, 143, 134, 85, 53, 125, 99, 79)
    Private Generator18() As Int = Array As Int(1, 239, 251, 183, 113, 149, 175, 199, 215, 240, 220, 73, 82, 173, 75, 32, 67, 217, 146)
    Private Generator20() As Int = Array As Int(1, 152, 185, 240, 5, 111, 99, 6, 220, 112, 150, 69, 36, 187, 22, 228, 198, 121, 121, 165, 174)
    Private Generator22() As Int = Array As Int(1, 89, 179, 131, 176, 182, 244, 19, 189, 69, 40, 28, 137, 29, 123, 67, 253, 86, 218, 230, 26, 145, 245)
    Private Generator24() As Int = Array As Int(1, 122, 118, 169, 70, 178, 237, 216, 102, 115, 150, 229, 73, 130, 72, 61, 43, 206, 1, 237, 247, 127, 217, 144, 117)
    Private Generator26() As Int = Array As Int(1, 246, 51, 183, 4, 136, 98, 199, 152, 77, 56, 206, 24, 145, 40, 209, 117, 233, 42, 135, 68, 70, 144, 146, 77, 43, 94)
    Private Generator28() As Int = Array As Int(1, 252, 9, 28, 13, 18, 251, 208, 150, 103, 174, 100, 41, 167, 12, 247, 56, 117, 119, 233, 127, 181, 100, 121, 147, 176, 74, 58, 197)
    Private Generator30() As Int = Array As Int(1, 212, 246, 77, 73, 195, 192, 75, 98, 5, 70, 103, 177, 22, 217, 138, 51, 181, 246, 72, 25, 18, 46, 228, 74, 216, 195, 11, 106, 130, 150)
Have added additional "setup code" in Sub Initialize(....) so that it can support Version 1 to Version 10 QR Codes for all 4 error correction levels (i.e Levels L, M, Q, H)

As it stands at present it supports:
1. Version 1 to 10 QR Code (error correction level L, M, Q, H)
2. Version 23H
3. Version 40H
4. Version 40L

Sample code that I have added/amended/changed:
B4X:
'version 1.60
Sub Class_Globals
    Private xui As XUI
    Public cvs As B4XCanvas
    Private ModuleSize As Int
    Private GFSize As Int = 256
    Private ExpTable(GFSize) As Int
    Private LogTable(GFSize) As Int
    Private PolyZero() As Int = Array As Int(0)
    '7, 10, 13, 15, 16, 17, 18, 20, 22, 24, 26, 28, and 30
    Private Generator7() As Int = Array As Int(1, 127, 122, 154, 164, 11, 68, 117)
    Private Generator10() As Int = Array As Int(1, 216, 194, 159, 111, 199, 94, 95, 113, 157, 193)
    Private Generator13() As Int = Array As Int(1, 137, 73, 227, 17, 177, 17, 52, 13, 46, 43, 83, 132, 120)
    Private Generator15() As Int = Array As Int(1, 29, 196, 111, 163, 112, 74, 10, 105, 105, 139, 132, 151, 32, 134, 26)
    Private Generator16() As Int = Array As Int(1, 59, 13, 104, 189, 68, 209, 30, 8, 163, 65, 41, 229, 98, 50, 36, 59)
    Private Generator17() As Int = Array As Int(1, 119, 66, 83, 120, 119, 22, 197, 83, 249, 41, 143, 134, 85, 53, 125, 99, 79)
    Private Generator18() As Int = Array As Int(1, 239, 251, 183, 113, 149, 175, 199, 215, 240, 220, 73, 82, 173, 75, 32, 67, 217, 146)
    Private Generator20() As Int = Array As Int(1, 152, 185, 240, 5, 111, 99, 6, 220, 112, 150, 69, 36, 187, 22, 228, 198, 121, 121, 165, 174)
    Private Generator22() As Int = Array As Int(1, 89, 179, 131, 176, 182, 244, 19, 189, 69, 40, 28, 137, 29, 123, 67, 253, 86, 218, 230, 26, 145, 245)
    Private Generator24() As Int = Array As Int(1, 122, 118, 169, 70, 178, 237, 216, 102, 115, 150, 229, 73, 130, 72, 61, 43, 206, 1, 237, 247, 127, 217, 144, 117)
    Private Generator26() As Int = Array As Int(1, 246, 51, 183, 4, 136, 98, 199, 152, 77, 56, 206, 24, 145, 40, 209, 117, 233, 42, 135, 68, 70, 144, 146, 77, 43, 94)
    Private Generator28() As Int = Array As Int(1, 252, 9, 28, 13, 18, 251, 208, 150, 103, 174, 100, 41, 167, 12, 247, 56, 117, 119, 233, 127, 181, 100, 121, 147, 176, 74, 58, 197)
    Private Generator30() As Int = Array As Int(1, 212, 246, 77, 73, 195, 192, 75, 98, 5, 70, 103, 177, 22, 217, 138, 51, 181, 246, 72, 25, 18, 46, 228, 74, 216, 195, 11, 106, 130, 150)


    Private TempBB As B4XBytesBuilder
    Private Matrix(0, 0) As Boolean
    Private Reserved(0, 0) As Boolean
    Private NumberOfModules As Int
    Private mBitmapSize As Int
    Type QRVersionData (Format() As Byte, Generator() As Int, MaxSize As Int, Version As Int, MaxUsableSize As Int, Alignments() As Int, _
        Group1Size As Int, Group2Size As Int, Block1Size As Int, Block2Size As Int, VersionName As String, VersionInformation() As Byte)
    Private versions As List
End Sub


Public Sub Initialize (BitmapSize As Int)
    TempBB.Initialize
    mBitmapSize = BitmapSize
    PrepareTables
    versions.Initialize
    'format information for masking pattern 0
    Dim L0() As Byte = Array As Byte(1,1,1,0,1,1,1,1,1,0,0,0,1,0,0)     'ECC Level L
    Dim M0() As Byte = Array As Byte(1,0,1,0,1,0,0,0,0,0,1,0,0,1,0)     'ECC Level M
    Dim Q0() As Byte = Array As Byte(0,1,1,0,1,0,1,0,1,0,1,1,1,1,1)     'ECC Level Q
    Dim H0() As Byte = Array As Byte(0,0,1,0,1,1,0,1,0,0,0,1,0,0,1)     'ECC Level H
    
    versions.Add(CreateVersionData(1, "1L", Generator7,  L0, 19 * 8, 17, Array As Int(), 1, 0, 19, 0, Null))
    versions.Add(CreateVersionData(1, "1M", Generator10, M0, 16 * 8, 14, Array As Int(), 1, 0, 16, 0, Null))
    versions.Add(CreateVersionData(1, "1Q", Generator13, Q0, 13 * 8, 11, Array As Int(), 1, 0, 13, 0, Null))
    versions.Add(CreateVersionData(1, "1H", Generator17, H0,  9 * 8,  7, Array As Int(), 1, 0,  9, 0, Null))
    
    versions.Add(CreateVersionData(2, "2L", Generator10, L0, 34 * 8, 32, Array As Int(6, 18), 1, 0, 34, 0, Null))
    versions.Add(CreateVersionData(2, "2M", Generator16, M0, 28 * 8, 26, Array As Int(6, 18), 1, 0, 28, 0, Null))
    versions.Add(CreateVersionData(2, "2Q", Generator22, Q0, 22 * 8, 20, Array As Int(6, 18), 1, 0, 22, 0, Null))
    versions.Add(CreateVersionData(2, "2H", Generator28, H0, 16 * 8, 14, Array As Int(6, 18), 1, 0, 16, 0, Null))

    versions.Add(CreateVersionData(3, "3L", Generator15, L0, 55 * 8, 53, Array As Int(6, 22), 1, 0, 55, 0, Null))
    versions.Add(CreateVersionData(3, "3M", Generator26, M0, 44 * 8, 42, Array As Int(6, 22), 1, 0, 44, 0, Null))
    versions.Add(CreateVersionData(3, "3Q", Generator18, Q0, 34 * 8, 32, Array As Int(6, 22), 2, 0, 17, 0, Null))
    versions.Add(CreateVersionData(3, "3H", Generator22, H0, 26 * 8, 24, Array As Int(6, 22), 2, 0, 13, 0, Null))
    
    versions.Add(CreateVersionData(4, "4L", Generator20, L0 , 80 * 8, 78, Array As Int(6, 26), 1, 0, 80, 0, Null))
    versions.Add(CreateVersionData(4, "4M", Generator18, M0 , 64 * 8, 62, Array As Int(6, 26), 2, 0, 32, 0, Null))
    versions.Add(CreateVersionData(4, "4Q", Generator26, Q0 , 48 * 8, 46, Array As Int(6, 26), 2, 0, 24, 0, Null))
    versions.Add(CreateVersionData(4, "4H", Generator16, H0 , 36 * 8, 34, Array As Int(6, 26), 4, 0,  9, 0, Null))
    
    versions.Add(CreateVersionData(5, "5L", Generator26, L0 , 108 * 8, 106, Array As Int(6, 30), 1, 0, 108,  0, Null))
    versions.Add(CreateVersionData(5, "5M", Generator24, M0 ,  86 * 8,  84, Array As Int(6, 30), 2, 0,  43,  0, Null))
    versions.Add(CreateVersionData(5, "5Q", Generator18, Q0 ,  62 * 8,  60, Array As Int(6, 30), 2, 2,  15, 16, Null))
    versions.Add(CreateVersionData(5, "5H", Generator22, H0 ,  46 * 8,  44, Array As Int(6, 30), 2, 2,  11, 12, Null))

    versions.Add(CreateVersionData(6, "6L", Generator18, L0 , 136 * 8, 134, Array As Int(6, 34), 2, 0, 68, 0, Null))
    versions.Add(CreateVersionData(6, "6M", Generator16, M0 , 108 * 8, 106, Array As Int(6, 34), 4, 0, 27, 0, Null))
    versions.Add(CreateVersionData(6, "6Q", Generator24, Q0 ,  76 * 8,  74, Array As Int(6, 34), 4, 0, 19, 0, Null))
    versions.Add(CreateVersionData(6, "6H", Generator28, H0 ,  60 * 8,  58, Array As Int(6, 34), 4, 0, 15, 0, Null))
    
    versions.Add(CreateVersionData(7, "7L", Generator20, L0 , 156 * 8, 154, Array As Int(6, 22, 38), 2, 0, 78,  0, Array As Byte(0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0)))
    versions.Add(CreateVersionData(7, "7M", Generator18, M0 , 124 * 8, 122, Array As Int(6, 22, 38), 4, 0, 31,  0, Array As Byte(0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0)))
    versions.Add(CreateVersionData(7, "7Q", Generator18, Q0 ,  88 * 8,  86, Array As Int(6, 22, 38), 2, 4, 14, 15, Array As Byte(0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0)))
    versions.Add(CreateVersionData(7, "7H", Generator26, H0 ,  66 * 8,  64, Array As Int(6, 22, 38), 4, 1, 13, 14, Array As Byte(0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0)))
    
    versions.Add(CreateVersionData(8, "8L", Generator24, L0 , 194 * 8, 192, Array As Int(6, 24, 42), 2, 0, 97,  0, Array As Byte(0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0)))
    versions.Add(CreateVersionData(8, "8M", Generator22, M0 , 154 * 8, 152, Array As Int(6, 24, 42), 2, 2, 38, 39, Array As Byte(0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0)))
    versions.Add(CreateVersionData(8, "8Q", Generator22, Q0 , 110 * 8, 108, Array As Int(6, 24, 42), 4, 2, 18, 19, Array As Byte(0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0)))
    versions.Add(CreateVersionData(8, "8H", Generator26, H0 ,  86 * 8,  84, Array As Int(6, 24, 42), 4, 2, 14, 15, Array As Byte(0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0)))
        
    versions.Add(CreateVersionData(9, "9L", Generator30, L0,  232 * 8, 230, Array As Int(6, 26, 46), 2, 0, 116, 0, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
    versions.Add(CreateVersionData(9, "9M", Generator22, M0 , 182 * 8, 180, Array As Int(6, 26, 46), 3, 2, 36, 37, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
    versions.Add(CreateVersionData(9, "9Q", Generator20, Q0 , 132 * 8, 130, Array As Int(6, 26, 46), 4, 4, 16, 17, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
    versions.Add(CreateVersionData(9, "9H", Generator24, H0 , 100 * 8,  98, Array As Int(6, 26, 46), 4, 4, 12, 13, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
    
    versions.Add(CreateVersionData(10, "10L", Generator18, L0,  274 * 8, 271, Array As Int(6, 28, 50), 2, 2, 68, 69, Array As Byte(0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1)))
    versions.Add(CreateVersionData(10, "10M", Generator26, M0 , 216 * 8, 213, Array As Int(6, 28, 50), 4, 1, 43, 44, Array As Byte(0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1)))
    versions.Add(CreateVersionData(10, "10Q", Generator24, Q0 , 154 * 8, 151, Array As Int(6, 28, 50), 6, 2, 19, 20, Array As Byte(0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1)))
    versions.Add(CreateVersionData(10, "10H", Generator28, H0 , 122 * 8, 119, Array As Int(6, 28, 50), 6, 2, 15, 16, Array As Byte(0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1)))
    
    versions.Add(CreateVersionData(23, "23H", Generator30, H0, 464 * 8, 461, Array As Int(6, 30, 54, 78, 102), 16, 14, 15, 16, _
        Array As Byte(0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0)))
        
    versions.Add(CreateVersionData(40, "40H", Generator30, H0, 1276 * 8, 1273, Array As Int(6, 30, 58, 86, 114, 142, 170), 20, 61, 15, 16, _
        Array As Byte(1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1)))
        
    versions.Add(CreateVersionData(40, "40L", Generator30, L0, 2956 * 8, 2953, Array As Int(6, 30, 58, 86, 114, 142, 170), 19, 6, 118, 119, _
        Array As Byte(1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1)))
        
End Sub


1587909393482.png
 

Attachments

  • QRGenerator.zip
    7.1 KB · Views: 699

Johan Schoeman

Expert
Licensed User
Longtime User
Add this to the code module (QRGenerator.bas) to allow for Version 15 QR Codes (error correction levels L, M, Q, H)
B4X:
    versions.Add(CreateVersionData(15, "15L", Generator22, L0,  523 * 8, 520, Array As Int(6, 26, 48, 70),  5, 1, 87, 88, Array As Byte(0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0)))
    versions.Add(CreateVersionData(15, "15M", Generator24, M0 , 415 * 8, 412, Array As Int(6, 26, 48, 70),  5, 5, 41, 42, Array As Byte(0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0)))
    versions.Add(CreateVersionData(15, "15Q", Generator30, Q0 , 295 * 8, 292, Array As Int(6, 26, 48, 70),  5, 7, 24, 25, Array As Byte(0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0)))
    versions.Add(CreateVersionData(15, "15H", Generator24, H0 , 223 * 8, 220, Array As Int(6, 26, 48, 70), 11, 7, 12, 13, Array As Byte(0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0)))

Tested and working ;)
 

Johan Schoeman

Expert
Licensed User
Longtime User
Add this to the code module (QRGenerator.bas) to allow for Version 13 QR Codes (error correction levels L, M, Q, H)

B4X:
    versions.Add(CreateVersionData(13, "13L", Generator26, L0,  428 * 8, 425, Array As Int(6, 34, 62),  4, 0, 107, 0, Array As Byte(0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1)))
    versions.Add(CreateVersionData(13, "13M", Generator22, M0 , 334 * 8, 331, Array As Int(6, 34, 62),  8, 1, 37, 38, Array As Byte(0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1)))
    versions.Add(CreateVersionData(13, "13Q", Generator24, Q0 , 244 * 8, 241, Array As Int(6, 34, 62),  8, 4, 20, 21, Array As Byte(0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1)))
    versions.Add(CreateVersionData(13, "13H", Generator22, H0 , 180 * 8, 177, Array As Int(6, 34, 62), 12, 4, 11, 12, Array As Byte(0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1)))

Tested and working ;)
 

Johan Schoeman

Expert
Licensed User
Longtime User
Add this to the code module (QRGenerator.bas) to allow for Version 19 QR Codes (error correction levels L, M, Q, H)

B4X:
    versions.Add(CreateVersionData(19, "19L", Generator28, L0,  795 * 8, 792, Array As Int(6, 30, 58, 86),  3,  4, 113, 114, Array As Byte(0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0)))
    versions.Add(CreateVersionData(19, "19M", Generator26, M0 , 627 * 8, 624, Array As Int(6, 30, 58, 86),  3, 11,  44,  45, Array As Byte(0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0)))
    versions.Add(CreateVersionData(19, "19Q", Generator26, Q0 , 445 * 8, 442, Array As Int(6, 30, 58, 86), 17,  4,  21,  22, Array As Byte(0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0)))
    versions.Add(CreateVersionData(19, "19H", Generator26, H0 , 341 * 8, 338, Array As Int(6, 30, 58, 86),  9, 16,  13,  14, Array As Byte(0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0)))

Tested and working ;)

1587916444255.png
 

Johan Schoeman

Expert
Licensed User
Longtime User
Add this to the code module (QRGenerator.bas) to allow for Version 39 QR Codes (error correction levels L, M, Q, H)

B4X:
    versions.Add(CreateVersionData(39, "39L", Generator30, L0,  2812 * 8, 2809, Array As Int(6, 26, 54, 82, 110, 138, 166),  20,   4, 117, 118, Array As Byte(1,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1)))
    versions.Add(CreateVersionData(39, "39M", Generator28, M0 , 2216 * 8, 2213, Array As Int(6, 26, 54, 82, 110, 138, 166),  40,   7,  47,  48, Array As Byte(1,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1)))
    versions.Add(CreateVersionData(39, "39Q", Generator30, Q0 , 1582 * 8, 1579, Array As Int(6, 26, 54, 82, 110, 138, 166),  43,  22,  24,  25, Array As Byte(1,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1)))
    versions.Add(CreateVersionData(39, "39H", Generator30, H0 , 1222 * 8, 1219, Array As Int(6, 26, 54, 82, 110, 138, 166),  10,  67,  15,  16, Array As Byte(1,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1)))

1587919491020.png


Done with this for now unless someone has a requirement for a QR Code version other than what is in the project at present.

Enjoy! šŸ‡æšŸ‡¦
 

Attachments

  • QRGenerator.zip
    7.5 KB · Views: 397

Johan Schoeman

Expert
Licensed User
Longtime User
My final update for this - it will do QR Codes for:
1. Version 1 to 20 (ECC Levels L, M, Q, H)
2. Version 23 (ECC Levels L, M, Q, H)
3. Version 39 (ECC Levels L, M, Q, H)
4. Version 40 (ECC Levels L, M, Q, H)

There should hardly ever be a need to have a QR Code larger than Version 20. Most scanners support somewhere between Versions 10 and 20.

B4X:
Public Sub Initialize (BitmapSize As Int)
    TempBB.Initialize
    mBitmapSize = BitmapSize
    PrepareTables
    versions.Initialize
    'format information for masking pattern 0
    Dim L0() As Byte = Array As Byte(1,1,1,0,1,1,1,1,1,0,0,0,1,0,0)     'ECC Level L
    Dim M0() As Byte = Array As Byte(1,0,1,0,1,0,0,0,0,0,1,0,0,1,0)     'ECC Level M
    Dim Q0() As Byte = Array As Byte(0,1,1,0,1,0,1,0,1,0,1,1,1,1,1)     'ECC Level Q
    Dim H0() As Byte = Array As Byte(0,0,1,0,1,1,0,1,0,0,0,1,0,0,1)     'ECC Level H
    
    versions.Add(CreateVersionData(1, "1L", Generator7,  L0, 19 * 8, 17, Array As Int(), 1, 0, 19, 0, Null))
    versions.Add(CreateVersionData(1, "1M", Generator10, M0, 16 * 8, 14, Array As Int(), 1, 0, 16, 0, Null))
    versions.Add(CreateVersionData(1, "1Q", Generator13, Q0, 13 * 8, 11, Array As Int(), 1, 0, 13, 0, Null))
    versions.Add(CreateVersionData(1, "1H", Generator17, H0,  9 * 8,  7, Array As Int(), 1, 0,  9, 0, Null))
    
    versions.Add(CreateVersionData(2, "2L", Generator10, L0, 34 * 8, 32, Array As Int(6, 18), 1, 0, 34, 0, Null))
    versions.Add(CreateVersionData(2, "2M", Generator16, M0, 28 * 8, 26, Array As Int(6, 18), 1, 0, 28, 0, Null))
    versions.Add(CreateVersionData(2, "2Q", Generator22, Q0, 22 * 8, 20, Array As Int(6, 18), 1, 0, 22, 0, Null))
    versions.Add(CreateVersionData(2, "2H", Generator28, H0, 16 * 8, 14, Array As Int(6, 18), 1, 0, 16, 0, Null))

    versions.Add(CreateVersionData(3, "3L", Generator15, L0, 55 * 8, 53, Array As Int(6, 22), 1, 0, 55, 0, Null))
    versions.Add(CreateVersionData(3, "3M", Generator26, M0, 44 * 8, 42, Array As Int(6, 22), 1, 0, 44, 0, Null))
    versions.Add(CreateVersionData(3, "3Q", Generator18, Q0, 34 * 8, 32, Array As Int(6, 22), 2, 0, 17, 0, Null))
    versions.Add(CreateVersionData(3, "3H", Generator22, H0, 26 * 8, 24, Array As Int(6, 22), 2, 0, 13, 0, Null))
    
    versions.Add(CreateVersionData(4, "4L", Generator20, L0 , 80 * 8, 78, Array As Int(6, 26), 1, 0, 80, 0, Null))
    versions.Add(CreateVersionData(4, "4M", Generator18, M0 , 64 * 8, 62, Array As Int(6, 26), 2, 0, 32, 0, Null))
    versions.Add(CreateVersionData(4, "4Q", Generator26, Q0 , 48 * 8, 46, Array As Int(6, 26), 2, 0, 24, 0, Null))
    versions.Add(CreateVersionData(4, "4H", Generator16, H0 , 36 * 8, 34, Array As Int(6, 26), 4, 0,  9, 0, Null))
    
    versions.Add(CreateVersionData(5, "5L", Generator26, L0 , 108 * 8, 106, Array As Int(6, 30), 1, 0, 108,  0, Null))
    versions.Add(CreateVersionData(5, "5M", Generator24, M0 ,  86 * 8,  84, Array As Int(6, 30), 2, 0,  43,  0, Null))
    versions.Add(CreateVersionData(5, "5Q", Generator18, Q0 ,  62 * 8,  60, Array As Int(6, 30), 2, 2,  15, 16, Null))
    versions.Add(CreateVersionData(5, "5H", Generator22, H0 ,  46 * 8,  44, Array As Int(6, 30), 2, 2,  11, 12, Null))

    versions.Add(CreateVersionData(6, "6L", Generator18, L0 , 136 * 8, 134, Array As Int(6, 34), 2, 0, 68, 0, Null))
    versions.Add(CreateVersionData(6, "6M", Generator16, M0 , 108 * 8, 106, Array As Int(6, 34), 4, 0, 27, 0, Null))
    versions.Add(CreateVersionData(6, "6Q", Generator24, Q0 ,  76 * 8,  74, Array As Int(6, 34), 4, 0, 19, 0, Null))
    versions.Add(CreateVersionData(6, "6H", Generator28, H0 ,  60 * 8,  58, Array As Int(6, 34), 4, 0, 15, 0, Null))
    
    versions.Add(CreateVersionData(7, "7L", Generator20, L0 , 156 * 8, 154, Array As Int(6, 22, 38), 2, 0, 78,  0, Array As Byte(0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0)))
    versions.Add(CreateVersionData(7, "7M", Generator18, M0 , 124 * 8, 122, Array As Int(6, 22, 38), 4, 0, 31,  0, Array As Byte(0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0)))
    versions.Add(CreateVersionData(7, "7Q", Generator18, Q0 ,  88 * 8,  86, Array As Int(6, 22, 38), 2, 4, 14, 15, Array As Byte(0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0)))
    versions.Add(CreateVersionData(7, "7H", Generator26, H0 ,  66 * 8,  64, Array As Int(6, 22, 38), 4, 1, 13, 14, Array As Byte(0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0)))
    
    versions.Add(CreateVersionData(8, "8L", Generator24, L0 , 194 * 8, 192, Array As Int(6, 24, 42), 2, 0, 97,  0, Array As Byte(0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0)))
    versions.Add(CreateVersionData(8, "8M", Generator22, M0 , 154 * 8, 152, Array As Int(6, 24, 42), 2, 2, 38, 39, Array As Byte(0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0)))
    versions.Add(CreateVersionData(8, "8Q", Generator22, Q0 , 110 * 8, 108, Array As Int(6, 24, 42), 4, 2, 18, 19, Array As Byte(0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0)))
    versions.Add(CreateVersionData(8, "8H", Generator26, H0 ,  86 * 8,  84, Array As Int(6, 24, 42), 4, 2, 14, 15, Array As Byte(0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0)))
        
    versions.Add(CreateVersionData(9, "9L", Generator30, L0,  232 * 8, 230, Array As Int(6, 26, 46), 2, 0, 116, 0, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
    versions.Add(CreateVersionData(9, "9M", Generator22, M0 , 182 * 8, 180, Array As Int(6, 26, 46), 3, 2, 36, 37, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
    versions.Add(CreateVersionData(9, "9Q", Generator20, Q0 , 132 * 8, 130, Array As Int(6, 26, 46), 4, 4, 16, 17, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
    versions.Add(CreateVersionData(9, "9H", Generator24, H0 , 100 * 8,  98, Array As Int(6, 26, 46), 4, 4, 12, 13, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
    
    versions.Add(CreateVersionData(10, "10L", Generator18, L0,  274 * 8, 271, Array As Int(6, 28, 50), 2, 2, 68, 69, Array As Byte(0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1)))
    versions.Add(CreateVersionData(10, "10M", Generator26, M0 , 216 * 8, 213, Array As Int(6, 28, 50), 4, 1, 43, 44, Array As Byte(0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1)))
    versions.Add(CreateVersionData(10, "10Q", Generator24, Q0 , 154 * 8, 151, Array As Int(6, 28, 50), 6, 2, 19, 20, Array As Byte(0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1)))
    versions.Add(CreateVersionData(10, "10H", Generator28, H0 , 122 * 8, 119, Array As Int(6, 28, 50), 6, 2, 15, 16, Array As Byte(0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1)))

    versions.Add(CreateVersionData(11, "11L", Generator20, L0,  324 * 8, 321, Array As Int(6, 30, 54), 4, 0, 81,  0, Array As Byte(0,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0)))
    versions.Add(CreateVersionData(11, "11M", Generator30, M0 , 254 * 8, 251, Array As Int(6, 30, 54), 1, 4, 50, 51, Array As Byte(0,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0)))
    versions.Add(CreateVersionData(11, "11Q", Generator28, Q0 , 180 * 8, 177, Array As Int(6, 30, 54), 4, 4, 22, 23, Array As Byte(0,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0)))
    versions.Add(CreateVersionData(11, "11H", Generator24, H0 , 140 * 8, 137, Array As Int(6, 30, 54), 3, 8, 12, 13, Array As Byte(0,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0)))

    versions.Add(CreateVersionData(12, "12L", Generator24, L0,  370 * 8, 367, Array As Int(6, 32, 58), 2, 2, 92, 93, Array As Byte(0,0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0)))
    versions.Add(CreateVersionData(12, "12M", Generator22, M0 , 290 * 8, 287, Array As Int(6, 32, 58), 6, 2, 36, 37, Array As Byte(0,0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0)))
    versions.Add(CreateVersionData(12, "12Q", Generator26, Q0 , 206 * 8, 203, Array As Int(6, 32, 58), 4, 6, 20, 21, Array As Byte(0,0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0)))
    versions.Add(CreateVersionData(12, "12H", Generator28, H0 , 158 * 8, 155, Array As Int(6, 32, 58), 7, 4, 14, 15, Array As Byte(0,0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0)))

    versions.Add(CreateVersionData(13, "13L", Generator26, L0,  428 * 8, 425, Array As Int(6, 34, 62),  4, 0, 107, 0, Array As Byte(0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1)))
    versions.Add(CreateVersionData(13, "13M", Generator22, M0 , 334 * 8, 331, Array As Int(6, 34, 62),  8, 1, 37, 38, Array As Byte(0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1)))
    versions.Add(CreateVersionData(13, "13Q", Generator24, Q0 , 244 * 8, 241, Array As Int(6, 34, 62),  8, 4, 20, 21, Array As Byte(0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1)))
    versions.Add(CreateVersionData(13, "13H", Generator22, H0 , 180 * 8, 177, Array As Int(6, 34, 62), 12, 4, 11, 12, Array As Byte(0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1)))

    versions.Add(CreateVersionData(14, "14L", Generator30, L0,  461 * 8, 458, Array As Int(6, 26, 46, 66),  3, 1, 115, 116, Array As Byte(0,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1)))
    versions.Add(CreateVersionData(14, "14M", Generator24, M0 , 365 * 8, 362, Array As Int(6, 26, 46, 66),  4, 5,  40,  41, Array As Byte(0,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1)))
    versions.Add(CreateVersionData(14, "14Q", Generator20, Q0 , 261 * 8, 258, Array As Int(6, 26, 46, 66), 11, 5,  16,  17, Array As Byte(0,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1)))
    versions.Add(CreateVersionData(14, "14H", Generator24, H0 , 197 * 8, 194, Array As Int(6, 26, 46, 66), 11, 5,  12,  13, Array As Byte(0,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1)))

    versions.Add(CreateVersionData(15, "15L", Generator22, L0,  523 * 8, 520, Array As Int(6, 26, 48, 70),  5, 1, 87, 88, Array As Byte(0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0)))
    versions.Add(CreateVersionData(15, "15M", Generator24, M0 , 415 * 8, 412, Array As Int(6, 26, 48, 70),  5, 5, 41, 42, Array As Byte(0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0)))
    versions.Add(CreateVersionData(15, "15Q", Generator30, Q0 , 295 * 8, 292, Array As Int(6, 26, 48, 70),  5, 7, 24, 25, Array As Byte(0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0)))
    versions.Add(CreateVersionData(15, "15H", Generator24, H0 , 223 * 8, 220, Array As Int(6, 26, 48, 70), 11, 7, 12, 13, Array As Byte(0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0)))

    versions.Add(CreateVersionData(16, "16L", Generator24, L0,  589 * 8, 586, Array As Int(6, 26, 50, 74),  5,  1, 98, 99, Array As Byte(0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0)))
    versions.Add(CreateVersionData(16, "16M", Generator28, M0 , 453 * 8, 450, Array As Int(6, 26, 50, 74),  7,  3, 45, 46, Array As Byte(0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0)))
    versions.Add(CreateVersionData(16, "16Q", Generator24, Q0 , 325 * 8, 322, Array As Int(6, 26, 50, 74), 15,  2, 19, 20, Array As Byte(0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0)))
    versions.Add(CreateVersionData(16, "16H", Generator30, H0 , 253 * 8, 250, Array As Int(6, 26, 50, 74),  3, 13, 15, 16, Array As Byte(0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0)))
    
    versions.Add(CreateVersionData(17, "17L", Generator28, L0,  647 * 8, 644, Array As Int(6, 30, 54, 78),   1,  5, 107, 108, Array As Byte(0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,1)))
    versions.Add(CreateVersionData(17, "17M", Generator28, M0 , 507 * 8, 504, Array As Int(6, 30, 54, 78),  10,  1,  46,  47, Array As Byte(0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,1)))
    versions.Add(CreateVersionData(17, "17Q", Generator28, Q0 , 367 * 8, 364, Array As Int(6, 30, 54, 78),   1, 15,  22,  23, Array As Byte(0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,1)))
    versions.Add(CreateVersionData(17, "17H", Generator28, H0 , 283 * 8, 280, Array As Int(6, 30, 54, 78),   2, 17,  14,  15, Array As Byte(0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,1)))

    versions.Add(CreateVersionData(18, "18L", Generator30, L0,  721 * 8, 718, Array As Int(6, 30, 56, 82),   5,  1, 120, 121, Array As Byte(0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1)))
    versions.Add(CreateVersionData(18, "18M", Generator26, M0 , 563 * 8, 560, Array As Int(6, 30, 56, 82),   9,  4,  43,  44, Array As Byte(0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1)))
    versions.Add(CreateVersionData(18, "18Q", Generator28, Q0 , 397 * 8, 394, Array As Int(6, 30, 56, 82),  17,  1,  22,  23, Array As Byte(0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1)))
    versions.Add(CreateVersionData(18, "18H", Generator28, H0 , 313 * 8, 310, Array As Int(6, 30, 56, 82),   2, 19,  14,  15, Array As Byte(0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1)))

    versions.Add(CreateVersionData(19, "19L", Generator28, L0,  795 * 8, 792, Array As Int(6, 30, 58, 86),  3,  4, 113, 114, Array As Byte(0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0)))
    versions.Add(CreateVersionData(19, "19M", Generator26, M0 , 627 * 8, 624, Array As Int(6, 30, 58, 86),  3, 11,  44,  45, Array As Byte(0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0)))
    versions.Add(CreateVersionData(19, "19Q", Generator26, Q0 , 445 * 8, 442, Array As Int(6, 30, 58, 86), 17,  4,  21,  22, Array As Byte(0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0)))
    versions.Add(CreateVersionData(19, "19H", Generator26, H0 , 341 * 8, 338, Array As Int(6, 30, 58, 86),  9, 16,  13,  14, Array As Byte(0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0)))

    versions.Add(CreateVersionData(20, "20L", Generator28, L0,  861 * 8, 858, Array As Int(6, 34, 62, 90),  3,  5, 107, 108, Array As Byte(0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0)))
    versions.Add(CreateVersionData(20, "20M", Generator26, M0 , 669 * 8, 666, Array As Int(6, 34, 62, 90),  3, 13,  41,  42, Array As Byte(0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0)))
    versions.Add(CreateVersionData(20, "20Q", Generator30, Q0 , 485 * 8, 482, Array As Int(6, 34, 62, 90), 15,  5,  24,  25, Array As Byte(0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0)))
    versions.Add(CreateVersionData(20, "20H", Generator28, H0 , 385 * 8, 382, Array As Int(6, 34, 62, 90), 15, 10,  15,  16, Array As Byte(0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0)))

    versions.Add(CreateVersionData(23, "23L", Generator30, L0, 1094 * 8, 1091, Array As Int(6, 30, 54, 78, 102), 4, 5, 121, 122, _
        Array As Byte(0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0)))
    versions.Add(CreateVersionData(23, "23M", Generator28, M0, 860 * 8, 857, Array As Int(6, 30, 54, 78, 102), 4, 14, 47, 48, _
        Array As Byte(0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0)))   
    versions.Add(CreateVersionData(23, "23Q", Generator30, Q0, 614 * 8, 611, Array As Int(6, 30, 54, 78, 102), 11, 14, 24, 25, _
        Array As Byte(0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0)))
    versions.Add(CreateVersionData(23, "23H", Generator30, H0, 464 * 8, 461, Array As Int(6, 30, 54, 78, 102), 16, 14, 15, 16, _
        Array As Byte(0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0)))

    versions.Add(CreateVersionData(39, "39L", Generator30, L0,  2812 * 8, 2809, Array As Int(6, 26, 54, 82, 110, 138, 166),  20,   4, 117, 118, Array As Byte(1,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1)))
    versions.Add(CreateVersionData(39, "39M", Generator28, M0 , 2216 * 8, 2213, Array As Int(6, 26, 54, 82, 110, 138, 166),  40,   7,  47,  48, Array As Byte(1,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1)))
    versions.Add(CreateVersionData(39, "39Q", Generator30, Q0 , 1582 * 8, 1579, Array As Int(6, 26, 54, 82, 110, 138, 166),  43,  22,  24,  25, Array As Byte(1,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1)))
    versions.Add(CreateVersionData(39, "39H", Generator30, H0 , 1222 * 8, 1219, Array As Int(6, 26, 54, 82, 110, 138, 166),  10,  67,  15,  16, Array As Byte(1,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1)))

    versions.Add(CreateVersionData(40, "40L", Generator30, L0, 2956 * 8, 2953, Array As Int(6, 30, 58, 86, 114, 142, 170), 19, 6, 118, 119, _
        Array As Byte(1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1)))
    versions.Add(CreateVersionData(40, "40M", Generator28, M0, 2334 * 8, 2331, Array As Int(6, 30, 58, 86, 114, 142, 170), 18, 31, 47, 48, _
        Array As Byte(1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1)))
    versions.Add(CreateVersionData(40, "40Q", Generator30, Q0, 1666 * 8, 1663, Array As Int(6, 30, 58, 86, 114, 142, 170), 34, 34, 24, 25, _
        Array As Byte(1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1)))
    versions.Add(CreateVersionData(40, "40H", Generator30, H0, 1276 * 8, 1273, Array As Int(6, 30, 58, 86, 114, 142, 170), 20, 61, 15, 16, _
        Array As Byte(1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1)))
    
        
End Sub
 

Attachments

  • QRGenerator27042020.zip
    8.3 KB · Views: 516
Last edited:

Johan Schoeman

Expert
Licensed User
Longtime User

Johan Schoeman

Expert
Licensed User
Longtime User
The attached project makes provision for generating the following QR Codes:
1. Version 1 LOW to Version 30 HIGH (L, M, Q H for each version)
2. Version 35 LOW (LOW only)
3. Version 39 LOW, MEDIUM, QUALITY, HIGH
4. Version 40 LOW, MEDIUM, QUALITY, HIGH


B4X:
Public Sub Initialize (BitmapSize As Int)
    TempBB.Initialize
    mBitmapSize = BitmapSize
    PrepareTables
    versions.Initialize
    'format information for masking pattern 0
    Dim L0() As Byte = Array As Byte(1,1,1,0,1,1,1,1,1,0,0,0,1,0,0)     'ECC Level L
    Dim M0() As Byte = Array As Byte(1,0,1,0,1,0,0,0,0,0,1,0,0,1,0)     'ECC Level M
    Dim Q0() As Byte = Array As Byte(0,1,1,0,1,0,1,0,1,0,1,1,1,1,1)     'ECC Level Q
    Dim H0() As Byte = Array As Byte(0,0,1,0,1,1,0,1,0,0,0,1,0,0,1)     'ECC Level H
  
    versions.Add(CreateVersionData(1, "1L", Generator7,  L0, 19 * 8, 17, Array As Int(), 1, 0, 19, 0, Null))
    versions.Add(CreateVersionData(1, "1M", Generator10, M0, 16 * 8, 14, Array As Int(), 1, 0, 16, 0, Null))
    versions.Add(CreateVersionData(1, "1Q", Generator13, Q0, 13 * 8, 11, Array As Int(), 1, 0, 13, 0, Null))
    versions.Add(CreateVersionData(1, "1H", Generator17, H0,  9 * 8,  7, Array As Int(), 1, 0,  9, 0, Null))
  
    versions.Add(CreateVersionData(2, "2L", Generator10, L0, 34 * 8, 32, Array As Int(6, 18), 1, 0, 34, 0, Null))
    versions.Add(CreateVersionData(2, "2M", Generator16, M0, 28 * 8, 26, Array As Int(6, 18), 1, 0, 28, 0, Null))
    versions.Add(CreateVersionData(2, "2Q", Generator22, Q0, 22 * 8, 20, Array As Int(6, 18), 1, 0, 22, 0, Null))
    versions.Add(CreateVersionData(2, "2H", Generator28, H0, 16 * 8, 14, Array As Int(6, 18), 1, 0, 16, 0, Null))

    versions.Add(CreateVersionData(3, "3L", Generator15, L0, 55 * 8, 53, Array As Int(6, 22), 1, 0, 55, 0, Null))
    versions.Add(CreateVersionData(3, "3M", Generator26, M0, 44 * 8, 42, Array As Int(6, 22), 1, 0, 44, 0, Null))
    versions.Add(CreateVersionData(3, "3Q", Generator18, Q0, 34 * 8, 32, Array As Int(6, 22), 2, 0, 17, 0, Null))
    versions.Add(CreateVersionData(3, "3H", Generator22, H0, 26 * 8, 24, Array As Int(6, 22), 2, 0, 13, 0, Null))
  
    versions.Add(CreateVersionData(4, "4L", Generator20, L0 , 80 * 8, 78, Array As Int(6, 26), 1, 0, 80, 0, Null))
    versions.Add(CreateVersionData(4, "4M", Generator18, M0 , 64 * 8, 62, Array As Int(6, 26), 2, 0, 32, 0, Null))
    versions.Add(CreateVersionData(4, "4Q", Generator26, Q0 , 48 * 8, 46, Array As Int(6, 26), 2, 0, 24, 0, Null))
    versions.Add(CreateVersionData(4, "4H", Generator16, H0 , 36 * 8, 34, Array As Int(6, 26), 4, 0,  9, 0, Null))
  
    versions.Add(CreateVersionData(5, "5L", Generator26, L0 , 108 * 8, 106, Array As Int(6, 30), 1, 0, 108,  0, Null))
    versions.Add(CreateVersionData(5, "5M", Generator24, M0 ,  86 * 8,  84, Array As Int(6, 30), 2, 0,  43,  0, Null))
    versions.Add(CreateVersionData(5, "5Q", Generator18, Q0 ,  62 * 8,  60, Array As Int(6, 30), 2, 2,  15, 16, Null))
    versions.Add(CreateVersionData(5, "5H", Generator22, H0 ,  46 * 8,  44, Array As Int(6, 30), 2, 2,  11, 12, Null))

    versions.Add(CreateVersionData(6, "6L", Generator18, L0 , 136 * 8, 134, Array As Int(6, 34), 2, 0, 68, 0, Null))
    versions.Add(CreateVersionData(6, "6M", Generator16, M0 , 108 * 8, 106, Array As Int(6, 34), 4, 0, 27, 0, Null))
    versions.Add(CreateVersionData(6, "6Q", Generator24, Q0 ,  76 * 8,  74, Array As Int(6, 34), 4, 0, 19, 0, Null))
    versions.Add(CreateVersionData(6, "6H", Generator28, H0 ,  60 * 8,  58, Array As Int(6, 34), 4, 0, 15, 0, Null))
  
    versions.Add(CreateVersionData(7, "7L", Generator20, L0 , 156 * 8, 154, Array As Int(6, 22, 38), 2, 0, 78,  0, Array As Byte(0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0)))
    versions.Add(CreateVersionData(7, "7M", Generator18, M0 , 124 * 8, 122, Array As Int(6, 22, 38), 4, 0, 31,  0, Array As Byte(0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0)))
    versions.Add(CreateVersionData(7, "7Q", Generator18, Q0 ,  88 * 8,  86, Array As Int(6, 22, 38), 2, 4, 14, 15, Array As Byte(0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0)))
    versions.Add(CreateVersionData(7, "7H", Generator26, H0 ,  66 * 8,  64, Array As Int(6, 22, 38), 4, 1, 13, 14, Array As Byte(0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0)))
  
    versions.Add(CreateVersionData(8, "8L", Generator24, L0 , 194 * 8, 192, Array As Int(6, 24, 42), 2, 0, 97,  0, Array As Byte(0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0)))
    versions.Add(CreateVersionData(8, "8M", Generator22, M0 , 154 * 8, 152, Array As Int(6, 24, 42), 2, 2, 38, 39, Array As Byte(0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0)))
    versions.Add(CreateVersionData(8, "8Q", Generator22, Q0 , 110 * 8, 108, Array As Int(6, 24, 42), 4, 2, 18, 19, Array As Byte(0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0)))
    versions.Add(CreateVersionData(8, "8H", Generator26, H0 ,  86 * 8,  84, Array As Int(6, 24, 42), 4, 2, 14, 15, Array As Byte(0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0)))
      
    versions.Add(CreateVersionData(9, "9L", Generator30, L0,  232 * 8, 230, Array As Int(6, 26, 46), 2, 0, 116, 0, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
    versions.Add(CreateVersionData(9, "9M", Generator22, M0 , 182 * 8, 180, Array As Int(6, 26, 46), 3, 2, 36, 37, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
    versions.Add(CreateVersionData(9, "9Q", Generator20, Q0 , 132 * 8, 130, Array As Int(6, 26, 46), 4, 4, 16, 17, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
    versions.Add(CreateVersionData(9, "9H", Generator24, H0 , 100 * 8,  98, Array As Int(6, 26, 46), 4, 4, 12, 13, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
  
    versions.Add(CreateVersionData(10, "10L", Generator18, L0,  274 * 8, 271, Array As Int(6, 28, 50), 2, 2, 68, 69, Array As Byte(0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1)))
    versions.Add(CreateVersionData(10, "10M", Generator26, M0 , 216 * 8, 213, Array As Int(6, 28, 50), 4, 1, 43, 44, Array As Byte(0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1)))
    versions.Add(CreateVersionData(10, "10Q", Generator24, Q0 , 154 * 8, 151, Array As Int(6, 28, 50), 6, 2, 19, 20, Array As Byte(0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1)))
    versions.Add(CreateVersionData(10, "10H", Generator28, H0 , 122 * 8, 119, Array As Int(6, 28, 50), 6, 2, 15, 16, Array As Byte(0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1)))

    versions.Add(CreateVersionData(11, "11L", Generator20, L0,  324 * 8, 321, Array As Int(6, 30, 54), 4, 0, 81,  0, Array As Byte(0,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0)))
    versions.Add(CreateVersionData(11, "11M", Generator30, M0 , 254 * 8, 251, Array As Int(6, 30, 54), 1, 4, 50, 51, Array As Byte(0,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0)))
    versions.Add(CreateVersionData(11, "11Q", Generator28, Q0 , 180 * 8, 177, Array As Int(6, 30, 54), 4, 4, 22, 23, Array As Byte(0,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0)))
    versions.Add(CreateVersionData(11, "11H", Generator24, H0 , 140 * 8, 137, Array As Int(6, 30, 54), 3, 8, 12, 13, Array As Byte(0,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0)))

    versions.Add(CreateVersionData(12, "12L", Generator24, L0,  370 * 8, 367, Array As Int(6, 32, 58), 2, 2, 92, 93, Array As Byte(0,0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0)))
    versions.Add(CreateVersionData(12, "12M", Generator22, M0 , 290 * 8, 287, Array As Int(6, 32, 58), 6, 2, 36, 37, Array As Byte(0,0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0)))
    versions.Add(CreateVersionData(12, "12Q", Generator26, Q0 , 206 * 8, 203, Array As Int(6, 32, 58), 4, 6, 20, 21, Array As Byte(0,0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0)))
    versions.Add(CreateVersionData(12, "12H", Generator28, H0 , 158 * 8, 155, Array As Int(6, 32, 58), 7, 4, 14, 15, Array As Byte(0,0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0)))

    versions.Add(CreateVersionData(13, "13L", Generator26, L0,  428 * 8, 425, Array As Int(6, 34, 62),  4, 0, 107, 0, Array As Byte(0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1)))
    versions.Add(CreateVersionData(13, "13M", Generator22, M0 , 334 * 8, 331, Array As Int(6, 34, 62),  8, 1, 37, 38, Array As Byte(0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1)))
    versions.Add(CreateVersionData(13, "13Q", Generator24, Q0 , 244 * 8, 241, Array As Int(6, 34, 62),  8, 4, 20, 21, Array As Byte(0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1)))
    versions.Add(CreateVersionData(13, "13H", Generator22, H0 , 180 * 8, 177, Array As Int(6, 34, 62), 12, 4, 11, 12, Array As Byte(0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1)))

    versions.Add(CreateVersionData(14, "14L", Generator30, L0,  461 * 8, 458, Array As Int(6, 26, 46, 66),  3, 1, 115, 116, Array As Byte(0,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1)))
    versions.Add(CreateVersionData(14, "14M", Generator24, M0 , 365 * 8, 362, Array As Int(6, 26, 46, 66),  4, 5,  40,  41, Array As Byte(0,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1)))
    versions.Add(CreateVersionData(14, "14Q", Generator20, Q0 , 261 * 8, 258, Array As Int(6, 26, 46, 66), 11, 5,  16,  17, Array As Byte(0,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1)))
    versions.Add(CreateVersionData(14, "14H", Generator24, H0 , 197 * 8, 194, Array As Int(6, 26, 46, 66), 11, 5,  12,  13, Array As Byte(0,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1)))

    versions.Add(CreateVersionData(15, "15L", Generator22, L0,  523 * 8, 520, Array As Int(6, 26, 48, 70),  5, 1, 87, 88, Array As Byte(0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0)))
    versions.Add(CreateVersionData(15, "15M", Generator24, M0 , 415 * 8, 412, Array As Int(6, 26, 48, 70),  5, 5, 41, 42, Array As Byte(0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0)))
    versions.Add(CreateVersionData(15, "15Q", Generator30, Q0 , 295 * 8, 292, Array As Int(6, 26, 48, 70),  5, 7, 24, 25, Array As Byte(0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0)))
    versions.Add(CreateVersionData(15, "15H", Generator24, H0 , 223 * 8, 220, Array As Int(6, 26, 48, 70), 11, 7, 12, 13, Array As Byte(0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0)))

    versions.Add(CreateVersionData(16, "16L", Generator24, L0,  589 * 8, 586, Array As Int(6, 26, 50, 74),  5,  1, 98, 99, Array As Byte(0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0)))
    versions.Add(CreateVersionData(16, "16M", Generator28, M0 , 453 * 8, 450, Array As Int(6, 26, 50, 74),  7,  3, 45, 46, Array As Byte(0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0)))
    versions.Add(CreateVersionData(16, "16Q", Generator24, Q0 , 325 * 8, 322, Array As Int(6, 26, 50, 74), 15,  2, 19, 20, Array As Byte(0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0)))
    versions.Add(CreateVersionData(16, "16H", Generator30, H0 , 253 * 8, 250, Array As Int(6, 26, 50, 74),  3, 13, 15, 16, Array As Byte(0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0)))
  
    versions.Add(CreateVersionData(17, "17L", Generator28, L0,  647 * 8, 644, Array As Int(6, 30, 54, 78),   1,  5, 107, 108, Array As Byte(0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,1)))
    versions.Add(CreateVersionData(17, "17M", Generator28, M0 , 507 * 8, 504, Array As Int(6, 30, 54, 78),  10,  1,  46,  47, Array As Byte(0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,1)))
    versions.Add(CreateVersionData(17, "17Q", Generator28, Q0 , 367 * 8, 364, Array As Int(6, 30, 54, 78),   1, 15,  22,  23, Array As Byte(0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,1)))
    versions.Add(CreateVersionData(17, "17H", Generator28, H0 , 283 * 8, 280, Array As Int(6, 30, 54, 78),   2, 17,  14,  15, Array As Byte(0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,1)))

    versions.Add(CreateVersionData(18, "18L", Generator30, L0,  721 * 8, 718, Array As Int(6, 30, 56, 82),   5,  1, 120, 121, Array As Byte(0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1)))
    versions.Add(CreateVersionData(18, "18M", Generator26, M0 , 563 * 8, 560, Array As Int(6, 30, 56, 82),   9,  4,  43,  44, Array As Byte(0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1)))
    versions.Add(CreateVersionData(18, "18Q", Generator28, Q0 , 397 * 8, 394, Array As Int(6, 30, 56, 82),  17,  1,  22,  23, Array As Byte(0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1)))
    versions.Add(CreateVersionData(18, "18H", Generator28, H0 , 313 * 8, 310, Array As Int(6, 30, 56, 82),   2, 19,  14,  15, Array As Byte(0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1)))

    versions.Add(CreateVersionData(19, "19L", Generator28, L0,  795 * 8, 792, Array As Int(6, 30, 58, 86),  3,  4, 113, 114, Array As Byte(0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0)))
    versions.Add(CreateVersionData(19, "19M", Generator26, M0 , 627 * 8, 624, Array As Int(6, 30, 58, 86),  3, 11,  44,  45, Array As Byte(0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0)))
    versions.Add(CreateVersionData(19, "19Q", Generator26, Q0 , 445 * 8, 442, Array As Int(6, 30, 58, 86), 17,  4,  21,  22, Array As Byte(0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0)))
    versions.Add(CreateVersionData(19, "19H", Generator26, H0 , 341 * 8, 338, Array As Int(6, 30, 58, 86),  9, 16,  13,  14, Array As Byte(0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0)))

    versions.Add(CreateVersionData(20, "20L", Generator28, L0,  861 * 8, 858, Array As Int(6, 34, 62, 90),  3,  5, 107, 108, Array As Byte(0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0)))
    versions.Add(CreateVersionData(20, "20M", Generator26, M0 , 669 * 8, 666, Array As Int(6, 34, 62, 90),  3, 13,  41,  42, Array As Byte(0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0)))
    versions.Add(CreateVersionData(20, "20Q", Generator30, Q0 , 485 * 8, 482, Array As Int(6, 34, 62, 90), 15,  5,  24,  25, Array As Byte(0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0)))
    versions.Add(CreateVersionData(20, "20H", Generator28, H0 , 385 * 8, 382, Array As Int(6, 34, 62, 90), 15, 10,  15,  16, Array As Byte(0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0)))

    versions.Add(CreateVersionData(21, "21L", Generator28, L0,  932 * 8, 929, Array As Int(6, 28, 50, 72, 94),  4,  4, 116, 117, Array As Byte(0,1,0,1,0,1,0,1,1,0,1,0,0,0,0,0,1,1)))
    versions.Add(CreateVersionData(21, "21M", Generator26, M0 , 714 * 8, 711, Array As Int(6, 28, 50, 72, 94),  17, 0,  42,  0, Array As Byte(0,1,0,1,0,1,0,1,1,0,1,0,0,0,0,0,1,1)))
    versions.Add(CreateVersionData(21, "21Q", Generator28, Q0 , 512 * 8, 509, Array As Int(6, 28, 50, 72, 94), 17,  6,  22,  23, Array As Byte(0,1,0,1,0,1,0,1,1,0,1,0,0,0,0,0,1,1)))
    versions.Add(CreateVersionData(21, "21H", Generator30, H0 , 406 * 8, 403, Array As Int(6, 28, 50, 72, 94), 19, 6,  16,  17, Array As Byte(0,1,0,1,0,1,0,1,1,0,1,0,0,0,0,0,1,1)))

    versions.Add(CreateVersionData(22, "22L", Generator28, L0,  1006 * 8, 1003, Array As Int(6, 26, 50, 74, 98),  2,  7, 111, 112, Array As Byte(0,1,0,1,1,0,1,0,0,0,1,1,0,0,1,0,0,1)))
    versions.Add(CreateVersionData(22, "22M", Generator28, M0 , 782 * 8, 779, Array As Int(6, 26, 50, 74, 98),  17, 0,  46,  0, Array As Byte(0,1,0,1,1,0,1,0,0,0,1,1,0,0,1,0,0,1)))
    versions.Add(CreateVersionData(22, "22Q", Generator30, Q0 , 568 * 8, 565, Array As Int(6, 26, 50, 74, 98), 7,  16,  24,  25, Array As Byte(0,1,0,1,1,0,1,0,0,0,1,1,0,0,1,0,0,1)))
    versions.Add(CreateVersionData(22, "22H", Generator24, H0 , 442 * 8, 439, Array As Int(6, 26, 50, 74, 98), 34, 0,  13, 0, Array As Byte(0,1,0,1,1,0,1,0,0,0,1,1,0,0,1,0,0,1)))

    versions.Add(CreateVersionData(23, "23L", Generator30, L0, 1094 * 8, 1091, Array As Int(6, 30, 54, 78, 102), 4, 5, 121, 122, _
        Array As Byte(0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0)))
    versions.Add(CreateVersionData(23, "23M", Generator28, M0, 860 * 8, 857, Array As Int(6, 30, 54, 78, 102), 4, 14, 47, 48, _
        Array As Byte(0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0))) 
    versions.Add(CreateVersionData(23, "23Q", Generator30, Q0, 614 * 8, 611, Array As Int(6, 30, 54, 78, 102), 11, 14, 24, 25, _
        Array As Byte(0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0)))
    versions.Add(CreateVersionData(23, "23H", Generator30, H0, 464 * 8, 461, Array As Int(6, 30, 54, 78, 102), 16, 14, 15, 16, _
        Array As Byte(0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0)))

    versions.Add(CreateVersionData(24, "24L", Generator30, L0, 1174 * 8, 1171, Array As Int(6, 28, 54, 80,106), 6, 4, 117, 118, _
        Array As Byte(0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0,0)))
    versions.Add(CreateVersionData(24, "24M", Generator28, M0, 914 * 8, 911, Array As Int(6, 28, 54, 80,106), 6, 14, 45, 46, _
        Array As Byte(0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0,0))) 
    versions.Add(CreateVersionData(24, "24Q", Generator30, Q0, 664 * 8, 661, Array As Int(6, 28, 54, 80,106), 11, 16, 24, 25, _
        Array As Byte(0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0,0)))
    versions.Add(CreateVersionData(24, "24H", Generator30, H0, 514 * 8, 511, Array As Int(6, 28, 54, 80,106), 30, 2, 16, 17, _
        Array As Byte(0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0,0)))
  
    versions.Add(CreateVersionData(25, "25L", Generator26, L0, 1276 * 8, 1273, Array As Int(6, 32, 58, 84, 110), 8, 4, 106, 107, _
        Array As Byte(0,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,1)))
    versions.Add(CreateVersionData(25, "25M", Generator28, M0, 1000 * 8, 997, Array As Int(6, 32, 58, 84, 110), 8, 13, 47, 48, _
        Array As Byte(0,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,1))) 
    versions.Add(CreateVersionData(25, "25Q", Generator30, Q0, 718 * 8, 715, Array As Int(6, 32, 58, 84, 110), 7, 22, 24, 25, _
        Array As Byte(0,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,1)))
    versions.Add(CreateVersionData(25, "25H", Generator30, H0, 538 * 8, 535, Array As Int(6, 32, 58, 84, 110), 22, 13, 15, 16, _
        Array As Byte(0,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,1)))
  

    versions.Add(CreateVersionData(26, "26L", Generator28, L0, 1370 * 8, 1367, Array As Int(6, 30, 58, 86, 114), 10, 2, 114, 115, _
        Array As Byte(0,1,1,0,1,0,1,1,1,1,1,0,1,0,1,0,1,1)))
    versions.Add(CreateVersionData(26, "26M", Generator28, M0, 1062 * 8, 1059, Array As Int(6, 30, 58, 86, 114), 19, 4, 46, 47, _
        Array As Byte(0,1,1,0,1,0,1,1,1,1,1,0,1,0,1,0,1,1))) 
    versions.Add(CreateVersionData(26, "26Q", Generator28, Q0, 754 * 8, 751, Array As Int(6, 30, 58, 86, 114), 28, 6, 22, 23, _
        Array As Byte(0,1,1,0,1,0,1,1,1,1,1,0,1,0,1,0,1,1)))
    versions.Add(CreateVersionData(26, "26H", Generator30, H0, 596 * 8, 593, Array As Int(6, 30, 58, 86, 114), 33, 4, 16, 17, _
        Array As Byte(0,1,1,0,1,0,1,1,1,1,1,0,1,0,1,0,1,1)))


    versions.Add(CreateVersionData(27, "27L", Generator30, L0, 1468 * 8, 1465, Array As Int(6, 34, 62, 90, 118), 8, 4, 122, 123, _
        Array As Byte(0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1,0)))
    versions.Add(CreateVersionData(27, "27M", Generator28, M0, 1128 * 8, 1125, Array As Int(6, 34, 62, 90, 118), 22, 3, 45, 46, _
        Array As Byte(0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1,0))) 
    versions.Add(CreateVersionData(27, "27Q", Generator30, Q0, 808 * 8, 805, Array As Int(6, 34, 62, 90, 118), 8, 26, 23, 24, _
        Array As Byte(0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1,0)))
    versions.Add(CreateVersionData(27, "27H", Generator30, H0, 628 * 8, 625, Array As Int(6, 34, 62, 90, 118), 12, 28, 15, 16, _
        Array As Byte(0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1,0)))

    versions.Add(CreateVersionData(28, "28L", Generator30, L0, 1531 * 8, 1528, Array As Int(6, 26, 50, 74, 98, 122), 3, 10, 117, 118, _
        Array As Byte(0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0)))
    versions.Add(CreateVersionData(28, "28M", Generator28, M0, 1193 * 8, 1190, Array As Int(6, 26, 50, 74, 98, 122), 3, 23, 45, 46, _
        Array As Byte(0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0))) 
    versions.Add(CreateVersionData(28, "28Q", Generator30, Q0, 871 * 8, 868, Array As Int(6, 26, 50, 74, 98, 122), 4, 31, 24, 25, _
        Array As Byte(0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0)))
    versions.Add(CreateVersionData(28, "28H", Generator30, H0, 661 * 8, 658, Array As Int(6, 26, 50, 74, 98, 122), 11, 31, 15, 16, _
        Array As Byte(0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0)))

    versions.Add(CreateVersionData(29, "29L", Generator30, L0, 1631 * 8, 1628, Array As Int(6, 30, 54, 78, 102, 126), 7, 7, 116, 117, _
        Array As Byte(0,1,1,1,0,1,0,0,1,1,0,0,1,1,1,1,1,1)))
    versions.Add(CreateVersionData(29, "29M", Generator28, M0, 1267 * 8, 1264, Array As Int(6, 30, 54, 78, 102, 126), 21, 7, 45, 46, _
        Array As Byte(0,1,1,1,0,1,0,0,1,1,0,0,1,1,1,1,1,1))) 
    versions.Add(CreateVersionData(29, "29Q", Generator30, Q0, 911 * 8, 908, Array As Int(6, 30, 54, 78, 102, 126), 1, 37, 23, 24, _
        Array As Byte(0,1,1,1,0,1,0,0,1,1,0,0,1,1,1,1,1,1)))
    versions.Add(CreateVersionData(29, "29H", Generator30, H0, 701 * 8, 698, Array As Int(6, 30, 54, 78, 102, 126), 19, 26, 15, 16, _
        Array As Byte(0,1,1,1,0,1,0,0,1,1,0,0,1,1,1,1,1,1)))

    versions.Add(CreateVersionData(30, "30L", Generator30, L0, 1735 * 8, 1732, Array As Int(6, 26, 52, 78, 104, 130), 5, 10, 115, 116, _
        Array As Byte(0,1,1,1,1,0,1,1,0,1,0,1,1,1,0,1,0,1)))
    versions.Add(CreateVersionData(30, "30M", Generator28, M0, 1373 * 8, 1370, Array As Int(6, 26, 52, 78, 104, 130), 19, 10, 47, 48, _
        Array As Byte(0,1,1,1,1,0,1,1,0,1,0,1,1,1,0,1,0,1))) 
    versions.Add(CreateVersionData(30, "30Q", Generator30, Q0, 985 * 8, 982, Array As Int(6, 26, 52, 78, 104, 130), 15, 25, 24, 25, _
        Array As Byte(0,1,1,1,1,0,1,1,0,1,0,1,1,1,0,1,0,1)))
    versions.Add(CreateVersionData(30, "30H", Generator30, H0, 745 * 8, 742, Array As Int(6, 26, 52, 78, 104, 130), 23, 25, 15, 16, _
        Array As Byte(0,1,1,1,1,0,1,1,0,1,0,1,1,1,0,1,0,1)))

    versions.Add(CreateVersionData(35, "35L", Generator30, L0, 2306 * 8, 2303, Array As Int(6, 30, 54, 78, 102, 126, 150), 12, 7, 121, 122, _
        Array As Byte(1,0,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1)))

    versions.Add(CreateVersionData(39, "39L", Generator30, L0,  2812 * 8, 2809, Array As Int(6, 26, 54, 82, 110, 138, 166),  20,   4, 117, 118, Array As Byte(1,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1)))
    versions.Add(CreateVersionData(39, "39M", Generator28, M0 , 2216 * 8, 2213, Array As Int(6, 26, 54, 82, 110, 138, 166),  40,   7,  47,  48, Array As Byte(1,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1)))
    versions.Add(CreateVersionData(39, "39Q", Generator30, Q0 , 1582 * 8, 1579, Array As Int(6, 26, 54, 82, 110, 138, 166),  43,  22,  24,  25, Array As Byte(1,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1)))
    versions.Add(CreateVersionData(39, "39H", Generator30, H0 , 1222 * 8, 1219, Array As Int(6, 26, 54, 82, 110, 138, 166),  10,  67,  15,  16, Array As Byte(1,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1)))

    versions.Add(CreateVersionData(40, "40L", Generator30, L0, 2956 * 8, 2953, Array As Int(6, 30, 58, 86, 114, 142, 170), 19, 6, 118, 119, _
        Array As Byte(1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1)))
    versions.Add(CreateVersionData(40, "40M", Generator28, M0, 2334 * 8, 2331, Array As Int(6, 30, 58, 86, 114, 142, 170), 18, 31, 47, 48, _
        Array As Byte(1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1)))
    versions.Add(CreateVersionData(40, "40Q", Generator30, Q0, 1666 * 8, 1663, Array As Int(6, 30, 58, 86, 114, 142, 170), 34, 34, 24, 25, _
        Array As Byte(1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1)))
    versions.Add(CreateVersionData(40, "40H", Generator30, H0, 1276 * 8, 1273, Array As Int(6, 30, 58, 86, 114, 142, 170), 20, 61, 15, 16, _
        Array As Byte(1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1)))
      
End Sub

If you want to add the balance of the QR Codes (31L to 34H, 35 MQH, 36L to 38H) then consult these web pages:




 

Attachments

  • QRGenerator22042023.zip
    9.8 KB · Views: 88
Last edited:

Johan Schoeman

Expert
Licensed User
Longtime User
Can just as well complete the rest - about 3 years since I started adding to @Erel 's original project. @Erel can now make it an internal library. Attached project incorporates QR Codes Version 1 (LMQH) to Version 40 (LMQH)

V1 (LMQH) to V40 (LMQH):
Sub Class_Globals
    Private xui As XUI
    Public cvs As B4XCanvas
    Private ModuleSize As Int
    Private GFSize As Int = 256
    Private ExpTable(GFSize) As Int
    Private LogTable(GFSize) As Int
    Private PolyZero() As Int = Array As Int(0)
    '7, 10, 13, 15, 16, 17, 18, 20, 22, 24, 26, 28, and 30
    Private Generator7() As Int = Array As Int(1, 127, 122, 154, 164, 11, 68, 117)
    Private Generator10() As Int = Array As Int(1, 216, 194, 159, 111, 199, 94, 95, 113, 157, 193)
    Private Generator13() As Int = Array As Int(1, 137, 73, 227, 17, 177, 17, 52, 13, 46, 43, 83, 132, 120)
    Private Generator15() As Int = Array As Int(1, 29, 196, 111, 163, 112, 74, 10, 105, 105, 139, 132, 151, 32, 134, 26)
    Private Generator16() As Int = Array As Int(1, 59, 13, 104, 189, 68, 209, 30, 8, 163, 65, 41, 229, 98, 50, 36, 59)
    Private Generator17() As Int = Array As Int(1, 119, 66, 83, 120, 119, 22, 197, 83, 249, 41, 143, 134, 85, 53, 125, 99, 79)
    Private Generator18() As Int = Array As Int(1, 239, 251, 183, 113, 149, 175, 199, 215, 240, 220, 73, 82, 173, 75, 32, 67, 217, 146)
    Private Generator20() As Int = Array As Int(1, 152, 185, 240, 5, 111, 99, 6, 220, 112, 150, 69, 36, 187, 22, 228, 198, 121, 121, 165, 174)
    Private Generator22() As Int = Array As Int(1, 89, 179, 131, 176, 182, 244, 19, 189, 69, 40, 28, 137, 29, 123, 67, 253, 86, 218, 230, 26, 145, 245)
    Private Generator24() As Int = Array As Int(1, 122, 118, 169, 70, 178, 237, 216, 102, 115, 150, 229, 73, 130, 72, 61, 43, 206, 1, 237, 247, 127, 217, 144, 117)
    Private Generator26() As Int = Array As Int(1, 246, 51, 183, 4, 136, 98, 199, 152, 77, 56, 206, 24, 145, 40, 209, 117, 233, 42, 135, 68, 70, 144, 146, 77, 43, 94)
    Private Generator28() As Int = Array As Int(1, 252, 9, 28, 13, 18, 251, 208, 150, 103, 174, 100, 41, 167, 12, 247, 56, 117, 119, 233, 127, 181, 100, 121, 147, 176, 74, 58, 197)
    Private Generator30() As Int = Array As Int(1, 212, 246, 77, 73, 195, 192, 75, 98, 5, 70, 103, 177, 22, 217, 138, 51, 181, 246, 72, 25, 18, 46, 228, 74, 216, 195, 11, 106, 130, 150)


    Private TempBB As B4XBytesBuilder
    Private Matrix(0, 0) As Boolean
    Private Reserved(0, 0) As Boolean
    Private NumberOfModules As Int
    Private mBitmapSize As Int
    Type QRVersionData (Format() As Byte, Generator() As Int, MaxSize As Int, Version As Int, MaxUsableSize As Int, Alignments() As Int, _
        Group1Size As Int, Group2Size As Int, Block1Size As Int, Block2Size As Int, VersionName As String, VersionInformation() As Byte)
    Private versions As List
End Sub


Public Sub Initialize (BitmapSize As Int)
    TempBB.Initialize
    mBitmapSize = BitmapSize
    PrepareTables
    versions.Initialize
    'format information for masking pattern 0
    Dim L0() As Byte = Array As Byte(1,1,1,0,1,1,1,1,1,0,0,0,1,0,0)     'ECC Level L
    Dim M0() As Byte = Array As Byte(1,0,1,0,1,0,0,0,0,0,1,0,0,1,0)     'ECC Level M
    Dim Q0() As Byte = Array As Byte(0,1,1,0,1,0,1,0,1,0,1,1,1,1,1)     'ECC Level Q
    Dim H0() As Byte = Array As Byte(0,0,1,0,1,1,0,1,0,0,0,1,0,0,1)     'ECC Level H
 
    versions.Add(CreateVersionData(1, "1L", Generator7,  L0, 19 * 8, 17, Array As Int(), 1, 0, 19, 0, Null))
    versions.Add(CreateVersionData(1, "1M", Generator10, M0, 16 * 8, 14, Array As Int(), 1, 0, 16, 0, Null))
    versions.Add(CreateVersionData(1, "1Q", Generator13, Q0, 13 * 8, 11, Array As Int(), 1, 0, 13, 0, Null))
    versions.Add(CreateVersionData(1, "1H", Generator17, H0,  9 * 8,  7, Array As Int(), 1, 0,  9, 0, Null))
 
    versions.Add(CreateVersionData(2, "2L", Generator10, L0, 34 * 8, 32, Array As Int(6, 18), 1, 0, 34, 0, Null))
    versions.Add(CreateVersionData(2, "2M", Generator16, M0, 28 * 8, 26, Array As Int(6, 18), 1, 0, 28, 0, Null))
    versions.Add(CreateVersionData(2, "2Q", Generator22, Q0, 22 * 8, 20, Array As Int(6, 18), 1, 0, 22, 0, Null))
    versions.Add(CreateVersionData(2, "2H", Generator28, H0, 16 * 8, 14, Array As Int(6, 18), 1, 0, 16, 0, Null))

    versions.Add(CreateVersionData(3, "3L", Generator15, L0, 55 * 8, 53, Array As Int(6, 22), 1, 0, 55, 0, Null))
    versions.Add(CreateVersionData(3, "3M", Generator26, M0, 44 * 8, 42, Array As Int(6, 22), 1, 0, 44, 0, Null))
    versions.Add(CreateVersionData(3, "3Q", Generator18, Q0, 34 * 8, 32, Array As Int(6, 22), 2, 0, 17, 0, Null))
    versions.Add(CreateVersionData(3, "3H", Generator22, H0, 26 * 8, 24, Array As Int(6, 22), 2, 0, 13, 0, Null))
 
    versions.Add(CreateVersionData(4, "4L", Generator20, L0 , 80 * 8, 78, Array As Int(6, 26), 1, 0, 80, 0, Null))
    versions.Add(CreateVersionData(4, "4M", Generator18, M0 , 64 * 8, 62, Array As Int(6, 26), 2, 0, 32, 0, Null))
    versions.Add(CreateVersionData(4, "4Q", Generator26, Q0 , 48 * 8, 46, Array As Int(6, 26), 2, 0, 24, 0, Null))
    versions.Add(CreateVersionData(4, "4H", Generator16, H0 , 36 * 8, 34, Array As Int(6, 26), 4, 0,  9, 0, Null))
 
    versions.Add(CreateVersionData(5, "5L", Generator26, L0 , 108 * 8, 106, Array As Int(6, 30), 1, 0, 108,  0, Null))
    versions.Add(CreateVersionData(5, "5M", Generator24, M0 ,  86 * 8,  84, Array As Int(6, 30), 2, 0,  43,  0, Null))
    versions.Add(CreateVersionData(5, "5Q", Generator18, Q0 ,  62 * 8,  60, Array As Int(6, 30), 2, 2,  15, 16, Null))
    versions.Add(CreateVersionData(5, "5H", Generator22, H0 ,  46 * 8,  44, Array As Int(6, 30), 2, 2,  11, 12, Null))

    versions.Add(CreateVersionData(6, "6L", Generator18, L0 , 136 * 8, 134, Array As Int(6, 34), 2, 0, 68, 0, Null))
    versions.Add(CreateVersionData(6, "6M", Generator16, M0 , 108 * 8, 106, Array As Int(6, 34), 4, 0, 27, 0, Null))
    versions.Add(CreateVersionData(6, "6Q", Generator24, Q0 ,  76 * 8,  74, Array As Int(6, 34), 4, 0, 19, 0, Null))
    versions.Add(CreateVersionData(6, "6H", Generator28, H0 ,  60 * 8,  58, Array As Int(6, 34), 4, 0, 15, 0, Null))
 
    versions.Add(CreateVersionData(7, "7L", Generator20, L0 , 156 * 8, 154, Array As Int(6, 22, 38), 2, 0, 78,  0, Array As Byte(0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0)))
    versions.Add(CreateVersionData(7, "7M", Generator18, M0 , 124 * 8, 122, Array As Int(6, 22, 38), 4, 0, 31,  0, Array As Byte(0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0)))
    versions.Add(CreateVersionData(7, "7Q", Generator18, Q0 ,  88 * 8,  86, Array As Int(6, 22, 38), 2, 4, 14, 15, Array As Byte(0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0)))
    versions.Add(CreateVersionData(7, "7H", Generator26, H0 ,  66 * 8,  64, Array As Int(6, 22, 38), 4, 1, 13, 14, Array As Byte(0,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0)))
 
    versions.Add(CreateVersionData(8, "8L", Generator24, L0 , 194 * 8, 192, Array As Int(6, 24, 42), 2, 0, 97,  0, Array As Byte(0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0)))
    versions.Add(CreateVersionData(8, "8M", Generator22, M0 , 154 * 8, 152, Array As Int(6, 24, 42), 2, 2, 38, 39, Array As Byte(0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0)))
    versions.Add(CreateVersionData(8, "8Q", Generator22, Q0 , 110 * 8, 108, Array As Int(6, 24, 42), 4, 2, 18, 19, Array As Byte(0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0)))
    versions.Add(CreateVersionData(8, "8H", Generator26, H0 ,  86 * 8,  84, Array As Int(6, 24, 42), 4, 2, 14, 15, Array As Byte(0,0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0)))
    
    versions.Add(CreateVersionData(9, "9L", Generator30, L0,  232 * 8, 230, Array As Int(6, 26, 46), 2, 0, 116, 0, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
    versions.Add(CreateVersionData(9, "9M", Generator22, M0 , 182 * 8, 180, Array As Int(6, 26, 46), 3, 2, 36, 37, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
    versions.Add(CreateVersionData(9, "9Q", Generator20, Q0 , 132 * 8, 130, Array As Int(6, 26, 46), 4, 4, 16, 17, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
    versions.Add(CreateVersionData(9, "9H", Generator24, H0 , 100 * 8,  98, Array As Int(6, 26, 46), 4, 4, 12, 13, Array As Byte(0,0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1)))
 
    versions.Add(CreateVersionData(10, "10L", Generator18, L0,  274 * 8, 271, Array As Int(6, 28, 50), 2, 2, 68, 69, Array As Byte(0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1)))
    versions.Add(CreateVersionData(10, "10M", Generator26, M0 , 216 * 8, 213, Array As Int(6, 28, 50), 4, 1, 43, 44, Array As Byte(0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1)))
    versions.Add(CreateVersionData(10, "10Q", Generator24, Q0 , 154 * 8, 151, Array As Int(6, 28, 50), 6, 2, 19, 20, Array As Byte(0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1)))
    versions.Add(CreateVersionData(10, "10H", Generator28, H0 , 122 * 8, 119, Array As Int(6, 28, 50), 6, 2, 15, 16, Array As Byte(0,0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1)))

    versions.Add(CreateVersionData(11, "11L", Generator20, L0,  324 * 8, 321, Array As Int(6, 30, 54), 4, 0, 81,  0, Array As Byte(0,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0)))
    versions.Add(CreateVersionData(11, "11M", Generator30, M0 , 254 * 8, 251, Array As Int(6, 30, 54), 1, 4, 50, 51, Array As Byte(0,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0)))
    versions.Add(CreateVersionData(11, "11Q", Generator28, Q0 , 180 * 8, 177, Array As Int(6, 30, 54), 4, 4, 22, 23, Array As Byte(0,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0)))
    versions.Add(CreateVersionData(11, "11H", Generator24, H0 , 140 * 8, 137, Array As Int(6, 30, 54), 3, 8, 12, 13, Array As Byte(0,0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0)))

    versions.Add(CreateVersionData(12, "12L", Generator24, L0,  370 * 8, 367, Array As Int(6, 32, 58), 2, 2, 92, 93, Array As Byte(0,0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0)))
    versions.Add(CreateVersionData(12, "12M", Generator22, M0 , 290 * 8, 287, Array As Int(6, 32, 58), 6, 2, 36, 37, Array As Byte(0,0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0)))
    versions.Add(CreateVersionData(12, "12Q", Generator26, Q0 , 206 * 8, 203, Array As Int(6, 32, 58), 4, 6, 20, 21, Array As Byte(0,0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0)))
    versions.Add(CreateVersionData(12, "12H", Generator28, H0 , 158 * 8, 155, Array As Int(6, 32, 58), 7, 4, 14, 15, Array As Byte(0,0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0)))

    versions.Add(CreateVersionData(13, "13L", Generator26, L0,  428 * 8, 425, Array As Int(6, 34, 62),  4, 0, 107, 0, Array As Byte(0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1)))
    versions.Add(CreateVersionData(13, "13M", Generator22, M0 , 334 * 8, 331, Array As Int(6, 34, 62),  8, 1, 37, 38, Array As Byte(0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1)))
    versions.Add(CreateVersionData(13, "13Q", Generator24, Q0 , 244 * 8, 241, Array As Int(6, 34, 62),  8, 4, 20, 21, Array As Byte(0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1)))
    versions.Add(CreateVersionData(13, "13H", Generator22, H0 , 180 * 8, 177, Array As Int(6, 34, 62), 12, 4, 11, 12, Array As Byte(0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1)))

    versions.Add(CreateVersionData(14, "14L", Generator30, L0,  461 * 8, 458, Array As Int(6, 26, 46, 66),  3, 1, 115, 116, Array As Byte(0,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1)))
    versions.Add(CreateVersionData(14, "14M", Generator24, M0 , 365 * 8, 362, Array As Int(6, 26, 46, 66),  4, 5,  40,  41, Array As Byte(0,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1)))
    versions.Add(CreateVersionData(14, "14Q", Generator20, Q0 , 261 * 8, 258, Array As Int(6, 26, 46, 66), 11, 5,  16,  17, Array As Byte(0,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1)))
    versions.Add(CreateVersionData(14, "14H", Generator24, H0 , 197 * 8, 194, Array As Int(6, 26, 46, 66), 11, 5,  12,  13, Array As Byte(0,0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1)))

    versions.Add(CreateVersionData(15, "15L", Generator22, L0,  523 * 8, 520, Array As Int(6, 26, 48, 70),  5, 1, 87, 88, Array As Byte(0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0)))
    versions.Add(CreateVersionData(15, "15M", Generator24, M0 , 415 * 8, 412, Array As Int(6, 26, 48, 70),  5, 5, 41, 42, Array As Byte(0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0)))
    versions.Add(CreateVersionData(15, "15Q", Generator30, Q0 , 295 * 8, 292, Array As Int(6, 26, 48, 70),  5, 7, 24, 25, Array As Byte(0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0)))
    versions.Add(CreateVersionData(15, "15H", Generator24, H0 , 223 * 8, 220, Array As Int(6, 26, 48, 70), 11, 7, 12, 13, Array As Byte(0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0)))

    versions.Add(CreateVersionData(16, "16L", Generator24, L0,  589 * 8, 586, Array As Int(6, 26, 50, 74),  5,  1, 98, 99, Array As Byte(0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0)))
    versions.Add(CreateVersionData(16, "16M", Generator28, M0 , 453 * 8, 450, Array As Int(6, 26, 50, 74),  7,  3, 45, 46, Array As Byte(0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0)))
    versions.Add(CreateVersionData(16, "16Q", Generator24, Q0 , 325 * 8, 322, Array As Int(6, 26, 50, 74), 15,  2, 19, 20, Array As Byte(0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0)))
    versions.Add(CreateVersionData(16, "16H", Generator30, H0 , 253 * 8, 250, Array As Int(6, 26, 50, 74),  3, 13, 15, 16, Array As Byte(0,1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0)))
 
    versions.Add(CreateVersionData(17, "17L", Generator28, L0,  647 * 8, 644, Array As Int(6, 30, 54, 78),   1,  5, 107, 108, Array As Byte(0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,1)))
    versions.Add(CreateVersionData(17, "17M", Generator28, M0 , 507 * 8, 504, Array As Int(6, 30, 54, 78),  10,  1,  46,  47, Array As Byte(0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,1)))
    versions.Add(CreateVersionData(17, "17Q", Generator28, Q0 , 367 * 8, 364, Array As Int(6, 30, 54, 78),   1, 15,  22,  23, Array As Byte(0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,1)))
    versions.Add(CreateVersionData(17, "17H", Generator28, H0 , 283 * 8, 280, Array As Int(6, 30, 54, 78),   2, 17,  14,  15, Array As Byte(0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,1)))

    versions.Add(CreateVersionData(18, "18L", Generator30, L0,  721 * 8, 718, Array As Int(6, 30, 56, 82),   5,  1, 120, 121, Array As Byte(0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1)))
    versions.Add(CreateVersionData(18, "18M", Generator26, M0 , 563 * 8, 560, Array As Int(6, 30, 56, 82),   9,  4,  43,  44, Array As Byte(0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1)))
    versions.Add(CreateVersionData(18, "18Q", Generator28, Q0 , 397 * 8, 394, Array As Int(6, 30, 56, 82),  17,  1,  22,  23, Array As Byte(0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1)))
    versions.Add(CreateVersionData(18, "18H", Generator28, H0 , 313 * 8, 310, Array As Int(6, 30, 56, 82),   2, 19,  14,  15, Array As Byte(0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1)))

    versions.Add(CreateVersionData(19, "19L", Generator28, L0,  795 * 8, 792, Array As Int(6, 30, 58, 86),  3,  4, 113, 114, Array As Byte(0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0)))
    versions.Add(CreateVersionData(19, "19M", Generator26, M0 , 627 * 8, 624, Array As Int(6, 30, 58, 86),  3, 11,  44,  45, Array As Byte(0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0)))
    versions.Add(CreateVersionData(19, "19Q", Generator26, Q0 , 445 * 8, 442, Array As Int(6, 30, 58, 86), 17,  4,  21,  22, Array As Byte(0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0)))
    versions.Add(CreateVersionData(19, "19H", Generator26, H0 , 341 * 8, 338, Array As Int(6, 30, 58, 86),  9, 16,  13,  14, Array As Byte(0,1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0)))

    versions.Add(CreateVersionData(20, "20L", Generator28, L0,  861 * 8, 858, Array As Int(6, 34, 62, 90),  3,  5, 107, 108, Array As Byte(0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0)))
    versions.Add(CreateVersionData(20, "20M", Generator26, M0 , 669 * 8, 666, Array As Int(6, 34, 62, 90),  3, 13,  41,  42, Array As Byte(0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0)))
    versions.Add(CreateVersionData(20, "20Q", Generator30, Q0 , 485 * 8, 482, Array As Int(6, 34, 62, 90), 15,  5,  24,  25, Array As Byte(0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0)))
    versions.Add(CreateVersionData(20, "20H", Generator28, H0 , 385 * 8, 382, Array As Int(6, 34, 62, 90), 15, 10,  15,  16, Array As Byte(0,1,0,1,0,0,1,0,0,1,1,0,1,0,0,1,1,0)))

    versions.Add(CreateVersionData(21, "21L", Generator28, L0,  932 * 8, 929, Array As Int(6, 28, 50, 72, 94),  4,  4, 116, 117, Array As Byte(0,1,0,1,0,1,0,1,1,0,1,0,0,0,0,0,1,1)))
    versions.Add(CreateVersionData(21, "21M", Generator26, M0 , 714 * 8, 711, Array As Int(6, 28, 50, 72, 94),  17, 0,  42,  0, Array As Byte(0,1,0,1,0,1,0,1,1,0,1,0,0,0,0,0,1,1)))
    versions.Add(CreateVersionData(21, "21Q", Generator28, Q0 , 512 * 8, 509, Array As Int(6, 28, 50, 72, 94), 17,  6,  22,  23, Array As Byte(0,1,0,1,0,1,0,1,1,0,1,0,0,0,0,0,1,1)))
    versions.Add(CreateVersionData(21, "21H", Generator30, H0 , 406 * 8, 403, Array As Int(6, 28, 50, 72, 94), 19, 6,  16,  17, Array As Byte(0,1,0,1,0,1,0,1,1,0,1,0,0,0,0,0,1,1)))

    versions.Add(CreateVersionData(22, "22L", Generator28, L0,  1006 * 8, 1003, Array As Int(6, 26, 50, 74, 98),  2,  7, 111, 112, Array As Byte(0,1,0,1,1,0,1,0,0,0,1,1,0,0,1,0,0,1)))
    versions.Add(CreateVersionData(22, "22M", Generator28, M0 , 782 * 8, 779, Array As Int(6, 26, 50, 74, 98),  17, 0,  46,  0, Array As Byte(0,1,0,1,1,0,1,0,0,0,1,1,0,0,1,0,0,1)))
    versions.Add(CreateVersionData(22, "22Q", Generator30, Q0 , 568 * 8, 565, Array As Int(6, 26, 50, 74, 98), 7,  16,  24,  25, Array As Byte(0,1,0,1,1,0,1,0,0,0,1,1,0,0,1,0,0,1)))
    versions.Add(CreateVersionData(22, "22H", Generator24, H0 , 442 * 8, 439, Array As Int(6, 26, 50, 74, 98), 34, 0,  13, 0, Array As Byte(0,1,0,1,1,0,1,0,0,0,1,1,0,0,1,0,0,1)))

    versions.Add(CreateVersionData(23, "23L", Generator30, L0, 1094 * 8, 1091, Array As Int(6, 30, 54, 78, 102), 4, 5, 121, 122, _
        Array As Byte(0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0)))
    versions.Add(CreateVersionData(23, "23M", Generator28, M0, 860 * 8, 857, Array As Int(6, 30, 54, 78, 102), 4, 14, 47, 48, _
        Array As Byte(0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0)))
    versions.Add(CreateVersionData(23, "23Q", Generator30, Q0, 614 * 8, 611, Array As Int(6, 30, 54, 78, 102), 11, 14, 24, 25, _
        Array As Byte(0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0)))
    versions.Add(CreateVersionData(23, "23H", Generator30, H0, 464 * 8, 461, Array As Int(6, 30, 54, 78, 102), 16, 14, 15, 16, _
        Array As Byte(0,1,0,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0)))

    versions.Add(CreateVersionData(24, "24L", Generator30, L0, 1174 * 8, 1171, Array As Int(6, 28, 54, 80,106), 6, 4, 117, 118, _
        Array As Byte(0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0,0)))
    versions.Add(CreateVersionData(24, "24M", Generator28, M0, 914 * 8, 911, Array As Int(6, 28, 54, 80,106), 6, 14, 45, 46, _
        Array As Byte(0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0,0)))
    versions.Add(CreateVersionData(24, "24Q", Generator30, Q0, 664 * 8, 661, Array As Int(6, 28, 54, 80,106), 11, 16, 24, 25, _
        Array As Byte(0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0,0)))
    versions.Add(CreateVersionData(24, "24H", Generator30, H0, 514 * 8, 511, Array As Int(6, 28, 54, 80,106), 30, 2, 16, 17, _
        Array As Byte(0,1,1,0,0,0,1,1,1,0,1,1,0,0,0,1,0,0)))
 
    versions.Add(CreateVersionData(25, "25L", Generator26, L0, 1276 * 8, 1273, Array As Int(6, 32, 58, 84, 110), 8, 4, 106, 107, _
        Array As Byte(0,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,1)))
    versions.Add(CreateVersionData(25, "25M", Generator28, M0, 1000 * 8, 997, Array As Int(6, 32, 58, 84, 110), 8, 13, 47, 48, _
        Array As Byte(0,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,1)))
    versions.Add(CreateVersionData(25, "25Q", Generator30, Q0, 718 * 8, 715, Array As Int(6, 32, 58, 84, 110), 7, 22, 24, 25, _
        Array As Byte(0,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,1)))
    versions.Add(CreateVersionData(25, "25H", Generator30, H0, 538 * 8, 535, Array As Int(6, 32, 58, 84, 110), 22, 13, 15, 16, _
        Array As Byte(0,1,1,0,0,1,0,0,0,1,1,1,1,0,0,0,0,1)))
 
    versions.Add(CreateVersionData(26, "26L", Generator28, L0, 1370 * 8, 1367, Array As Int(6, 30, 58, 86, 114), 10, 2, 114, 115, _
        Array As Byte(0,1,1,0,1,0,1,1,1,1,1,0,1,0,1,0,1,1)))
    versions.Add(CreateVersionData(26, "26M", Generator28, M0, 1062 * 8, 1059, Array As Int(6, 30, 58, 86, 114), 19, 4, 46, 47, _
        Array As Byte(0,1,1,0,1,0,1,1,1,1,1,0,1,0,1,0,1,1)))
    versions.Add(CreateVersionData(26, "26Q", Generator28, Q0, 754 * 8, 751, Array As Int(6, 30, 58, 86, 114), 28, 6, 22, 23, _
        Array As Byte(0,1,1,0,1,0,1,1,1,1,1,0,1,0,1,0,1,1)))
    versions.Add(CreateVersionData(26, "26H", Generator30, H0, 596 * 8, 593, Array As Int(6, 30, 58, 86, 114), 33, 4, 16, 17, _
        Array As Byte(0,1,1,0,1,0,1,1,1,1,1,0,1,0,1,0,1,1)))

    versions.Add(CreateVersionData(27, "27L", Generator30, L0, 1468 * 8, 1465, Array As Int(6, 34, 62, 90, 118), 8, 4, 122, 123, _
        Array As Byte(0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1,0)))
    versions.Add(CreateVersionData(27, "27M", Generator28, M0, 1128 * 8, 1125, Array As Int(6, 34, 62, 90, 118), 22, 3, 45, 46, _
        Array As Byte(0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1,0)))
    versions.Add(CreateVersionData(27, "27Q", Generator30, Q0, 808 * 8, 805, Array As Int(6, 34, 62, 90, 118), 8, 26, 23, 24, _
        Array As Byte(0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1,0)))
    versions.Add(CreateVersionData(27, "27H", Generator30, H0, 628 * 8, 625, Array As Int(6, 34, 62, 90, 118), 12, 28, 15, 16, _
        Array As Byte(0,1,1,0,1,1,0,0,0,0,1,0,0,0,1,1,1,0)))

    versions.Add(CreateVersionData(28, "28L", Generator30, L0, 1531 * 8, 1528, Array As Int(6, 26, 50, 74, 98, 122), 3, 10, 117, 118, _
        Array As Byte(0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0)))
    versions.Add(CreateVersionData(28, "28M", Generator28, M0, 1193 * 8, 1190, Array As Int(6, 26, 50, 74, 98, 122), 3, 23, 45, 46, _
        Array As Byte(0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0)))
    versions.Add(CreateVersionData(28, "28Q", Generator30, Q0, 871 * 8, 868, Array As Int(6, 26, 50, 74, 98, 122), 4, 31, 24, 25, _
        Array As Byte(0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0)))
    versions.Add(CreateVersionData(28, "28H", Generator30, H0, 661 * 8, 658, Array As Int(6, 26, 50, 74, 98, 122), 11, 31, 15, 16, _
        Array As Byte(0,1,1,1,0,0,1,1,0,0,0,0,0,1,1,0,1,0)))

    versions.Add(CreateVersionData(29, "29L", Generator30, L0, 1631 * 8, 1628, Array As Int(6, 30, 54, 78, 102, 126), 7, 7, 116, 117, _
        Array As Byte(0,1,1,1,0,1,0,0,1,1,0,0,1,1,1,1,1,1)))
    versions.Add(CreateVersionData(29, "29M", Generator28, M0, 1267 * 8, 1264, Array As Int(6, 30, 54, 78, 102, 126), 21, 7, 45, 46, _
        Array As Byte(0,1,1,1,0,1,0,0,1,1,0,0,1,1,1,1,1,1)))
    versions.Add(CreateVersionData(29, "29Q", Generator30, Q0, 911 * 8, 908, Array As Int(6, 30, 54, 78, 102, 126), 1, 37, 23, 24, _
        Array As Byte(0,1,1,1,0,1,0,0,1,1,0,0,1,1,1,1,1,1)))
    versions.Add(CreateVersionData(29, "29H", Generator30, H0, 701 * 8, 698, Array As Int(6, 30, 54, 78, 102, 126), 19, 26, 15, 16, _
        Array As Byte(0,1,1,1,0,1,0,0,1,1,0,0,1,1,1,1,1,1)))

    versions.Add(CreateVersionData(30, "30L", Generator30, L0, 1735 * 8, 1732, Array As Int(6, 26, 52, 78, 104, 130), 5, 10, 115, 116, _
        Array As Byte(0,1,1,1,1,0,1,1,0,1,0,1,1,1,0,1,0,1)))
    versions.Add(CreateVersionData(30, "30M", Generator28, M0, 1373 * 8, 1370, Array As Int(6, 26, 52, 78, 104, 130), 19, 10, 47, 48, _
        Array As Byte(0,1,1,1,1,0,1,1,0,1,0,1,1,1,0,1,0,1)))
    versions.Add(CreateVersionData(30, "30Q", Generator30, Q0, 985 * 8, 982, Array As Int(6, 26, 52, 78, 104, 130), 15, 25, 24, 25, _
        Array As Byte(0,1,1,1,1,0,1,1,0,1,0,1,1,1,0,1,0,1)))
    versions.Add(CreateVersionData(30, "30H", Generator30, H0, 745 * 8, 742, Array As Int(6, 26, 52, 78, 104, 130), 23, 25, 15, 16, _
        Array As Byte(0,1,1,1,1,0,1,1,0,1,0,1,1,1,0,1,0,1)))

    versions.Add(CreateVersionData(31, "31L", Generator30, L0, 1843 * 8, 1840, Array As Int(6, 30, 56, 82, 108, 134), 13, 3, 115, 116, _
        Array As Byte(0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0,0)))
    versions.Add(CreateVersionData(31, "31M", Generator28, M0, 1455 * 8, 1452, Array As Int(6, 30, 56, 82, 108, 134), 2, 29, 46, 47, _
        Array As Byte(0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0,0)))
    versions.Add(CreateVersionData(31, "31Q", Generator30, Q0, 1033 * 8, 1030, Array As Int(6, 30, 56, 82, 108, 134), 42, 1, 24, 25, _
        Array As Byte(0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0,0)))
    versions.Add(CreateVersionData(31, "31H", Generator30, H0, 793 * 8, 790, Array As Int(6, 30, 56, 82, 108, 134), 23, 28, 15, 16, _
        Array As Byte(0,1,1,1,1,1,0,0,1,0,0,1,0,1,0,0,0,0)))

    versions.Add(CreateVersionData(32, "32L", Generator30, L0, 1955 * 8, 1952, Array As Int(6, 34, 60, 86, 112, 138), 17, 0, 115, 0, _
        Array As Byte(1,0,0,0,0,0,1,0,0,1,1,1,0,1,0,1,0,1)))
    versions.Add(CreateVersionData(32, "32M", Generator28, M0, 1541 * 8, 1538, Array As Int(6, 34, 60, 86, 112, 138), 10, 23, 46, 47, _
        Array As Byte(1,0,0,0,0,0,1,0,0,1,1,1,0,1,0,1,0,1)))
    versions.Add(CreateVersionData(32, "32Q", Generator30, Q0, 1115 * 8, 1112, Array As Int(6, 34, 60, 86, 112, 138), 10, 35, 24, 25, _
        Array As Byte(1,0,0,0,0,0,1,0,0,1,1,1,0,1,0,1,0,1)))
    versions.Add(CreateVersionData(32, "32H", Generator30, H0, 845 * 8, 842, Array As Int(6, 34, 60, 86, 112, 138), 19, 35, 15, 16, _
        Array As Byte(1,0,0,0,0,0,1,0,0,1,1,1,0,1,0,1,0,1)))

    versions.Add(CreateVersionData(33, "33L", Generator30, L0, 2071 * 8, 2068, Array As Int(6, 30, 58, 86, 114, 142), 17, 1, 115, 116, _
        Array As Byte(1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0,0)))
    versions.Add(CreateVersionData(33, "33M", Generator28, M0, 1631 * 8, 1628, Array As Int(6, 30, 58, 86, 114, 142), 14, 21, 46, 47, _
        Array As Byte(1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0,0)))
    versions.Add(CreateVersionData(33, "33Q", Generator30, Q0, 1171 * 8, 1168, Array As Int(6, 30, 58, 86, 114, 142), 29, 19, 24, 25, _
        Array As Byte(1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0,0)))
    versions.Add(CreateVersionData(33, "33H", Generator30, H0, 901 * 8, 898, Array As Int(6, 30, 58, 86, 114, 142), 11, 46, 15, 16, _
        Array As Byte(1,0,0,0,0,1,0,1,1,0,1,1,1,1,0,0,0,0)))

    versions.Add(CreateVersionData(34, "34L", Generator30, L0, 2191 * 8, 2188, Array As Int(6, 34, 62, 90, 118, 146), 13, 6, 115, 116, _
        Array As Byte(1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,1,0)))
    versions.Add(CreateVersionData(34, "34M", Generator28, M0, 1725 * 8, 1722, Array As Int(6, 34, 62, 90, 118, 146), 14, 23, 46, 47, _
        Array As Byte(1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,1,0)))
    versions.Add(CreateVersionData(34, "34Q", Generator30, Q0, 1231 * 8, 1228, Array As Int(6, 34, 62, 90, 118, 146), 44, 7, 24, 25, _
        Array As Byte(1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,1,0)))
    versions.Add(CreateVersionData(34, "34H", Generator30, H0, 961 * 8, 958, Array As Int(6, 34, 62, 90, 118, 146), 59, 1, 16, 17, _
        Array As Byte(1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,1,0)))

    versions.Add(CreateVersionData(35, "35L", Generator30, L0, 2306 * 8, 2303, Array As Int(6, 30, 54, 78, 102, 126, 150), 12, 7, 121, 122, _
        Array As Byte(1,0,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1)))
    versions.Add(CreateVersionData(35, "35M", Generator28, M0, 1812 * 8, 1809, Array As Int(6, 30, 54, 78, 102, 126, 150), 12, 26, 46, 47, _
        Array As Byte(1,0,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1)))
    versions.Add(CreateVersionData(35, "35Q", Generator30, Q0, 1286 * 8, 1283, Array As Int(6, 30, 54, 78, 102, 126, 150), 39, 14, 24, 25, _
        Array As Byte(1,0,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1)))
    versions.Add(CreateVersionData(35, "35H", Generator30, H0, 986 * 8, 983, Array As Int(6, 30, 54, 78, 102, 126, 150), 22, 41, 15, 16, _
        Array As Byte(1,0,0,0,1,1,0,1,1,1,1,0,0,1,1,1,1,1)))   
    
    versions.Add(CreateVersionData(36, "36L", Generator30, L0, 2434 * 8, 2431, Array As Int(6, 24, 50, 76, 102, 128, 154), 6, 14, 121, 122, _
        Array As Byte(1,0,0,1,0,0,1,0,1,1,0,0,0,0,1,0,1,1)))
    versions.Add(CreateVersionData(36, "36M", Generator28, M0, 1914 * 8, 1911, Array As Int(6, 24, 50, 76, 102, 128, 154), 6, 34, 47, 48, _
        Array As Byte(1,0,0,1,0,0,1,0,1,1,0,0,0,0,1,0,1,1)))
    versions.Add(CreateVersionData(36, "36Q", Generator30, Q0, 1354 * 8, 1351, Array As Int(6, 24, 50, 76, 102, 128, 154), 46, 10, 24, 25, _
        Array As Byte(1,0,0,1,0,0,1,0,1,1,0,0,0,0,1,0,1,1)))
    versions.Add(CreateVersionData(36, "36H", Generator30, H0, 1054 * 8, 1051, Array As Int(6, 24, 50, 76, 102, 128, 154), 2, 64, 15, 16, _
        Array As Byte(1,0,0,1,0,0,1,0,1,1,0,0,0,0,1,0,1,1)))       
 
    versions.Add(CreateVersionData(37, "37L", Generator30, L0, 2566 * 8, 2563, Array As Int(6, 28, 54, 80, 106, 132, 158), 17, 4, 122, 123, _
        Array As Byte(1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1,0)))
    versions.Add(CreateVersionData(37, "37M", Generator28, M0, 1992 * 8, 1989, Array As Int(6, 28, 54, 80, 106, 132, 158), 29, 14, 46, 47, _
        Array As Byte(1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1,0)))
    versions.Add(CreateVersionData(37, "37Q", Generator30, Q0, 1426 * 8, 1423, Array As Int(6, 28, 54, 80, 106, 132, 158), 49, 10, 24, 25, _
        Array As Byte(1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1,0)))
    versions.Add(CreateVersionData(37, "37H", Generator30, H0, 1096 * 8, 1093, Array As Int(6, 28, 54, 80, 106, 132, 158), 24, 46, 15, 16, _
        Array As Byte(1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,1,1,0)))   
 
    versions.Add(CreateVersionData(38, "38L", Generator30, L0, 2702 * 8, 2699, Array As Int(6, 32, 58, 84, 110, 136, 162), 4, 18, 122, 123, _
        Array As Byte(1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0,0)))
    versions.Add(CreateVersionData(38, "38M", Generator28, M0, 2102 * 8, 2099, Array As Int(6, 32, 58, 84, 110, 136, 162), 13, 32, 46, 47, _
        Array As Byte(1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0,0)))
    versions.Add(CreateVersionData(38, "38Q", Generator30, Q0, 1502 * 8, 1499, Array As Int(6, 32, 58, 84, 110, 136, 162), 48, 14, 24, 25, _
        Array As Byte(1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0,0)))
    versions.Add(CreateVersionData(38, "38H", Generator30, H0, 1142 * 8, 1139, Array As Int(6, 32, 58, 84, 110, 136, 162), 42, 32, 15, 16, _
        Array As Byte(1,0,0,1,1,0,1,0,1,0,0,1,1,0,0,1,0,0)))           
    
    versions.Add(CreateVersionData(39, "39L", Generator30, L0,  2812 * 8, 2809, Array As Int(6, 26, 54, 82, 110, 138, 166),  20,   4, 117, 118, Array As Byte(1,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1)))
    versions.Add(CreateVersionData(39, "39M", Generator28, M0 , 2216 * 8, 2213, Array As Int(6, 26, 54, 82, 110, 138, 166),  40,   7,  47,  48, Array As Byte(1,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1)))
    versions.Add(CreateVersionData(39, "39Q", Generator30, Q0 , 1582 * 8, 1579, Array As Int(6, 26, 54, 82, 110, 138, 166),  43,  22,  24,  25, Array As Byte(1,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1)))
    versions.Add(CreateVersionData(39, "39H", Generator30, H0 , 1222 * 8, 1219, Array As Int(6, 26, 54, 82, 110, 138, 166),  10,  67,  15,  16, Array As Byte(1,0,0,1,1,1,0,1,0,1,0,1,0,0,0,0,0,1)))

    versions.Add(CreateVersionData(40, "40L", Generator30, L0, 2956 * 8, 2953, Array As Int(6, 30, 58, 86, 114, 142, 170), 19, 6, 118, 119, _
        Array As Byte(1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1)))
    versions.Add(CreateVersionData(40, "40M", Generator28, M0, 2334 * 8, 2331, Array As Int(6, 30, 58, 86, 114, 142, 170), 18, 31, 47, 48, _
        Array As Byte(1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1)))
    versions.Add(CreateVersionData(40, "40Q", Generator30, Q0, 1666 * 8, 1663, Array As Int(6, 30, 58, 86, 114, 142, 170), 34, 34, 24, 25, _
        Array As Byte(1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1)))
    versions.Add(CreateVersionData(40, "40H", Generator30, H0, 1276 * 8, 1273, Array As Int(6, 30, 58, 86, 114, 142, 170), 20, 61, 15, 16, _
        Array As Byte(1,0,1,0,0,0,1,1,0,0,0,1,1,0,1,0,0,1)))
    
End Sub

Now we can start with DataMatrix, PDF417, and Aztec codes. @Erel, will wait for you to do the "frame" work.....šŸ˜
 

Attachments

  • QRGenerator_V1_LMQH_to_V40_LMQH.zip
    10.5 KB · Views: 107
Last edited:
Top