Simple lzw encoder - decoder without dependance

Post your FreeBASIC tips and tricks here. Please don’t post your code without including an explanation.
marpon
Posts: 250
Joined: Dec 28, 2012 13:31
Location: Paris - France

Simple lzw encoder - decoder without dependance

Postby marpon » Oct 28, 2018 16:04

I was trying to compress/decompress without any dependance (not shared and not static lib)
and found a quite simple working code done in c.

the original code comes from rosetta
i"ve done the translation to freeBASIC


Code: Select all

 /'
   simple_lzma.bas
   Translated to freebasic  by Marc Pons      email : marpon@aliceadsl.fr
   original code in c,   from rosettacode  LZW encoder/decoder.
   see  :  https://rosettacode.org/wiki/LZW_compression#C
 '/

#include once "crt/string.bi"   /'  for memset, memcpy  and memcmp'/

 /' -------- memory stuff ---------- '/
private function mem_alloc(ByVal item_size as long , ByVal n_item as long) as any ptr   
    dim as long ptr x = CAllocate(1 , sizeof(long) * 2 + n_item * item_size)
   
    x[0] = item_size
    x[1] = n_item
    return cast(any ptr , x + 2)
end function

private function mem_extend(ByVal m as any ptr , ByVal new_n as long) as any ptr   
    dim as long ptr x = cast(long ptr , m) - 2
   
    x = reallocate(x , sizeof(long) * 2 + x[0] * new_n)
    x[1] = new_n
    return cast(any ptr , x + 2)
end function

private sub _clear(ByVal m as any ptr)   
    dim as long ptr x = cast(long ptr , m) - 2
   
    memset(m , 0 , x[0] *x[1])
end sub

#define _new(type, n)          mem_alloc(sizeof(type), n)
#define _del(m)                deallocate(cast(long ptr, m) - 2) : m = 0
#define _len(m)                *(cast(long ptr, m) - 1)
#define _setsize(m, n)          m = mem_extend(m, n)
#define _extend(m)             m = mem_extend(m, _len(m) * 2)


 /'  ----------- LZW stuff --------------  '/


#define M_CLR 256          /'  clear table marker  '/
#define M_EOD 257          /'  end-of-data marker  '/
#define M_NEW 258        /'  new code index  '/

 /'  encode and decode dictionary structures.
   for encoding, entry at code index is a list of indices that follow current one,
   i.e. if code 97 is 'a', code 387 is 'ab', and code 1022 is 'abc',
   then dict[97].next['b'] = 387, dict[387].next['c'] = 1022, etc.  '/

type enc_t
        dim     as ushort next0(0 to 255)
end type


type dec_t
        dim     as ushort prev
        dim     as ushort back
        dim     as ubyte c
end type


'' to simulate inline function, used in  lzw_encode function only
#macro write_bits(x)
    tmp = (tmp Shl bits) or (cast(ushort , x))
    o_bits += bits
    if _len(out0) <= out_len then _extend(out0)
    while o_bits >= 8
        o_bits  -= 8
        out0[out_len] = (tmp Shr o_bits)
        out_len += 1
        tmp = (tmp) and ((1 Shl o_bits) - 1)
    wend
#endmacro

private function lzw_encode(byval in0 as ubyte ptr , byval max_bits as long) as ubyte ptr
   
    dim as long len0 = _len(in0)
    dim as long bits = 9
    dim as long next_shift = 512
    dim as ushort code
    dim as ushort c
    dim as ushort nc
    dim as ushort next_code = M_NEW
    dim as enc_t ptr d = _new(enc_t , 512)
   
    if max_bits > 15 then max_bits = 15
    if max_bits < 9 then max_bits = 12
   
    dim as ubyte ptr out0 = _new(ushort , 4)
    dim as long out_len
    dim as long o_bits
    dim as ulong tmp
    dim as ulong il
 
    len0 -= 1
    code = in0[il] : il += 1
    while len0 > 0
        c = in0[il] : il += 1
        nc = d[code].next0(c)
        if nc then
            code = nc
        else
            write_bits(code)
            d[code].next0(c) = next_code : nc = next_code : next_code += 1
            code = c
        end if
       
        /'  next new code would be too long for current table  '/
        if next_code = next_shift then
           
            /'  either reset table back to 9 bits  '/
            bits += 1
            if bits > max_bits then
                /'  table clear marker must occur before bit reset  '/
                write_bits(M_CLR)
                bits = 9
                next_shift = 512
                next_code = M_NEW
                _clear(d)
            else                /'  or extend table  '/
                next_shift *= 2
                _setsize(d , next_shift)
            end if
        end if
        len0 -= 1
    wend
   
    write_bits(code)
    write_bits(M_EOD)
    if tmp then
      write_bits(tmp)
    end if
    _del(d)
    _setsize(out0 , out_len)
    return out0
end function


'' to simulate inline function, used in  lzw_decode function only
#macro write_out(c)
    while out_len >= _len(out0)
        _extend(out0)
    wend
    out0[out_len] = c
    out_len += 1
#endmacro

'' to simulate inline function, used in  lzw_decode function only
#macro get_code
    while n_bits < bits
        if len0 > 0 then
            len0 -= 1
            tmp = (tmp Shl 8)  or (*(in0))
            in0 += 1
            n_bits += 8
        else
            tmp = tmp Shl (bits - n_bits)
            n_bits = bits
        end if
    wend
    n_bits -= bits
    code = tmp Shr n_bits
    tmp = (tmp) and ((1 Shl n_bits) - 1)
#endmacro

'' to simulate inline function, used in  lzw_decode function only
#macro clear_table
    _clear(d)
   for j = 0 to 255
        d[j].c = j
   next
    next_code = M_NEW
    next_shift = 512
    bits = 9
#endmacro


private function lzw_decode(byval in0 as ubyte ptr) as ubyte ptr
    dim as ubyte ptr out0 = _new(ubyte , 4)
   dim as dec_t ptr d = _new(dec_t , 512)
    dim as long next_shift = 512
    dim as long bits = 9
   dim as ushort next_code = M_NEW
   
    dim as long n_bits
    dim as long len0
    dim as long out_len
    dim as long j
    dim as ushort code
    dim as ushort c
    dim as ushort t   
    dim as ulong tmp
   
    clear_table        /'  in case encoded bits didn't start with M_CLR  '/
   len0 = _len(in0)
    do while  len0 <>0
        get_code
        if code = M_EOD then exit do
        if code = M_CLR then
            clear_table
            continue do
        end if       
        if code >= next_code then
         print "Bad sequence"
            _del(out0)
            _del(d)
            return out0
        end if
        c = code
        d[next_code].prev = c
        while c > 255
            t = d[c].prev
            d[t].back = c
            c = t
        wend       
        d[next_code - 1].c = c       
        while d[c].back <> 0
            write_out(d[c].c)
            t = d[c].back
            d[c].back = 0
            c = t
        wend
        write_out(d[c].c)
        next_code += 1
        if next_code >= next_shift then
            bits += 1
            if bits > 16 then
               /'  if input was correct , we     'd have hit M_CLR before this  '/
                print "Too many bits"
                _del(out0)
                _del(d)
                return out0
            end if
            next_shift *= 2
            _setsize(d , next_shift)
        end if
    loop
   
      /'  might be ok , so just whine , don 't be drastic   '/
    if  code <> M_EOD then print "Bits did not end in EOD"
    _setsize(out0 , out_len)
    _del(d)
    return out0
end function

/' -------- main part  -  to test only ---------- '/

print !"start\n"

dim as string sin0 = "0123456789abcdefghijklmnopqrstuvwxyz01234567890123456789abcdefghijklmnopqrstuvwxyz"
dim as ubyte ptr in0 = _new(ubyte , len(sin0))

memcpy ( in0, strptr(sin0), len(sin0))
print "input size:    " & len(sin0)

dim as ubyte ptr enc0 = lzw_encode(in0 , 9)       ' encoding
print "encoded size:  " & _len(enc0)

dim as ubyte ptr dec0 = lzw_decode(enc0)         ' decoding
print "decoded size:  " & _len(dec0)

if (len(sin0) <> _len(dec0)) or (memcmp (in0, dec0, len(sin0))) <> 0 then
   print : print "Failed comparaison :   decoded versus input"
else
   print : print "Succeeded comparaison :   decoded versus input"   
end if


 /'  free allocated memory  '/
_del(in0)
_del(enc0)
_del(dec0)

print : print "Press key to finish"
sleep




it works for 32 and 64 bits , the compression ratio is not the best but it"s a light code
Last edited by marpon on Oct 29, 2018 14:56, edited 1 time in total.
counting_pine
Site Admin
Posts: 5988
Joined: Jul 05, 2005 17:32
Location: Manchester, Lancs

Re: Simple lzma encoder - decoder without dependance

Postby counting_pine » Oct 28, 2018 22:34

Hi. It looks like this is LZW, rather than LZMA?
marpon
Posts: 250
Joined: Dec 28, 2012 13:31
Location: Paris - France

Re: Simple lzw encoder - decoder without dependance

Postby marpon » Oct 29, 2018 14:59

@counting_pine

True, sorry... editing the title to correct
D.J.Peters
Posts: 7455
Joined: May 28, 2005 3:28

Re: Simple lzw encoder - decoder without dependance

Postby D.J.Peters » Oct 29, 2018 20:00

I would like to see a version of deflate and inflate
without any dependency only a *.bi file.

it's a pert of zlip or libz I don't know.

How ever thank you for your LZW port.

Joshy
marpon
Posts: 250
Joined: Dec 28, 2012 13:31
Location: Paris - France

Re: Simple lzw encoder - decoder without dependance

Postby marpon » Nov 03, 2018 18:12

D.J.Peters wrote:I would like to see a version of deflate and inflate
without any dependency only a *.bi file.

it's a pert of zlip or libz I don't know.


may be a good alternative c source here
https://github.com/richgel999/miniz


no time now to simplify and translate to FreeBASIC
marpon
Posts: 250
Joined: Dec 28, 2012 13:31
Location: Paris - France

Re: Simple lzw encoder - decoder without dependance

Postby marpon » Nov 06, 2018 11:18

for the ones interrested on better compression like zlib, an alternative without any dependancy :
miniz is a very complete code in c.

a bit complex to translate as it is to freebasic,
so i've managed to simplify it in order to get only the main features compress / uncompress (deflate/inflate)
it is done in minz.cxx a single include file for c, prepared to ease translation to freebasic

can be found here: on my github fork https://github.com/marpon/miniz/tree/master
get minz.cxx
test file ex01_minz.c

right now, i do not have enougth time to translate it
but if you feel ready to translate it, please do it and inform me here or via email marpon@aliceadsl.fr
dodicat
Posts: 5221
Joined: Jan 10, 2006 20:30
Location: Scotland

Re: Simple lzw encoder - decoder without dependance

Postby dodicat » Nov 09, 2018 21:06

This LZW is much slower, especially the pack(compress)
But it can be used for small files, e.g. passing files to the forum.
windows only.
Example:

Code: Select all

 
Declare Function CryptBinaryToString Lib "Crypt32"Alias "CryptBinaryToStringA"(As zstring Ptr,As Long,As Long,As zstring Ptr,As Long Ptr) As Long
Declare Function CryptStringToBinary Lib "Crypt32"Alias "CryptStringToBinaryA"(As zstring Ptr,As Long,As Long,As Byte Ptr,As Long Ptr,As Long,As Long Ptr) As Long


Function Base64Decode(s As String) As string
    Dim As Long  Length = Len(s)
    static As ubyte b()
    redim b(length)
    CryptStringToBinary( (s),Length,1,@b(0),@Length,0, 0)
    dim as string result=string(length,0)'+1
    for n as long=0 to length
        result[n]=b(n)
        next
    Function=result
End Function   

Function Base64Encode(p As String ) As string
    Dim As Long L=Len(p)*2
    static As ubyte  s()
    redim s(L)
   CryptBinaryToString(Strptr(p),Len(p),1,@s(0),@L)
    Function=*cast(zstring ptr,@s(0))
End Function

Function PackLZW(Txt As String) As String
    Dim As long c, d, l=256,i,lenTxt=Len(Txt)
    Dim As String Result,w= Left(Txt,1)
    Dim As String Chars(lenTxt+255)
    For i  = 0 To 255 : Chars(i) = Chr(i):next
    i = 1
    Do:d=0
    Do:c=d
    If i > LENTxt Then Exit Do
    For d = c To l-1
        If w = Chars(d) Then exit for
    Next d
    If d < l Then i += 1 : w += Chr(Txt[i-1])
Loop Until d >= l
Chars(l) = w : l += 1 : w = Right(w,1)
Result += Chr(c And 255,c Shr 8)
if len(result)>Lentxt then print "unable to compressed":exit function
Loop Until i > LENTxt
Return Result
End Function

Function UnPackLZW(Txt As String) As String
    Dim As long c, i, l=256,lenTxt=Len(Txt)
    Dim As String Result, t,w,Chars(lenTxt+255)
    For i = 0 To 255 : Chars(i) = Chr(i) : Next
    c=Txt[0]+256*Txt[1]
    w = Chars(c)
    Result = w
    If LENTxt < 4 Then Return Result
    For i = 3 To LENTxt Step 2
        c=Txt[i-1]+256*Txt[i]
        If c < l Then t = Chars(c) Else t = w + Chr(w[0])
        Result += t
        Chars(l) = w + Chr(t[0])
        l += 1
        w = t
    Next
    Return Result
End Function

Sub savefile(filename As String,p As String)
    Dim As long n
    n=Freefile
    If Open (filename For Binary Access Write As #n)=0 Then
        Put #n,,p
        Close
    Else
        Print "Unable to save " + filename
    End If
End Sub

dim as string s,k
do
  read k
  if k="end" then exit do
  s+=k
loop
s=base64decode(s)
s=UnPackLZW(s)

savefile("Picker.bas",s)
print "File Picker.bas ready to run"
sleep

'original .bas file compressed by packLZW and encoded
 data _
"IAAgAA0ACgACAVQAeQBwAGUAIABzAGMAcgBlAGUAbgBwAG8AaQBuAHQAAgEAAQAB",_
"QQBzACAAbABvAG4AZwAgAHgALAB5AAIBRQBuAGQAIAAFAQcBAgEnAFcAEgFkAG8A",_
"dwAZAWoAbwBiABoBbwB0ACAAOgAjAXgAdABlAHIAbgAgACIAdwAtAS8BcwAiACAA",_
"TABpADQBIgB1AHMAPQEzADIAIgACAUQAZQBjAGwAYQAMASAARgB1AG4AYwB0AGkA",_
"HAEgAEcAZQB0AEQAQwAgAEEAbABpAGEAGQEiAGIBZAFDAEYBKABCAHkAdgBhAGwA",_
"ZwEZAUEAbgB5ACAAUAB0AHIAKQB4AWcBewF9AX8BUgFUAVYBWAFaAVwBXgFgAVAA",_
"bwBwAEIADQFwAGcBaQFrAUABTQBlAHMAcwBhAGcAZQCSAWUAcABxAXMBdQF3ARgB",_
"NQEdAYEBpwEbAR0BIwElASAARQA7AT0BbgA6ATwBPgFAAUIBJQFEAUYBSAFKAWcA",_
"ZABpAE8BUQEKAFMBVQFXAQgBiwFdAV8BPwFfABABEgE3AWgBagFsAW4BUABpAHgA",_
"ZQBsACIAcgF0AXYBggF6AXwBfgFyACwApAHdAasBHAFnAOMB3AGmARkBrAFnAKoB",_
"GQFVAO0BrgEmAbEBtgG0AcQBiAHHAVkBWwHKAWABXwCeAXQAbQBvAEwBCAHRAZcB",_
"bQFjAUMAdQByAHMAbwByAI8BRQEgANsBpQHeAYQBjwHPAT0B7wGoAWcAhwHGAYoB",_
"/AGNAT8BTgBvAEMAHAENAmwABQKWAWwBRgAMAWUAJQJuACcCZQBxARoC8gH4AR4C",_
"yAEgAssBIABTAGMBLAG6AXcAVABoAGUAbQAIAb0BQAFVAHgAQQJDAmUALgBkAGwA",_
"2QGVAdIBQAE8AnQAPgIuAUACQgJEAtoBpwHfAYUB4gGnAXoAcwB/ARIBHgHhASwA",_
"YAJiAnIAZAJeAhoCTADnAQEBAwFxAkQAaQBtADsCaADHASYBpwEYAp4BcgAfAQwB",_
"cwAhAX8CKgE9AIQChQKGAocCiAKJAj0AAgFmADkCYAFIAFQATQBMACgAdgAgAJcB",_
"dQDtAYEBlwFpAmQCFQEWAcABdQKbAmMCHQEgAGgAeAA9AEICeACUAikAngIAAaYC",_
"PQCcAh0BKAA2AC0AKAJuACgApgIpACwAIgAwACIAKQArAKYCrQIJAXcAYQCUAaYC",_
"WwAwAF0ALADHAjQAXQDCAnMAxALGAngAWwAxAMoCxwI1AM4CCgAMAXQACwI/AcEC",_
"CgAOASYBjQKMAcsBgwKKAucC6ALpAgIByQEhAlkBaQBsALYB2wEMAWYAIABeAXUC",_
"pwFVAHsCPQF9AREBEwE9ASwAXwDCAmIA6gEgAHIAYQB5AhkBUwBkAigCAAMCAwQD",_
"ZACaAX8BbwB8AacBSQD+AnwCPQAxAA0DCgAWASAAAwMUAmYABwMFAhkBFgM8ARgD",_
"MAAaAvkCFwP7AhcC/gJyAMICIwAQA2YAEgEIAW0AxQIoAGEALABiAAADeABfACwA",_
"YwAsAGQAgQEoACgAQgMtACgAYwApACkAKgBEA18APQMpAEcDYQBKAy8ARANiAFAD",_
"OANKAysASAOsAhwDFgFJAPQCIQMQAzwAMAAnAUICPwFhA2UAPQAwADoAXwMgAGgD",_
"PgAxADAAZANKAmcDIgMZA3IDwgIoAQgBcAAyAMICHQMVAysDfQIgASIBXQMdAxcB",_
"8AH6An0CYwBvAGwAwgIkASYBegMwAzYDCwFvACAAcADOARMBKABOAwADeQA/A4wD",_
"AwKAAcICcADWAdgBPQByAC8BKwCjA3QAYwBoAEwDXwB5AL8CmgN4AEsDNADCAkgD",_
"nwMLAikAPQAqAKMD1wGNA4UDIAAjAOECkwOnA5IDYQCUA5YDcABNAXQAsgOcA54D",_
"GwG5A6IDpANsAKYDqAOqA6wDrgOwA1oDTgO0A8ICvAPTAz0AtwPQA6EDwAPCAyUB",_
"xANvAMYDyANhAHYAPQGdAWUAKABcAx0DVwFqAzoAnQH1A2EAYgD1AxIBYwBqA8IC",_
"eABtABIBPQB4AGwD9AIABBIBPgAGA5ADZgMfAQEEbgCmAwcD/wM2A6cCCgQFBB8B",_
"PgDhA04DLQAxAC0ACgSBAXQDDQRhAKcCGgQcBHgAwgJ5AA4EPQB5ABYEKAQIBAoE",_
"ZQMOASAALQQPBAoEJwQTBBAEZAAsBBgEmgN5ABsEHQQHAx8EDAQoBCIEPQCvAz4E",_
"hAMdA0YADgIyBDEAggElA2UAGAMtADMEJwGVA0MEJgTAA0kESwR4AE0EgAMmAz0B",_
"PQAtAAcEPwFUAJUDAAQiBH4DhgMAAfwDPQD8AysATQRoBGkE9ANXAVoDTgBlAHcA",_
"LQN0AHMAKAB4ACsAWwQhASsAeQAxACkALgCLA3cBUwBoAH0CMQA2AIMBJgEyADUA",_
"NQDyA2kEhgP3A50BdAR2BHgEegR8BH4EeQCABIIEhASMA3YCfQI4AIwEIACOBJAE",_
"cASTBPoD+QOWBHcE/QJ5BHsEfQQaA5wEgQSDBIUEpASmBJEEaQR1BDsBHwExAMIC",_
"uwQ3AYEEwgJtA2gDagMwBPcBkgSWAu0DBgOeAYUEoAM9AFIAZwBiADgDcgBUA/wD",_
"ugKdAdYEXAHYBGIA2gRJA7kEsAFsAE0BqATsA+4DzQS4A3IA0ATSBCgAZgBkACoA",_
"VwHeBLoC7QTvBGcA8QQsAPME+QPxBOAEjwMgAF8DMAPDA8cDxQPAA3MC9wIJAwsD",_
"CAHtBD0ANgNwACgAMAAsAHEDDgVoAw8FLAAoA8ICBAVOBIEDIACbA68DwwQ2A54B",_
"EgFmAJUD9gI8A5wDFgV0AocDIAAqA14EfQJ4BPsCdAI9AEkAHgVUAQwBYQA8Ac0D",_
"rwPgBBcFXQRQBPsC1wNoACYFdQIVAuABrgT7AqcDdwBABYIBKgU8BSwFRAV9Ar0D",_
"2AFIBfgCiQMgAIUEHQXvAyAFIgV0AiwAWwUsAD4FLABGBVEFGQF8AyAAdQStBM8B",_
"egQkBJwDGwTgBEoEfQIUAyQDgQPGBGQEEgI4BRsEqARtBR8BGAUrBXIFlQOyA1AD",_
"vgRYBJIElwOuBHsEIQHPA+AEyQRlBZgEhQWwAz0AegM8AHwDPgCMBYcFqATABB8B",_
"vwRlALwESAQWAToFiAMZBeUEzARUAegEYQX9BJ8F4gGdASwA+QOkBU8EfAINBBIB",_
"LABmBIMDDgQhARMELAD8A1YFHwVuACEFIABaBVwFXgVgBcADeAVvBaUFewVzA5UD",_
"RgSABckEeAV4AHoFSwV8BRoFeAAbBAABqATzA8sE7wPxA9QFFgGXA8sDRAOKBa4E",_
"mQQhAYMEswMsACgA3gVnBYwFgwSwA6kF1gXnBOMDgQGVBZkFNwFXBB0DlgWbBQAB",_
"bQMQA2kCEwPHBP0EMgX5BRIDfAH2AjoA9QInBT0AIAAwAMIC7ALLAQYGdALzAfsB",_
"5AIcAeYC6QITBhQGFQYTBlIBJwVcAhYCfwEgAE0AeQBTAAsBDQE/AQYGbgFlAQ0F",_
"XAOdBSkF7QEgAHYAAgEuBgoAIAYtAm4AfwKlBHIDLAAyADYANQAsAE8BAgEMAaAC",_
"CQF3Aj4GlgIZAZgCbwJhACgAEAU7BjMAXAM/BnMAQQZlACYBlwFhAIQBmAO2AbwF",_
"MgUCAXQC7wNsBDIFIQY1BfADMgAqAHUAYgADAiUBOAMPBboCYQZjBmUGZABnBjIA",_
"SgMvBnMAYwYFA2UABwNfAGQANQVHBlwDIQWCA0MGGwLGBHQAlQMQBYwCSwR8AZcB",_
"7QGABpUDMwAzAD0GdQZRBugFAgFuAPEFMgSRBpMGVwThAgkBYwYvBlMAcwZkAAYD",_
"dwBiAGkAAQLFAl8AgQZfAFoGngHYBQoAIwDoAyAAHgVuAGkAZgB5ACgAowN2ADYB",_
"IAG1BjYBnQNwALgGnQMKAXYBZQBcA3UBfQKnA3QApwK/BigCTAO8Bi0AuQbGBr8C",_
"zQZXBMMGBQO6BrACYwDABsoGPQTNBtoD2gYCAeYDZADoA+sCWgTNBScDVAQgABAF",_
"JwBtAHwEbQB5AKEGowZwAC4AAQVvAJsB4QZuBeMGXwTGBSAAiwboBpwE6wbtBgsF",_
"TQIvAfcBrwaxBrMGDgUOBYMDNwZcA2kBkgZXBu8D5AXFBtEFGgPFBj0EggRHAxAH",_
"bgRfBboGbgTYBOgF4wFGAAIB9QUgB5YGDgacBmIAmwadBp8G/gakBqYGqAZlADIA",_
"qgbLBYIBiAZkA4EG5gZ4AwoAwgUyB+cBiQb5BowGCgDKA2MBDQeeAeQFgwMcB0UH",_
"IgeaBUgH8gUkB5oG2gIRAw4CCAFiAlcBFAFOB3YGeAZ0AHoGAgGeBmEAoAaiBgsF",_
"pQZvAKcGMgWqBgsHCAEtB+QFBgdXAzIANgY5BroCcgDrBA4FSQa4BDoDWQYyBT0A",_
"MwPwAj0BKABnB28GFQExBiIGNAZrBw4FOAY6Bk8BWwUmAGgAawcgAEsEiAc0AAgG",_
"cgInBT4CQgVeAtUGMgZwAIYBCgBWAFcB/QSUAQYGQwCXB3IAKACsBSwDfwEsAEAA",_
"kgdcA38HDgGLAxMBpwN3ATIALAAqAEkAcAACAVQCVgIvAUoCRAIoALkBuwJAAb0H",_
"vgICAbcHdwBeAXQAKAJAASUC4wNuAy0BPQHDAaoHsAa6BWUEfwKBApoBcAJCAWQA",_
"dABoAH4CmgFcADgA0wdzAFwAigQgByQCJgKMA2UAGAYFBSkFAwM8AQUDLADoASYH",_
"CgDIB0sELABSAEcAQgASAjIAMwA2ADcGiwY3BooEKAYZBhkBCgGWB64ErgZaBycF",_
"ogJqAqQCawBlAL4GPQBGAUABIAArAKwDoQcxAEsGEgiIBEgGKAMsAG0AcwAeAQYI",_
"oQLsAW8CiwNbAbYBHwh+BlMFgwONBj8GlwIrBmMAJwYvBkQA6QPAAwsIeQBsBG4A",_
"NAjCArEGIAA0CA4IEAj1AgwEqAQjCC4DKwAZA6gEPgYnBXAAfwI9Ae0DVAVIBvUC",_
"lQNCCLYBiAXaBZABYgCTAS8ICgDSBmIA+gOxAmcAKAAzALUCDgEoAGkCKABWA7oC",_
"vAK+AisAZAhWA18F6QRdCF8IYQi3AmQIgAFnCL0CvwJzCLoCZwBnALACowJeCGAI",_
"tgJjCH8BKADuAXUIaQhkCO4BAgHSBnMAcAB8CAkIXgi0AoAIqQKrAmcIQAFTCAAB",_
"cwBECEAB9Af2BygARgEmAB4DNAEmACIAvQefCHoIIACiCKQIBQN9AqIIKQAiACsA",_
"PgggAEgARQBYAKcIaACuCJIIdgB3CHAAKwAPCLEIkQJMAMEDrgiQApICqwIRCBMI",_
"SAYWCMcIcQOWCE0IUQgZAqYD6wRbCO0H6AFyAOQDHQOYBrEGwgL/AWMBAgIEAiAA",_
"QABtAM8CIQarBxwBEgN3AQcHIQFZBvQCbQAuAHgAPgDMBVMGJgHsCHgAPACaBDQG",_
"8QiuBi4AeQA+AIYGrwHsCHkAPACzBDQG2AcxBBwIewgiADwAiwjHA2UAPgBPCAkB",_
"5QSWAlQF6ARGAdgBTQGuBh0IDghGAcICzgcbAWMAawDCAkMA4gStAnAAdQDMAw4F",_
"NQYaCGcHQAc3AcICbgLWBusHGgPJBRYB8Qd9Ao8HHQNJCM8BQAFYACwAWQAWASIA",_
"OwBkCPMIKQA7AKMIPwlBCfoI4ARQAAkINwEiAFIAUAY+CTsA7wcdA0oJOQltATIG",_
"QAE7ABwCwANUCRMBQAFCAGwAdQAIAVgJLwPAAzgJEwHCAh0JXwY2Bw8FogNLCUAB",_
"sgi0CAABiAc/CbgILAA2AOAEWwd3AAkBfQgNBQ8FOAAaCAYJXwVwBxQFFAXgBGYJ",_
"TAnDCMAIAAEjAD8JiQmrAi0JNAMZCDAALQAzAHEHcgOUCSgDRwMQBSsAlQkPBXID",_
"nAkaCNEE0wQ7A9QIugJiAGYAkAmSBpIJmAmeCZMJlQlXA5sJnQmxCaEJgwlpB3QH",_
"wAN2AEUEVQYoAB4GzgcbCO0IvwmwA8IC6QQgAJ8HgghVAOoHCAFmAkAAuQhbADIA",_
"XQAgACcATwB9AmoATAE3Ad4IBAl7CfEIVwEmAeIB7gcgAPEFBgNdAa4GYwFoAG8A",_
"ZADCAnsIxQmgBygAyAl5AOsHywnNCdUC0QliACUJPwhpABkBRALYB+cJvAUZAWEA",_
"9QIHA24DawElCMAD+gPrCccJyQleAqYHzQnJAhsJ4whuAFsBHQkfCcADUwAoAqEB",_
"5gZsCQoAbgKQASkFEwHvAjsIDAg9AEMAGAimBJ4JNwCBAUsEPAjHCDIAJwoVAToI",_
"cwA8AD4ADwhGARcIFAjJCBgIywg/CA4BAgECCIAH1Ad/CQ4FNwA2BjwGCgDWB9gH",_
"IABACtwHLABCCjAA4Ac2AAIBuQFXAsQHxgciAPEHCwJiBWkAHglPCRICnggSCSQI",_
"+wKiCBIJ4wNzAIMEwwGHCQkBhAZ9AnoAfgaIBk0ENQdrBlsBbQZJA2gJkQmOBw4F",_
"NABuBDYAKgB6AFcDNgA2BngKigR7CisAOAC6Ai4IfAo6A6gJwAOSBrwEegCJCJsH",_
"ZgB3By0CeAfmBwoAkAExBCIAzgRXCi4AxgZ0AEYBfAaLByUJJAk3AZcBIwCJCmcK",_
"pQosAHMAAgFVAfIGCAGlCjwKPQCLA20ANgNmBhUFCgArCCEIpAJpADYIaQIMAXYA",_
"Ywi7AlwAwAcKAHMACgVpAG0GgAIaA2kAgQGvCJgK6ARzAJsKOwFmCm4JIgCHCU8J",_
"NQdGCQIBZwoiAEoJmgH+CSAKAQaVA5kFogbDAXMAFgq0B+ACrwHZCMQKWAdyAHQA",_
"OQHEAUEAVABBABoFAgEmAEgARgD5CvkKQgBGAEIALAD3CvoK+QowAEUARgD/CvgK",_
"+gpFADMARQCwBwAL+gpEADQARAAMCwcL+QpDADMAQwAOBQ0L+woxAEEARAAGCwEL",_
"OQBEADkAOQAeC/oKOABBADgAOgYBAwoAGQtGADcANgBCCiQL+Qo2ADMANQBDADEL",_
"RgA1ADAANADdBywLMwBGAPkHNwsyAAsLOgYsC2sHigQ3CzEAOQtBADcLMABCADYG",_
"KgsZC04LTgsYCwcLBAswAEEANgYNCwsLVwtZCwcLEQswADkAXQsUC3IDQAokCxwL",_
"MABMCiQLIgtoC2ILRgAoCzAAfgoOBVALBwtMCjkLVAv5CjULOgttCzsLMACVCXcL",_
"Pwt+CoIHJAuOBDAAggsNC4oEMABJBg0LXAtyA38LeguNCxsDiwt2Cm0LjQuQCywL",_
"RgBDAP0KNwtGADEABAs3C0UANgALCzcLRAA4ABELNwtDADgAFws3C0IANwAcC5EL",_
"EwtGAEEANgAiCzcLOQA7C0QLsAs4ACwKfwv5CkIKNQs3CzUARgA7CzcLNACAC8QL",_
"hQu4CwELiwZHC3MLAQsyAGELSwtFC5YLEwtCADEARgBtCwQLnQvYCzIAMQAXC38L",_
"EQsbC20LFwsxAGULDQscC4gLcgv2CgcLIgsVCG0LKAsxAIoLdAtyA0UAbQt5C94L",_
"JAt8C2ELfwv5B2wLfwuEC3YLJAuIC34LrwsCC1gL8QsCC44HBwzXCwkMlAuVC7wL",_
"FAuaC5cLnQsFCywLoAuiCywLIQumC80L+gpDADkAqgssC0IAOQCuCywLJwu0CywL",_
"OQA3ACgLNwsoCzALLAs3ADQAvwssCzMLwwssCzUANABACxsM+QowDI4ENwszADkA",_
"RwtFC9cL0QuwCzgGbQv9CoQLfwsECzIAdgokCwsLMgCGC14L3AvXC+kLKwsHC+ML",_
"RABtC+cLWAt/C+wLaQsNC+8LTAwNC0IK8Av1CxcL9At/C3wLUwskC/wLZQsbDIQL",_
"cQsBDH4KAwyLCwYMlAsMDI4LdwwkCw4MDwyYCxEMsAs/C54LOQxGAEUAOQAXDLAL",_
"RACIDBILAQtYDB8MsAtDADIAIwywC0IAPgwjCyQMtwu1CzQALQy5C48ENguCDC4L",_
"NAywCzYAOABACzUMjwzJC/oKOQtADLALmQxXC8cLRgyTDFMMTQw/C/cLGwwLCz4M",_
"bQsRCzQL4gt9C9ML+QocCzIAagwNCyILRQx/CygL3AttC2MM9wsNCzULMQBpCxsM",_
"OwsxAFAM+Qr8C2cMgws5C/oLcQxwC5QLWAtzDAcLegsKDN8MDQyVCwQMAQuZC/4K",_
"lwsKCxQMsAtFAEEAhgyLDEYApgsYDDIAjQzlDDQAkQwBC0IANQAmDLALQQApDCkL",_
"6gsfCzgAmgwBCzgAOQAxDLALNwBCAKAMAQuhC6QMoQxPDKcMeAs3AKoMAQs0APQL",_
"QwwVDc4MAA37CjQAcAxaC8IL3Qz5CrYMsQwNC7kMWwwkCxcLugx/CxwLfgtcDDkA",_
"wAzuCzUASAzkDGMMJA0HC8wMJw0NC9AMYQwHC/wLNg35CoQLOQ0HC4gLHg3eDNwM",_
"dgyJC08LGw3hDI4LDgybC0QAfgwBCzgLngsVDEQA7gwICxALigwOCx4MDwxDAEQA",_
"rguCDEMAMQD7DPgMNQAqDCQMKAwPDCALBw0fCzoLPAu5CzML+gcuDEIAPAwuDNwL",_
"+geCDDYATgsYDfoKOQavDDML2As4Cz8NgwyOBEIN+QoRCzUAIQ2YCzoLygwHCxwL",_
"MAxKDVUM+QoiCzMAWAzFDIkNAAxiDIULjQ14C48MPA06DDgAMQCWDWsMNgBJC20L",_
"hAuDDYgL2AwbDFwLnw0LDIULSA3SDFMM4wyXC1AN5wx/DKEL6gwBC0UAvA1aDSIN",_
"NQAaDBsNhw1CAPQMDgtXCx0LLAtDAPoMlQySDDkAZw38DEQAAw36CkEAjgQ2CycM",_
"NgALDSULFQt4DcINbgsQDTcLrQsUDfoKNwCVCXwNMgujDVELeg2BDTYARQ0iDTgG",_
"CgyIDScNGwwXCzINWQwPC4YNRgAiCzQACgwoC7cMfwtCCi0NJAs1C7sLaAyhDYMN",_
"+QfNDJENDQuOBBAFfwuqDdsMjwt6DI4Hsg16CxQOTg21DVENBA2BDN0NRgBCC74N",_
"gwxCAPEM6wwWCw8MXw33DA4LYw3MDeUMOADPDfgMLQsPDPkMvwuCDEEAQwDZDb4M",_
"NwxyDbALIAt1DToOpQ05Dh8LcQPmDW4LnA37CiYLgQ2jDAoOVQssCkQOEQvkDbsM",_
"swv2DcELbQsiCzYMMQ00ANgMmg2VDWUMiwZJDqANMgDlCz0NpQ3VDAsONQAxAK4N",_
"iAtEDlwLmQ3eDBMOsQ3iDJALggzwDBkO+gqFDLoNFQ1XDSINRQAiDrsNNwDFDYcN",_
"sQvIDYcMNwBkDcYNKgxhDTcA0g1jC2wN+gpCADgANg79ChUIPw7TDdQNEQ2xC2UO",_
"kg6+DHIDQg5cDVQMUQsiDIENLw3bC0YO3wtfDr0Miw03AGsOvgxEADYA+A1UDmMO",_
"BwsoC2UOXQ4vDpANfws1CzMAYA5eDkQO+QfHDP4LZQ5eDEMNfgroDUYN2gx4DLAN",_
"nQ5sDscOegwXDn8MBAu3DVINQgBUDX8MNwB4DtMMew4IC0UAfg6DDCIMHQuCDAkL",_
"hA6HDUUALQ4OCwINJQ40C9YNjgwPC28N5Qw5AA4N9Qw8DuUMiQvcDZINjA5YDEIO",_
"QgD4Df0KrAuBDe0M2wtBAKkO8AzPC1gOVgwwAKkL9g3UDrMOIgtMCpcNpQ3IDDAA",_
"9Q22DjUOig07CyoNpA0EDtYMMQDBDMEODQ7kDFwLwA4IDLwMxg6KDXsMmwvODpsL",_
"0Q52DiUL1Q7CC8EN9A76CjAA2g5FAPgOgQ67DbMLKg4IC+QLlQ5lAYkO8AyoDugO",_
"iwwzAI8OQwAJC/MOyQ2UDqcLPg6nC+UNpwsKDPoOrw4iDf0KAA8LC0EAGg+HDc8L",_
"sQzzDWALCgwcC0gOLg0vDDENfg3/DQ8PAA81Cx0NewujDO0NgAvPC7MODA5EDooE",_
"ZAyOC1gLuQ6vDSMPjgcjD8wOUg0mD7UNGw4uD/sKKw87DpsLNgDaDj8LJw76CikO",_
"nwviDpUOMg88D4kPnQzdDUUANgzrDggLiwaYDoMMyAujC0UA4g2HDRcLQg5EAFUP",_
"+wqkC4ENXg2zDgsLjwy4DMAMrg2cDwAPHAsGDVMOzg2KDSwMsg1CCnELEQ/FC7MO",_
"FA9PD2oPuQ+OBIIHDg6lDSMPWAsDDyAPdQ8hD8sO4wxxDvsKTw3SDtAOKw+/DJsL",_
"fQ58DDUAhQ/TDOAOAguGDo8PRQCMD/kMPw8IC7YLkg8iDeQNlQ9FADQA8A6TD5oP",_
"gwxBDp8LcA7CDSEORA4EC18LSQzzDB8PAQ+NDrsMQQDCD4AOzg2uDzgAaQ8sDAAM",_
"GwyzD7INNQuyDgUOPgttC7wOgw28DwoMbw/AD2ALSA1MDKwNjgeuDSQPlwvJD5cL",_
"vA0pD3kOHw7wDNcODguDD0MAYA0cDiEMNw/TDeMOdA48D/kNiw4lC48OLQvuDgwN",_
"5Q99DcwLHA5KC5sLAA/9CpwLgQ2gC9sLIQunDyAQuwz1DysNXw1wDBsMIgvtDjEN",_
"QApiD4IPZQxmDWcPtQ6kDUEPpw0yDWcOpQ3/D0sNWAv4DXoLExASEG8ORgz4DJsL",_
"gwwZEIMMKw96DrAHcQ7ZDnwMXw00D4sM1Q+YCyYQFAsoENsPJw8sEEEAOAwcDkcP",_
"lwtBAOcP+Q2tDJcL+A83EFIP2w47EMMOVg+jD8gOYwtCAJ8PHAv3D64PrQ+XDboL",_
"Dg82AIMQOAvKDfgNOwtmD/sLMwtVEPQOvA9TEKYNcQ+MCxIOEQ6SC6IQ3gx4D1IN",_
"cw4EC2AQ5AxgEIQNMQupEB0QUA2LDTELmQuADrMQkw0kEPwKbgsRDbkQiQ5BAJ0N",_
"qxA5AKANMQvBEMYLGQs4AEANEQ3HEJwLmA43AAUMMQvNEIMNPwv9CtgLOABWC4YQ",_
"8AzRDrINQwAhDrIN+A7eCysNJguSELYLawvFDDkPbQuCDwsPAg4GDbQMGw0dDXwL",_
"+ws4DqcN5A8AD0kL6At6DFcQDxD5EE0Nxw8cDhYQEwupEMsPUA+tEBkLsRAdELQQ",_
"fg65EIUPvhD5DSQQxBDXDy4PyhCJDtAQKhA2AMIQGQsVEcUQEwvBCx0OEQ3FC8sQ",_
"MQs+C0IMIBECC9cQqRCfD+MP1hAkC9ENWwt/C6gL8A8kC6wL3xBmC9IP4hACD8gM",_
"uhCzDnoN6RDLDCgLRA4wDO8QawyUD6cNTwH0EJcOEA5YEFsQ1xBZEFwQfAz+EA4L",_
"UA8xC7kQeA4LER0Q0BB+DhsRIRAuDyER4A4wAPkK4w4YEC8OTQy5EIsOhAwWEVUL",_
"0BAuEOMPyBBNDCERMhD0DpkPzhBaC10Rgw1lAdMQpA4pEQ0LQwDUDt0QpQuyDfcP",_
"MhHCDOEQsw78D+QQJAuoDm8Lfws2AAQOtg5JC7sOwgtzDzIAgAunDdEM9BAzAPYQ",_
"rA3QC/oQoRATEKYQrBBzDrEQARE3EAMREwvEEC0PFxFjCyMRtRAZC9YLDBFNDKkQ",_
"XxG8EEkMyhBkERsR2Q0JC9MMRQ9VC3MR5Q9WDfkK4g11ESIRJQ25ELgMxxCfD14N",_
"eBFWDB4ObQsKDS8RGwz/DoAR6ws0Ee4LlAzIDF8OAA9+CjsRBwvFC3kL+wvjD5AR",_
"RA9sD8gLbQsVCPYQiwuZEY4LlQkTEOkRTBGuEIwOURFQETkMyhB4Dh4RHRBzEcUN",_
"Mg+qDk0M0BCEDgsLXhGnDIgMvQvfC7MRjg/0DkQAIRHZDbQQGREUC7kQ5Q96Eb4R",_
"kg41DnERyREkETAR+wrLEbkNsw40DiwRZgswAC8RwgzzDKYOjg5nC/8NVw74DzkG",_
"iBECDjUA2RE6DDkG7BD0DjMALwyQEe0OaQ/dCzMNhwvwC2kPBQ+gEIsL6xHoEaQQ",_
"JBH8EC4PqRBzDgsRoRHQEHgOkREBD00MsRD3EdAQJw5wEa0RJQ20EA8RJQ0YEdIN",_
"WAy/EHkRCxEIEhsRLhAXC2sRDQuIEA8SMBHKEHwQBwv5DBQSGwx0DXYRZgvtDIMN",_
"WAsbEsIMwA2yDSwO0BG9CzMP5xAhC/gPNQCJD7cPLw57C40RBxBBD5ARcQ3jEZQO",_
"4xHyDpQLQgpYED0SHQ+NEosLnRFDEs8Okw1QERkLHhFXDWAR1w7iDqgRchH5ERsM",_
"IQu3ECoRSRLjDiAQARIoDUkSiw5iEo8RMBEeES4QbhIcEWYLyhBuEeYLHhFmEpkO",_
"FBLCDLYNUw4YEsUMvQ3uC1kNyAwGD3kSIxLkDH4KhRHLDLgOAA8dDSsShA/cEYML",_
"6g6nDfgHNBI3ADYS3gyZD0MQSw1+CowSPxLXC48SpRC0DRMLsRBzDvIRKQ9JEpgS",_
"tBCmEVULHhHFDcARJw4GEqESWhL+ESgNrBHSDSEMWRJnEnMR2Q0nC7gR5Ax5EGAS",_
"6wsLEeINBg0SEpMNrBHuCxYSxQzVEIMNoQ1xEnQLNwDNERsNkRB2EkYAihHEEssM",_
"gw74DzQAqAvKEv0L8BDOEgsO3g/jEZIR1xBJC9USAgtEAOUR3gzaEpQLawcTEC0T",_
"7BEEEe4RpxGqELUMCAtaDaALVg8qEUwSpA75EXkR+xE3D8QN8hJhEvQSKw0YETIO",_
"Gw05ALkQ2Q0/DPwSXwzKEOUPfwljEmIMxBC2Ei0LtRL/DZERnw+RECkRGwwvCw0T",_
"MgsdEgIQ0A97C4AOews2DwcQpAsAD4sGzBKQDM4SbgxmDnMPYw38Cw4OlBHbDCkT",_
"AgtKCywT3BKwDZwRQRIxE04RMguVElULABE3ExsR1w6eD5wSXgtzEScOyg3wEmcS",_
"DhH/DPQOHAumEuYLqBLcDzkAGBHZDakLTROwDkkS5Q+tC1ITdAshEVUTkRBpEhET",_
"/ApaE7wSJAtiDgIQvwz1CyASewtBABYT2hEpDgcQzg2aEA0LlQlsEz4PIhNAEYcL",_
"4Q+IEiYT1ws/DDkSjgdYEC8TShHIE8YPpg59DIATwguCEyINUhE3E3MRhxPrEi0R",_
"ThLdDhsN9hJREo4NuRDjDiALlBOwDqgM3A8GDqsSYgxdEpIOswv/EngLhg+5ERIN",_
"BBM4C3MRZBNsEjoNKA97C3sRewsyAB4SPQ1DABMT+QfEEhsMlQnHEgcLkAwoEgsO",_
"MBKmDqINHxNDDTES4xGRDpQLpgyKEpcRSw3lDZQLcQMTEBcUMBMTCwkSkxLPE6oQ",_
"WgtFEloN4hLpElYPiRMUC1gRahCsC44TvgzKEN8TxBDSDTgAYxHcDw8TZhEBEvwS",_
"XRMeEeUP0g+hE3gLBhN8DfYMuBLaEcEQnw8wDMgROgzKEfsLiQyzDrgO/hOQDJIQ",_
"8wwDFEAN/gyTEcwSGQ8LFL4RkQ+IEnMTHQ90DQAPcAt3E90SOxLeDBkUjgtkFMsT",_
"RgwcFDEL5hIFC7UMRxIiFFQRWg39EyYU/Qq0ECcONA4rFPkN3hOnDCYL4RO9CwsR",_
"RxP0DqwONRQ4C7kQLhAQC+sTwgusEeINMBLwE0kSCRDODqcNQw9YDxsNkAxfEx0O",_
"DxOyDfgHExNrB7MTvhEdDPgPYw0GFEMNKhIJFIESShHQEnEPWxSLC9QSXhT7DTkS",_
"nBQWFHsTZhSQEn4TGxQyExMLaxT6Ee4NKhGlEXEUCxHFDfgOPROODcQQhA4iC/IS",_
"GwwCDX0ULQtGE9wPOQaDFDUAGBGGFE8TpwwzALkQixQ+FIMLVBPXEF8O9BMEFKoT",_
"Cw4WDZkU+hOyDdYLExPdC50UnAtFEOMRZg24E0MNixF6DJMQEBS+E94MMxKUC4oR",_
"rRRgFLANWBBmFKwNsxTfEswTuRBzDnMRARFqEaMRhw0YEdcOjROyEGESIRFZEeYL",_
"rBGEDsoQuhCGEbERqxPEEIsO0BSDFB0NnBO4EYgU3BQfERsMog3wE2YOQRS+EcUL",_
"nw8VCEYUnAtIFAEMYROUC4sNlAvsDKMNrA2fFNsMohQCC2kNihJXFNcL2A1zDzoL",_
"qhTeDEQRLBMTFPQOSQ1YEHIDfRN9EwAVtxQvD9ATgwyXEiIUhhNlEBsNERILFWcS",_
"SRInDsQQ3BNeEbEQ4w6DDsoU7A33EngLBxKSDzcMNxQbDYsGHhUbEeINYw0jFfIT",_
"Dg5dEZ8PXREqFQMLlhQdEhATRRX9E6YOTQvoFFcLURTXCywOXhSIDnsVLRKUC1kU",_
"6BFbFKwNEA0WFPkUQQ7iDEkVGhSMDkwVnhF8D1oL5hIiFEkSCRX2EUEQwhS3EHgU",_
"KAtCE3QLRBMCDrEQgBQ6DcQQ2Q2MFAoSHQ4YEeUPzQw8FNcLwxF8DYkLJRXXC9YL",_
"chUTDLMOiQt2FaINFA7dC3sVGwuSEIkLfxWJCzcVUwzMEnIDbhNLDW4NDQxAFSQR",_
"whNyA/kUmg6PFdQV+xDrDy4PARWTEkMSBBXmEjMAohKHDd4VeRH2ERoD5guxEL4Q",_
"agvEFJMSoBVuC90HABBzEeQNAg60EH4K+AvKEBoTpA3TDJMSjgRADXwNigS+EZMS",_
"Vwu+EU0NAgvuE1MM0xCSDvMLPBXLDlsLpwxyA18LDBYwD8kVyw5nCzQAyw5rCxQW",_
"kBJvC94VrA39C+EVpRB5C1oNSBV/CSAWfQt+CuQVpRCECyYWJBGICykWsw1HFREO",_
"GxZ7E50R2RWyDC8PTQzmEhcWUQyHDacMXxKYCzgWqg77ChoWSBPEEFgLJAvrFdUQ",_
"hhHvFXwNNQsyC2UVsxHUFJkTPhYcEdMMURb9FawVHQ8BE/8VcxHRDMsOkA4jFtkL",_
"LBbzC8cMyw5fC3YOcgPeC0UAEhaMDB0PYAthC1kWbws3D3IDTAqSD8kVFwsHFswV",_
"Dxb8C1EWcgOECx0WKhaBC2sWXAtgFkgV1RVnFLwLMxYfDYYPNha/Dd8VPQ/kDDwW",_
"ehFmC7EQQgCSDsYUsQtRFusVLw1IFr0Ldg5LFhQTahA7C3gLkxL5BzoM/gpuDF0S",_
"3A9VFpER9xBADXoWWhZZFpAOWRbZC3AWAwvcC3MWYROzEqUQ4wutFucLIxbsC00N",_
"bwtoFpASTArcD3QWVRMhFgUPyw78CwQWexY5C60WiAsjFoEWxg+QFdYVrwwcDDQW",_
"QA3kDP0Rgww3AIwWXw0oDfYR3A+TE3QU6BW+DOQTGxEeDJoWbguTEp0WCQ3kDKAW",_
"FBN8DaMWkxDWDDoMwRbBDkcUqxY/C7YW0wwCFmsSChYdDtkTRRW0FsAMYxZPDLYW",_
"FwtLDGkW3AsVFj8MahBkC2UOsxZjDA8WzAwaAxsWfAv2FiQR/AuzFeIR3BaQEogL",_
"rRZcC9AWCQzSFokLhRarEAEV3A9DEh0OihaDDJIPEQubD98WFAtqEOIW0Q7kFrEL",_
"dg6YFmwUGw1CCl4RGBeTEJsW9BWBE/cVFBMsFvoVOAt9FssQOgwdF0YN0ww+F3ID",_
"ZxUCF/0KNAv/FvwHkBK2DE0NEQvzDMsOCBezFr8MDxbDDL8WZQ4EEsIWxRXLDswM",_
"SBfHFmUWJBZNC8sOhAu2FogLDxYhFyQXFRfLFd8MJhdRC9YWiBY6DCwXMg+MFvQL",_
"MRfwDFEW4hZDAAQWlRYhDEUWWBGTEjwX+Q3cD50WRxY6DS0ULBbyFi8M9BYUEzcP",_
"VRZ8ElcWeAt2FjoMahf9ChYN/xb2DAoWSwx2FhEL+w1bF30LWRYsDcsWbBaqFhgW",_
"Mg0RF4ULaBcPD2INDhduDeINcgMIDoIWhAtZFogL3BYwFtwMcxfCF7QUSxUUC9cW",_
"wgt8F9wPLxfoD44W1BOnDIMXNw+GF+oVWBE+F4sXRBbLDLQQ7Q5BF24Lkg6TF0sL",_
"phZCF4cLGBE5BvkWwA1cFjgLnBcxDv8WZQ6jF/YVkBKmF78XyxUXC6cXkBIsDRsX",_
"lA2tFsYMthdCCjgGZhdiDWoX0Ay2FggOUxUCF4QLxBaJEksXQBLBF7QUIxcMGCUX",_
"xBfVFocNxxcEFtoWARHLF6ALgBdlAZEWhw0sFpUWhBeIF/sKiheLE5wWdRQUFs8M",_
"yhCEDvIWxxCVF/wPcQy9Cw4XCxGIDucXEw1cFpMWahcEC6wOaxYLC9gNBRfmF5AS",_
"9A0PFo8Nthf6DfkXiQ1ZFgAOIxYDDiMLFhePEMkWpQ22FgwOTQ2ICxsXrQ0kFyIX",_
"hQsmFzkMARVqECoXCRiEDTUWJQ3mEl4YPBZWDRsYgRc2Fx0MIBj9CmgW7hVAFvEV",_
"vgw3D+8WhQxDFwYNLBioFhgRjg75Fg8TMxjtFcsV/QouC/8W0g1hFjkY7xc4BrMX",_
"9A0bFxwL7BeQEvoNthb9DToXAhcADhMXjwxZFjsLTwxOGGMNbRdlDoIWUxjGD1gL",_
"cRcTDoAWoRgQGIYWDgvHF5IP2hY/C34X3A88FpAPZhiIDOQMlRYPC2oY/RPpFhUL",_
"bxj6DtsXdA1DF1QPlRdBAFQWGBEgC5oX+Q37FvkNrRb9CpkWVhfqFqMXowwFF60L",_
"qBcVEWkWPBgbFlQOsxYoCxALyw5CCvQXHhYVCw8WlhgbFwgOahcMDg8WiAsBF7QU",_
"WAt2FhUOVhh3F9QLphh6F/kNLBfIF2EYIg3mGAQPIg2SDuIWUA02F9ENtBh2DosX",_
"kBbYF/sKdg7vFqwLQxdOC+QMRheyEy4Ylhb5FsEQ5xdJEzUYhA4IFj8MzBizFhEL",_
"fwlrFhcLqA7SGLMWVA62F7EOghbaGK0Wtw62FpYYBxi8DnQXBRiXDssO5RieGHAL",_
"6xgOGNAWxReDDMcX3xcbDakYXhjLFysX4hX0GGYY2Q82F5kPahgaGJoNBxW4GFgM",_
"7hbKECAQQxfKDZUXxQ1VFogQ+RaNDucX+Qw1GLsYyhgKGRsWUw9YF88LDxYXCywO",_
"aRbtFowYmBMfGY8EThdsC8UL/henF0wYVRelELwOdhYMDhsXbw/7EFgLXhiNC3YP",_
"JBezF7UUkhUiDccX2hWOFC4XjhRRFjwW1ws+GZMSlRY/GV8MGxGiC20YHBBGGU0W",_
"4BVLGXYORhfbEAsZABlMFz0W5xePDGsW+g43GP0KdhZTDwcYEQvXF7kWYAsjFlwP",_
"rRYKD0UY5BcbFr4LkxgdDcsOFA91GSQWzwuaGN0LLBmlDYIWXAu2FnoLQRYCF7wZ",_
"7Bh7GTQZ7xgpF44UfA06GWMYcxHyGI4N4hIpGcIMxBC8DWoY7AzpFogZNw20EOMP",_
"2xd/F7kTCBVqEEYX3hbiF4cNfRhFFVQRnBdnGJAS/QooE/8WlhkkEQsLxA0FF+cV",_
"PxhcC2kWYQtrFgoPahcoC9EYZBc+GNwY7helEBQPJxmKEbYXDA5qF28PBBjnGMgW",_
"Dhh5GXcZpBjvEXwZ7xhcGI4UkxI6GUsYVBXJGV4Y4hbKGZ4V2BaJGU4VixfZDrgY",_
"0hmQF+APQxeuGOAXgwxIF1UWQRl0DH8O5xdlGOYZIQ6xFvAMTQ2lDw8WEQsFGRsW",_
"nA+yGawPshkiC+MODxeUF2QXihH+FzkLsBmjDGoXCBBrFrwPUhi/Dy4Zsxa/GQga",_
"wBkCGfoKxxdsGDcZjhRqEDoZahCDGeEW4hJ8DZUW8BgbGl4R6RYtC7gYFBNIGagM",_
"QxcYGlIW0wwLGTsZlxltGiQRiRYuGnoO/xaLGcsVCwurDgUXHxjwGVQZ9RdfDagZ",_
"7AvLDiwMZhmzDxsXAxDxFwIXlhCtFvkHbBnPFTINsxdvD3EXwQ8kFyAXEhBZGOwP",_
"AQtTGvEYPhdYGoAX8AxmGJgLNhcZDusVsQs0DckZNw+dFl8a2hESFZIP8hZjGmQO",_
"fQ1sGgcWCxE4C+cXtBobFjcQghYECxgYVhf6ExYZ8wwbFxcLUhl9GrILDBfaF68X",_
"GBmsGXALBxgDECUZjg54FjMMmhgJFx4XVBAuGVQYlRowFpUaCxp4F1Ia7xh2DqkY",_
"dg4vF6kQMRfiGuUVrBCxGMEQ5BqwDsEL6Ro2FLEQbxjuGiEa8BphDnIOkhnBC7QQ",_
"Lhj3GqwNvhD3GuYZ/BqlEG4LGQ7zC5IUYxYGFVMMWAzXDnID0Q7FDZoOMw/0GRgT",_
"gRrJEssOFRGCGA8PcRCQEpkM2Q25F4kNbxkyDeQYSQ/AF8YWgxaUGjoLUBqiEfkK",_
"xxfeGpER7BoBD+YaWQ/0GhsY8hqeFf4a/hHNE5oWuRBvGDcbIRoLEfcVxBAIGcEL",_
"PRvfGUAbTBfKEFwWRBvmGScVChYKE2MWQw8jFv0TJBRTDIgQCxtXC+EQFRbLDYEa",_
"OQ8SG9ENTQ36DIsOSBU9FckWGxtIGvMQLBkrGQYa1hokGw4YIBczGd4afw6QGJYV",_
"NRvzGDsbPBlCGz8W0BDkFhsRIBghEZoWcxHxFWARSBnZDicb2hn4EfUaZRF2DooE",_
"2Q+BG0YNOBM3GHgbVhe3FWMW1A5uG7kW2RDLDiEOCBtXC3oVFRYNGxgWRRDZGP4M",_
"EhukFGYX5w5rFvsNGRu8DC4QexaUESwZrhTGD9ALkxqvGwsaWhjmGogWMRtfGDkb",_
"ORZ0G4sNLQuJGz8WjRvrC8EQSRIgGHwb7hV6DrwbkxCDG/QVmxJ2DvkHixvWDAUV",_
"cQzaFvcQ9AvGGw0WUhobFnURWRYoEwERZhahCyMWjQ6XGycLUhsoDCcOZAs2D9kY",_
"lwwbFooRFBs5C10bfQvmEycWqxV7FpcPHheWEekYrhu0FOkRgBb5G9oa7RgrGyYR",_
"xhv9EbkbLxe+G2MLnAvGGxwLxRuSG7cQyhuIF88bmg3iEvEViBMDGaULGBGkDcsX",_
"1gySFIYbgg83G/oaqAvUGzAPFRw/GD4LWRb4DtsbABZXDZoOlQ29FnkLgRqsDvUY",_
"JBGIDhIZcAufG5ASKhIUG5kM7Ru4DqYbkAyoG4kLiA0sGTgSgBZ/CVQY+xvfEkUc",_
"QBJLFf4bURqKFkYbORYeEc0XQxKRFuwMxhsiC5APxhsoC9Mb/hgdErcbnQ2rDsYb",_
"OwsoE8Yb+QdeDScbphYeHBocChX3EI8MHxwBFZUb5gyVG+kMEhaFDL0WiQz0GRAW",_
"gRpOFNkYlAwSG5cMNRysDLAZnAxOGDscaA9rFjUS5BjyDsYPixLGD0ccsw2MHBQQ",_
"/RsAHJQSChxfGE8cYRhRHOIVDBzlFVAS6BVfDVccwA16G5oN2xDGGzULVRVIGUET",_
"yxt6DSEcBBQ7FMYbigSyE9QbshOqHCQR1A0fHMQQWRbODZUVpRBhCygcBQ9zEtkY",_
"NA5NDaEL5BtfFDIckQ/eGIMVyRbPEUga3hFtF9ISLBm6C3EX1xLGD9oSixxoG0Yc",_
"1hxIHLMONxC1G6kQuRv9EZUcUQwJHN8WzRvlFRAczhnRDZ4cCRKlGoQXoxzbECsb",_
"OwsqFKgcsxrWDPcPrRysDqAcRg11DmoXIgxlHMsVzg0BGw4QJhwsDrwczRCXGy8M",_
"UhuiDMMcNQvFHL0cpBt/HJASyRIHGKgPUBiRDrcZ5Q+NCygT6RjUHLQULROAFh0d",_
"/BuSFdwcmxYpG9cLxhsRC5kcBA+9EXYOHAtEAHgbRBAeDHIb6ho8FkgWaBIkGFQP",_
"XxxGDmIcswt2G2QOChMaHPwP/RziGVETahcJDR8cXxVHGHEckBJbEyMWOQaXG8AN",_
"UhuJDQ4V/Rn3D7MWjgc9GiQWFBvzDO0b+AemGxsLPRzRDBcdCRu4FkASNBAcHdgc",_
"sw0fHf8U1RYiHRQTABxCCysbJx0uHRQanRwrHcARdg4iC6UciRmNDsYbixIzG5MQ",_
"WAs4HQMTqBx8FJMcjgRDHXEMKQywHBMNHxx6DYwdQxR8HCYc6xpJGH0RaxZiF00N",_
"Vw7DHI4HMhy4DlcdkRFZHT4PLBnMHB4X4Q+FHPMb3xLEEyQXVBhpHUASqx2zDUsV",_
"fh2pEE8ctQxCC1wcAQ9ZHN8W7xJ1Hewcdx1JE00c/hGvHFocSRPtHKULQR2QF9AQ",_
"qBzkDcYbjgQvC/YcnRb3EDYMHxyHFAAYbxwXG0obFhfhFMkWShIQHcAcyRb2DAEa",_
"hAyzFl8OnR27CywZyg1jF6UQigRdHSQWxg9dFIkcuBe5FyEbSQ0gFxcUlhrYFXAb",_
"VQvTDG4dUxzgGvoTKxsXC2Ecuh3gHLcQNR2IF7ILxR3yCygMwx25GzsLoBOoHKUT",_
"9RqlDc0dshxCDNIdsBkVHBYXwQuVGEILRhq9DckclxvnDk0NkRHDHJAMMhyGHZET",_
"HhdhER4X6xCrG6YbXRE9HFcLYR1fFOkYSw+0FPQdMBb0HSAdAhmwHUAN+h08HVEM",_
"dB3fFqIcdR2qEucawB2IF/wcWhwsDu0ciA44HcwdqBxmDcodNgwxHQ8SlQ0HHgUM",_
"aRXiGLUdexa+EFkWXw4mHDgGvBz4B5cbawdSG6INUh0qFlQdtxlXHRUIFBtxA+0b",_
"MA8tHjMS0xwxHqwbMBacFMYPOB7fEnke2RylGDseBhwpG+QcPx49G1kPHQwHHJ4P",_
"uRsiC/sSOBf6DD4eARLrFfEVLwxNHvgcuBGJDVYeHBEwDPYcuA6wHBse4hgEHFMM",_
"SwwAHfgHXx6dCyMWnQtPG9EVmRsqHsMcigQyHBUIax5sC8YPLR0HGFcLLR6EHDAW",_
"HRuLHO8dRhV4HmcdjQt7Hq4d1Ra1HakQwxtVGg4cPx6eHhcLeR3LGWsSvB1aFYgX",_
"mxNaHIkdJBhhFZMctwuTHoAL5A9RHk8B9hygHmUWeRC+HbMN3BrfEoATjQsYEIAW",_
"Vg3QFl4N0BbEDXMZwxxsFk0agRWJHBQbYw/nHUASNAAtHpQPxg/fDTUeuh7pDxAY",_
"ahu9Hk4NshvCHgIL+h3XHhELDwvGG8kewRvlFU4LVBwiC7UbKAuEHaUaLgvtHIoR",_
"OB0eEagc6Qz1GpwecQysEd4eJBVqFwAWkxyNC1werRsmHGALvBwFD5cbBQ9SG2gL",_
"7h7mG7QU7BSiGPMeMAyzHoMS+h4vHqob/B7pGJoOZxQmGHUXSBUlG6gTkRyXHEoO",_
"0RslDSocCh+/FQccMhWWHkkTlRZFFv4MfB27C6McPxcDGQoN4B4+DPIWgwvQHK0c",_
"eRAXHksNFw3UG3YKZB9PF/8VdgrbG2kfIBZ+CwgbfgsLG34LZx7XC4IHEhmCBz0a",_
"ggeCGBAFXRsQBRkbEAWoGxAFMR6IHDAWPh//Hj8fQx+iEbIMRh8iDQoLDB9eC0of",_
"kxyPDDMd5guADlQcnxRXHIEVfB2sDMYbfgrOHToN6g5iHNsNlh7ADEYXAQxiDRMe",_
"ZAxTHtcLTArUG6sf/xVMCtsbcQsoHHELpx52CwsbdgvkG3YKEhl2Cj0afguCGH4L",_
"XRuCB30fuRfLFoAfDBYQBboehB9qHQAfAB+lGLUd1wtRHLUMfBKNHwcVFxx5EUoQ",_
"xhsKDeIWZgsCD1QcvRx8HVobmx/bD5Ye+gzvFvQVXB+5Ey8Nnh7ADFUWgwuaDq0c",_
"qx+GG60f2QwDC5McZg5hFgEMbR9aDXAPThklHw4XZwwSGd4LPRpbDIIYQAqmFSoT",_
"IRZ6DHYLqBt+Cxcdgge4Fw0OVBhCH4UfsRuXGs4fEwwAHNIfJh2YFAof0A/YHy4c",_
"BxwlElQc1hGWHn8JixerE5APfh1lD+AeGhPnHz0NiA1iHPIOUR4jH6UfTxf1H94L",_
"GQ7hC/QfAQz6C1cNCQ5hEwEMtR8ODnEfahBwDxIZUwxUEt4M3guCGFsMXRtAChkb",_
"cQuoG3YKDSDRFQcWECCGH4MfAR/gEhwMiB8ZC5we3hrVENMf2BDVH1YMehXYH2kQ",_
"lh6sD4geaRNXHHoRfBtiDOYdmx81DuAenxwTHjkLpB86Da4Ulh4zAFcQYhyCB2Ic",_
"EAUZDpERCBaDC2cWWg1rDz8gCw5xC8UNTwyaDi8cnAv/H5cXWwzjDugL0g3RDHQW",_
"egxnDBkbUwuoG0wKFx12CmMdcx8lH3oMDQ56FqQgJRvmDMYbgAziHiINcxwmHYkM",_
"lh6ZC5IfVgzBFdgf3B8rHckSVBwIFFccNh+ZH+UfDQsvC1wfGwzSD3cg2hFJFwMZ",_
"2hJiHGcMYhyWDRkOeyCDILkTrx9aDVwOPyBuDFMMiyBbDCcOSAyEDr0PkyBTC5Ug",_
"cQuLDpYgbg16DJYNdRBFFfoLFx12C7gXvQ+zFaYgiwvuIGodvAuoICkPFg3WGzcZ",_
"2RAAHGETJh0aE24gVgytC7UbIxC5GzQOjx65EiYgwgy0FyQgSwzgHi4LLSAyC5QO",_
"mx8xIJwWQxyjHIAgnBaNCxkO/CA6ICcY9x86DfkfawyWDcUNCBTHDWsMEAXbIJIg",_
"pwxLDHEWDg6WDQYgvhFMCtkNcA+oG94LFx1MCrgXLQ3tIHYZoyA5IRQgLg/zIDEL",_
"fBKrIIMM6B4AHI8fKhEdIHYO/RPaH2ESDBG1II8ezhGkFA8fnR+wDnIgVxyRDnwd",_
"9xSbHxkdmx9KC1YfNSDkDHwSZx/qEM8gNw1rH/gLZwzXDu8QxQ2TCycO/g0pGHYf",_
"Jx4EFAMg/guCB+EgUwswIXYKqBtnDBcdQAq4F2shOiFCH/0UOyHxIDELtg2pIJEb",_
"qSC0FgAcfREmHWcQ+yDaH/MNVB3YH7oQ2B+aHysdzxEHHG4NVBxxDVccLyCLHuwf",_
"ABBCDHwdWwx8HUAKGQ7UEmMhMguFIKsTdgrXDtwRxQ2JDY0g7hb6C4QOkwvjDnMT",_
"0g2wE4sOjCDjIIcLWwwuEOIgFx1TC6AgDw+iIIsLvQ96FschJRuFISkPhyEpD6Qe",_
"ABw7DpYe9AuyIAcVSiFWDHoSCh+4IHYOjQ4GIY4NKCAHHJEPlR/BIEgTRBFsIOwf",_
"XwzIIDgXFSGGEQUWihc8IP4YggdXDawODRYFGgcLDQ93HDwRsSGeH3IDtCF+C7Yh",_
"+gu4IVMMuiF2CjAhmyAEFu0Lph0CC8IhBxZ2C8YWySHGIYIhfB6EIVwgpBHQH8IN",_
"4RQAHGQQABxHISoRlB/gGhgTJh3eH0ghgxUKHwghkxyNDr4gZxJWIZYhxCC+DJcO",_
"mCEzIMIMNyB3HaMhhhnxIZMcow5XDUgQ1w6oDmYWiRHYIGoQYCFsFgIOEAXjDrUO",_
"0g24DpcgbgzeC9kNvQ6/IZ0gDBaWDbgXtA+zFQ8i3gxWIhIiOQzODqkg+hwpDxkg",_
"bBtjICINBg8AHLQg4BqRIeAa2iGOFvsOCh+8INshnx/bIZsh2yHICwcc1QsTHv0M",_
"MSKODX4LaCAXIYYZ7yFqC+UeWg38D/QhFBU+IqsTUwwnDooR/CGnGnYLSCCgDSoh",_
"awxTC7ohmSCSD/gHwx8BDEAKFx1nDFMixSFBFTkhrA0tDcwf7RHOHygPhiFIHxML",_
"RSEfDdQhgwyyE+4a0R9RHyUNkyFmIt0hOhZSIYcNmSFIIZMMEx56ES0imAv1G7Ag",_
"7h9uIl4hYRI1IjAREAUBEScLHCHrC94L1w7VEIUiXwz9HzQNJSE3D4ANDR3IEo8i",_
"eCCXILkTdgtNIkAKvyFTC64Vvh7LFgsPsxWgInoM5SI5HmAQoyKKHz0XYSA4Cxcc",_
"OQwQFgAcIBDcHCAi3hppIiUN2Q/9IIcN6xAmHeEh4BokFrAgnSEoDcQTCh/pISgN",_
"ZR9IIYAgkxJAEMciZwxXDXkQgyJEEHYKxQ2IEScOLguKIqsTcQvjDtAU1yLaEXUL",_
"3A8iIU0iviEHIjMhpwxwD7gXSBDkIhEiYRQSIIMhGQtbIikPKh2THGsY7SKLISkP",_
"1x8pD3sgtRvDE94cayDeGnciGyLOHbUM9x7gHrYMEx5QDbwiiAznIV4Lew0mHaMh",_
"HyJhIXkRZxaQH8YiWg0KDYMitBLOIusLdgonDl0PhA6nIdUi9iGNC9INtg+0F+QM",_
"CgsIIAsOZwwuEL0PrhV+C7gX+gvGFucinSItI1kiIhCpIDIjURGmItMNYSK9C6oi",_
"OAvWIfoKlAyIIU4hNxn5IgAc4h/eGt4PGyINIU8VvCIJC0sjIg1BDvkgXiGfEjcg",_
"ERo3IigN0SBkElgjwxRaI5MNQApdI3ELXyOMInAhMgt4H4wR2SI9DVMMTSJTDGwj",_
"xR/4H1QgegxxI7MVkwtAH0UVtiMlG0scLyPrImIQ7SKvICkPZSApDzMPlh6xC68i",_
"pBEEIRML5Q6GIbUiMgspIqgMjSPCC7wiPwufIcIN5Q2pIH4g3hrKINoVfgsWGLEf",_
"cRRMCtcOkxafI5YWsSFEENIihhFnDOMO8yGwHhcTqiM6DAQirBp+C2wjDCAmI+og",_
"yxa0I6EQdSOvDfsjjxzQDqkgnhGuEHsj9BjBG1oifyNnIDEjxyMcDMkjHAyzIvsK",_
"zSOfF+AesQvjIS4PDyEpD2AfXCJ4InQOwiIaEVEjVQt+IiUNlg1XDYUQTxuIEOQj",_
"ixAjIXISGCNfDG8hqxOWDdIN0g/vI8ILcQupFQogBBYpIQkinAv3I/cQnCIgD/0j",_
"uSPoIrsj6wz2IH0P/RE+FyUURyS6G0kkkxNqEJ4VTSSTIU8kPBfcD50NoBqCDKAW",_
"HRSAC3MOUhZYJP0VQg4AFl4kXRHmDVMLZRofDfMLNhlvEYIHLRpRDGYWPhffEO0Z",_
"5RWaDl0asyGSDogRugtIFnIDoQvxFckVZySQF0gVXhhzE1MXZA57FsAYsiN0DD0k",_
"/CO9HkAkgyFxDs4frBBJJEYkowuREU8kXxJTJJQfWCTGFEIOoBUTGn0PPBffDz8X",_
"XhigDWQksAujFpUO+hVRFg8SqhgsCwAWSBdwGvUhjA7zCz4X1hAJCzYWDRaSDvAP",_
"6hkwFU0L+BiWDb8Y6BX8ISwWiBHUDqUaeCRKFt4LKhL0FUgVURaAJEgXSAz4B/Mf",_
"SQs8JPwh+iMkGxEQKyP+Iy4OjyQSGBUMWRORJKka8Q6iJAELkxO9GScMwRAsFv4R",_
"0BkuDAMLWCQ1C+IOxAvVEJUOzBusJBwR2RmwC4oEZRiCDMcNlSQNFh0UUwukC7IM",_
"ZhYPGmYWmBUJG4IZJR/PF5YNdRgvHWQLSBfBJFoNCw/zFdgXSBUTHLkXPhdzE0IL",_
"1gzyG88k4yTEDtIkoxC5F9MkeRnMEwIZ2SSgGtskpBryDGMaYQ1dEacklB/mJAwR",_
"6CSbDCAaCA0DC6AkxxssJTsL9CTKC5EQjiDIEN4Z9SSREJ4kxw2VDw0WpyT9JCwW",_
"1hC4JCwRbyRrJAAWzRfTFZEW/CEuDXEWix54JFocyRVBIkwi3A/vEBYLpA17Fo4g",_
"SAzWC88kIBZbDAcayQ4fJR4lfQu6IzcQJCWlFo8Pnh3dJB8OZgxPJAgcniRVHPIk",_
"KAuwGOkk/BilDE8boA21GD0L6BBBCwMOSAt6DUkkVwtQGaokTQvfD1MLfBr4HZoO",_
"9R6EDSkcohL8IZIP3xAxFFAlaAtqEOQQeSSJGXgkYg/JFSwW3BHkD0gZuRfKJHEL",_
"LAoYJYkLkxLoC3ED0SRoCyAlsCU8IZcL/AokJUIO/RGVDy8XLiVmDFgkCByVDxAf",_
"GRB4JZskeiXyJKQcTyQ7C3oaoySCDy4ljgSIJT8lBRmqJFQP8iQJG9cQdhFPEoci",_
"pwwsEegWYRi/JN8WDxeYJTIYzhnEJIgXSiI7F3YZWCW5FxMlfQvSIKclKCHqIPwV",_
"tA/eHmMjsCXVJGclLiN/DPwKTySvEZ8LkREfDicdWCRmDPIkLB1tJX0PEB8fDj0R",_
"JBAvDtoONQvPJasMfBQ9DKwONSWOBA4ZLAusHsIlsAt+FdIlBQ/DI2QLXBhHIJIO",_
"LBHNEJMlaAsQEo0Lgg+YJaUN5xrJFXQk2yIiGOgleiR9C1EW7xBfDl0luxWpJdAk",_
"4heNC5AljAsvGWglIBaTCzIZXRDbHJ8LvQv7JZwLkSTSGSolKRrQDf4k5CSZCysM",_
"NQuVD0IKSyUBCwsmHw47C/cPDyZEFoIMEiaeJKweLiVTG/okBQ+gJFMLXxHHFSkb",_
"cRaAGVUlTiVwC7skMiTkEIsY6hpeG3ckqRcvJpYRyCSFC90XcQuiDT4b0RWEJGYW",_
"riUMFj8m0yRAJnwM+CVDJrYabiUwJYsMQgssJf8dCCYcC0MPtQseDAYmNQCTFuAN",_
"fhXACx0MPCWPERQZgCUtGEULKhKVJIoE8BXQJSYmiSXsDVEReCRRFtYQ8xWzHXsk",_
"IiY2DN0lOgszF5YNMAy+JH0LahCIEYEk8gteJS8mPAwbIT4cNCbiDUgMXRHzH2AL",_
"riV6FoImPSb1HbMlJSVDJLQa2yRzGvIMsyTJDR0SNSWQJpckwh1PJrsYngxXC5UO",_
"Cx2eJDsLlyWeJg8MjgQbGRQm7A36JLILLCXJFVQa2BVXJf8kDw+oGHQhSBfwD9gY",_
"4hV+JJgljge3JrgO4yV9C80ZvCaFC6caMyFaDe8QGQ/CJlEWxCY+F+gLZSUFDNYk",_
"kwsAJz4kDxj2Jf8jlSSpEPIkCwuEDJEkeSWODDAPGRCQJhEndA5JE5QmdBCXJsYa",_
"sAs1C3kYLAsMHiwl+QcvC4Il0g+EJWgZ+CS/GEMlfQtHJJsgHSa5F3wNLBEwEiIm",_
"jBq5JK4XyxlbHikmOSSIEWsHcyYHJxEliBx9JIkL6yUYHaklxyY4JhEW+hqNCz4m",_
"vh7TJLkZIiU3EBYnGhrrDEILNSUIH3wkHSd/JdANUyYiJzQOTybaJTMl4yYoJ3oR",_
"WCQ7C4QYySUtIfoKjgSgF+gmoyXQJf0miSWdCVELexZsG70mlhV7FpgjexbhGfgm",_
"hQuCF5YNCxfhJcEmnSXDFUknpwzcEfALdyYDCzQmrQymFvIlUye9HmQlVyfRFVkn",_
"aiWoE4cmISfuDa4Y8gx7JWQn1yaeD74lIgwsJSgLyRhsJw8MUCbuJisnPREPJvwZ",_
"zguJDU8kigR9JxcmdxAXJokLUyTCISkXUwwbC9kWDiA3D/APzQyyJjcmQyeJC0gX",_
"5BCTJ44nxSaaDTkmLyaXJ+0QSBCsGrQPkg7EJn4mWBiGJJ4naCXGDnsVAh93I1gk",_
"wx77JdcZpieVDskeLCUcC1YZOg6fDk8mpQurEC8OzxilDC8ntCexJoAlNwyCJUEP",_
"hCX9F9AlxSeJJZMnWhjRFUclxCfxDxchIiaVJ4cnHRKYJTAPtyZVE4gRxybuFZkn",_
"1RklJpQnTxYrI8Qm+h+0D2AWZCVgFpMLShEjKKAnWiS6GhkQGSf9JeMUpwv4IdAN",_
"ch+3ENUPEh+VDkIKPA8DEJUklhCeJIsalQ+8D5UObw8EFg4nYCSvDFogYBBEKCwR",_
"pw9EKN8Q9g16GQwRRCgUKJ8lpg7cEWcPRChzE1EQRCgMJ0oRZCXjJ0gN5CdEKNck",_
"XyimECQPWCDUFmQoUBpgKF4oYSjlJ74ZXShsKJEVwB5lKDkeYihBH24oZyhtKHAo",_
"FCdvKIAWdihmKGkoaCh+KHsoYyh8KH8odCh9KIAocyh3KBIicSiFKIQoTCh1KIwo",_
"eyiKKIMoShGLKIgoeSiRKJAoiySHKIIomCiJKHgojiiTKJIomyiPKKMooCicKJYo",_
"niiUKKIopSikKKoorSiyJagolQsgAA==",_
"end"
 

Return to “Tips and Tricks”

Who is online

Users browsing this forum: No registered users and 2 guests