Showing posts with label rot. Show all posts
Showing posts with label rot. Show all posts

# NN2k16 CTF - moneymoneymoney (extra) (55pts)


# cat moneymoneymoney.py
#!/usr/bin/python

import base58
import bs4
import pyblake2
import re
import requests
import socket
import sys
import uu

def base58encode(hex_addr):
 ha = hex_addr[::-1]
 return base58.b58encode(ha.decode('hex'))


def crack_blake2(bh):
 a = ['0', '1', '2', '3','4','5','6','7','8','9','a','b','c','d','e','f']
 for i1 in a:
     for i2 in a:
  for i3 in a:
      for i4 in a:
   for i5 in a:
       for i6 in a:
    p = i1+i2+i3+i4+i5+i6
    if pyblake2.blake2b(p).hexdigest() == bh:
        return p

def get_bitcoins(addr):
 r = requests.get('https://blockchain.info/address/' + addr)
 soup = bs4.BeautifulSoup(r.text)
 tag = soup.findAll('span', {'data-c': True})
 m = re.findall('>(.*) BTC<', str(tag[1]))
 #return m[0].replace(',', '')
 return m[0]

def rot(text, n):
 I = 32
 F = 126
 a = []

 for i in xrange(I, F + 1):
  a.append(chr(i))

 result = ''
 for i in text:
  oi = ord(i)
  if I <= oi and oi <= F:
   r = (oi - I + n) % len(a)
   result += a[r]
  else:
   result += i
 return result

def shamir_secret(ss1, ss2):
 payload = {'message': ss1[2:] + '\r\n' + ss2[2:]}
 r = requests.post('http://asecuritysite.com/encryption/shamir_decode', data = payload)
 m = re.findall('share of 2: (.*?)\n<', r.text)
 flag = m[0]
 return flag

def uudecode(encoded):
 ui = 'uu.in'
 uo = 'uu.out'

 f = open(ui, 'w')
 f.write(encoded)
 f.close()

 uu.decode(ui, uo)

 f = open(uo)
 decoded = f.read()
 f.close()

 return decoded

def xor(text, key):
 r = ''
 lk = len(key)
 for i in range(len(text)):
  r += chr(ord(text[i]) ^ ord(key[i % lk]))
 return r


HOST = 'challenges.ka0labs.org'
PORT = 1337
DELIMITER = '-' * 32

server_socket = (HOST, PORT)

print server_socket
print DELIMITER

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(server_socket)

data = client.recv(1024)

print data
print DELIMITER

m = re.findall('= (.*?)\.', data)
blake2_hash = m[0]

print '[+] blake2 hash = ' + blake2_hash 

x = crack_blake2(blake2_hash)

print '[+] x = ' + x
print DELIMITER

client.send(x + '\n')
data = client.recv(1024)
print data
print DELIMITER

m = re.findall('(1-000.*?)\.', data)
shamir_secret_1 = m[0]
print '[+] shamir secret 1 = ' + shamir_secret_1
print DELIMITER

data = client.recv(1024)
print data
print DELIMITER

m = re.findall('([0-9A-Z]+00A)', data)
challenge = m[0]
print '[+] shamir secret 1 = ' + shamir_secret_1
print '[+] challenge = ' + challenge
print DELIMITER

hex_challenge = challenge.decode('hex')
print '[+] hex_challenge = ' + hex_challenge
print DELIMITER

rot52 = rot(hex_challenge, 52)
print '[+] rot52 = ', rot52
print DELIMITER

uud = uudecode(rot52[22:])
print '[+] uudecode = ', uud
print DELIMITER

byte_uud = ''.join(map(chr, map(int, uud[11:].split(','))))
print '[+] byte_uud = ', repr(byte_uud)
print DELIMITER

xored = xor(byte_uud, 'ANDYRLZ')
print '[+] xored = ', xored
print DELIMITER

hex_addr = xored[18:]
bitcoin_addr = base58encode(hex_addr)
print '[+] bitcoin addr = ' + hex_addr + ' --> ' + bitcoin_addr
print DELIMITER

bitcoins = get_bitcoins(bitcoin_addr)
print '[+] bitcoins = ' + bitcoins
print DELIMITER

client.send(bitcoins + '\n')
data = client.recv(1024)
print data
print DELIMITER

m = re.findall('\((.*)\)', data)
shamir_secret_2 = m[0]
print '[+] shamir secret 2 = ' + shamir_secret_2
print DELIMITER
client.close()

flag = shamir_secret(shamir_secret_1, shamir_secret_2)
print '[+] flag = 8===D{' + flag + '}'


# python moneymoneymoney.py
('challenges.ka0labs.org', 1337)
--------------------------------

Welcome to the Dr. Utonium computer! As he usually says, passwords are out-of-style nowadays. So I'm going to test if you're my lovely boss through crypto challenges that only him can solve <3

First of all, let's fight fire with fire. BLAKE2B(X) = b8d1e72b927e9dd122fd4e7cb7574c9b768ad677cf9c0b5435d00c31f0be854efff199ab23dd8f8aa2843321345803b0ad7fd0c0cd3d4090038db421632a68cd. Let me know X. Hint: my $X =~ ^[0-9a-f]{6}$
Solution: 
--------------------------------
[+] blake2 hash = b8d1e72b927e9dd122fd4e7cb7574c9b768ad677cf9c0b5435d00c31f0be854efff199ab23dd8f8aa2843321345803b0ad7fd0c0cd3d4090038db421632a68cd
[+] x = 8d40cf
--------------------------------


Auto-attaching to session 2...
irssi | MojoJojo@CP3kc2.F5htj.virtual (Ka0chat)
<+MojoJojo> Hi my little minion! I have info that can be useful for you. I don't know when, but I'm sure you are going to need what I found last month sniffing Utonium's communications: 1-000O4LkoDev88CEhevvRqbVSc/Fbh+BS47N0NL0jUoQneR9/Ah+yoYr3qDxzlHJ3EI0MITTz4kCwmxHdKye02rjZIMmduk=. I don't know what it means...:_S
Detaching...

--------------------------------
[+] shamir secret 1 = 1-000O4LkoDev88CEhevvRqbVSc/Fbh+BS47N0NL0jUoQneR9/Ah+yoYr3qDxzlHJ3EI0MITTz4kCwmxHdKye02rjZIMmduk=
--------------------------------

Hmmm...ok, here is your challenge. Hint: !yenom eht em wohS

49657021204E657874212074313C4C4B793144404C4B2E3133353A4B6161614B580A785D61607B535D4C5964626C20535D4B24564E5B7E564E5F7D564E4F7D574D7B7C575E5B77576D7B22577D7B21587D7B21594D7B7C574E4F77575E537C0A78564E537B564E5F77576E4B77574D7B7D564E4F7B575D7B7C576E4F77575E4B7E564E5B23564E4F7B585D7B7E586D7B20584D7B7C575E6B77575E4B200A78564E6F22564E5B23564E4F7B587D7B7E585D7B7C576E4B77575E4F25564E4F7B584D7B20595D7B7C575E6377575E4B22564E5723564E4F7C594D7B7C0A78576E5F77595E6777595E6F77584E4F77575E4B24564E4F7C586D7B7C575E6B77575E4F21564E5F22564E4F7B587D7B20576D7B22576D7B7E595D7B7C0A78576E5F77577E5777586E4F77575E4B7B564E4F7C586D7B22576D7B7C575E6F77575E4F24564E4F7C595D7B7C574E6777585E5377575E5322564E6F240A5E564E4F7C586D7B7C576E6377575E4F7E564E4F7B585D7B25594B4B4B0A4B0A313A300A

Solution: 
--------------------------------
[+] shamir secret 1 = 1-000O4LkoDev88CEhevvRqbVSc/Fbh+BS47N0NL0jUoQneR9/Ah+yoYr3qDxzlHJ3EI0MITTz4kCwmxHdKye02rjZIMmduk=
[+] challenge = 49657021204E657874212074313C4C4B793144404C4B2E3133353A4B6161614B580A785D61607B535D4C5964626C20535D4B24564E5B7E564E5F7D564E4F7D574D7B7C575E5B77576D7B22577D7B21587D7B21594D7B7C574E4F77575E537C0A78564E537B564E5F77576E4B77574D7B7D564E4F7B575D7B7C576E4F77575E4B7E564E5B23564E4F7B585D7B7E586D7B20584D7B7C575E6B77575E4B200A78564E6F22564E5B23564E4F7B587D7B7E585D7B7C576E4B77575E4F25564E4F7B584D7B20595D7B7C575E6377575E4B22564E5723564E4F7C594D7B7C0A78576E5F77595E6777595E6F77584E4F77575E4B24564E4F7C586D7B7C575E6B77575E4F21564E5F22564E4F7B587D7B20576D7B22576D7B7E595D7B7C0A78576E5F77577E5777586E4F77575E4B7B564E4F7C586D7B22576D7B7C575E6F77575E4F24564E4F7C595D7B7C574E6777585E5377575E5322564E6F240A5E564E4F7C586D7B7C576E6377575E4F7E564E4F7B585D7B25594B4B4B0A4B0A313A300A
--------------------------------
[+] hex_challenge = Iep! Next! t1<LKy1D@LK.135:KaaaKX
x]a`{S]LYdbl S]K$VN[~VN_}VNO}WM{|W^[wWm{"W}{!X}{!YM{|WNOwW^S|
xVNS{VN_wWnKwWM{}VNO{W]{|WnOwW^K~VN[#VNO{X]{~Xm{ XM{|W^kwW^K 
xVNo"VN[#VNO{X}{~X]{|WnKwW^O%VNO{XM{ Y]{|W^cwW^K"VNW#VNO|YM{|
xWn_wY^gwY^owXNOwW^K$VNO|Xm{|W^kwW^O!VN_"VNO{X}{ Wm{"Wm{~Y]{|
xWn_wW~WwXnOwW^K{VNO|Xm{"Wm{|W^owW^O$VNO|Y]{|WNgwX^SwW^S"VNo$
^VNO|Xm{|WncwW^O~VNO{X]{%YKKK
K
1:0

--------------------------------
[+] rot52 =  }:EUT#:MIUTIep! Next! begin 666 -
M265P(2!.97AT(2 X+#0S+#4R+#$R,"PQ,30L,BPV,RPU-RPU."PQ,#$L,3(Q
M+#(P+#4L,C L,"PR+#$P,2PQ,C$L,3 S+#0W+#$P-2PS-BPT-"PQ,3@L,3 T
M+#DV+#0W+#$P-RPS-2PQ,C L,3$Y+#$P-"PT.2PQ,38L,3 V+#,W+#$Q."PQ
M,C4L.3<L.3DL-#$L,3 X+#$Q-BPQ,3@L,3$U+#4V+#$P-RPT,BPV,BPS.2PQ
M,C4L,S,L-C$L,3 P+#$Q-BPV,BPQ,3DL,3$X+#$Q.2PQ,#<L-3(L,3(V+#DX
3+#$Q-BPQ,C8L,3$S+#$P-2PY.   
 
end

--------------------------------
[+] uudecode =  Iep! Next! 8,43,52,120,114,2,63,57,58,101,121,20,5,20,0,2,101,121,103,47,105,36,44,118,104,96,47,107,35,120,119,104,49,116,106,37,118,125,97,99,41,108,116,118,115,56,107,42,62,39,125,33,61,100,116,62,119,118,119,107,52,126,98,116,126,113,105,98
--------------------------------
[+] byte_uud =  "\x08+4xr\x02?9:ey\x14\x05\x14\x00\x02eyg/i$,vh`/k#xwh1tj%v}ac)ltvs8k*>'}!=dt>wvwk4~bt~qib"
--------------------------------
[+] xored =  Iep! Next! FINAL! 5c3eb212c1b631c80d8981e6587a9fdf3ed68d6832f2850500
--------------------------------
[+] bitcoin addr = 5c3eb212c1b631c80d8981e6587a9fdf3ed68d6832f2850500 --> 18KphVHKBw2brgxc2SQtEWWijQYA8LMsFa
--------------------------------
[+] bitcoins = 0.67472019
--------------------------------
YEAH! 8===D{Shamir(2-00124TdmxdOWx6fO3Ju/OPaW1kutWmNKsWrhLxH2W+T7R4QfQ/+NzDebCfTltfTKbgukGlR4yweJn3UW1qw2s5TBCnSQUw=)}

--------------------------------
[+] shamir secret 2 = 2-00124TdmxdOWx6fO3Ju/OPaW1kutWmNKsWrhLxH2W+T7R4QfQ/+NzDebCfTltfTKbgukGlR4yweJn3UW1qw2s5TBCnSQUw=
--------------------------------
[+] flag = 8===D{Enc0ders_D0_N0t_G1v3_R34l_Secur1ty_But_S3cret_Shar1ng_M4ybe_D03s}


Known-plaintext attack

# ipython

In [1]: challenge = '49657021204E657874212074313C4C4B793144404C4B2E3133353A4B6161614B580A785D61607B535D4C5964626C20535D4B24564E5B7E564E5F7D564E4F7D574D7B7C575E5B77576D7B22577D7B21587D7B21594D7B7C574E4F77575E537C0A78564E537B564E5F77576E4B77574D7B7D564E4F7B575D7B7C576E4F77575E4B7E564E5B23564E4F7B585D7B7E586D7B20584D7B7C575E6B77575E4B200A78564E6F22564E5B23564E4F7B587D7B7E585D7B7C576E4B77575E4F25564E4F7B584D7B20595D7B7C575E6377575E4B22564E5723564E4F7C594D7B7C0A78576E5F77595E6777595E6F77584E4F77575E4B24564E4F7C586D7B7C575E6B77575E4F21564E5F22564E4F7B587D7B20576D7B22576D7B7E595D7B7C0A78576E5F77577E5777586E4F77575E4B7B564E4F7C586D7B22576D7B7C575E6F77575E4F24564E4F7C595D7B7C574E6777585E5377575E5322564E6F240A5E564E4F7C586D7B7C576E6377575E4F7E564E4F7B585D7B25594B4B4B0A4B0A313A300A'

In [2]: hex_challenge = challenge.decode('hex')

In [3]: %paste
def rot(text, n):
        I = 32
        F = 126
        a = []

        for i in xrange(I, F + 1):
                a.append(chr(i))

        result = ''
        for i in text:
                oi = ord(i)
                if I <= oi and oi <= F:
                        r = (oi - I + n) % len(a)
                        result += a[r]
                else:
                        result += i
        return result
## -- End pasted text --


In [4]: for i in xrange(126 - 32)
 print rot(hex_challenge, i)
 print i
 print '-' * 20
 raw_input()

...

50
--------------------

|9DTS"9LHTSHdo ~Mdws ~adfhm~555~,
L154O'1 -86@S'1~W*"/R*"3Q*"#Q+!OP+2/K+AOU+QOT,QOT-!OP+"#K+2'P
L*"'O*"3K+B~K+!OQ*"#O+1OP+B#K+2~R*"/V*"#O,1OR,AOS,!OP+2?K+2~S
L*"CU*"/V*"#O,QOR,1OP+B~K+2#X*"#O,!OS-1OP+27K+2~U*"+V*"#P-!OP
L+B3K-2;K-2CK,"#K+2~W*"#P,AOP+2?K+2#T*"3U*"#O,QOS+AOU+AOR-1OP
L+B3K+R+K,B#K+2~O*"#P,AOU+AOP+2CK+2#W*"#P-1OP+";K,2'K+2'U*"CW
2*"#P,AOP+B7K+2#R*"#O,1OX-~~~
~
dmc

51
--------------------

}:EUT#:MIUTIep! Next! begin 666 -
M265P(2!.97AT(2 X+#0S+#4R+#$R,"PQ,30L,BPV,RPU-RPU."PQ,#$L,3(Q
M+#(P+#4L,C L,"PR+#$P,2PQ,C$L,3 S+#0W+#$P-2PS-BPT-"PQ,3@L,3 T
M+#DV+#0W+#$P-RPS-2PQ,C L,3$Y+#$P-"PT.2PQ,38L,3 V+#,W+#$Q."PQ
M,C4L.3<L.3DL-#$L,3 X+#$Q-BPQ,3@L,3$U+#4V+#$P-RPT,BPV,BPS.2PQ
M,C4L,S,L-C$L,3 P+#$Q-BPV,BPQ,3DL,3$X+#$Q.2PQ,#<L-3(L,3(V+#DX
3+#$Q-BPQ,C8L,3$S+#$P-2PY.   
 
end

52
--------------------


# ipython

In [1]: byte_uud =  "\x08+4xr\x02?9:ey\x14\x05\x14\x00\x02eyg/i$,vh`/k#xwh1tj%v}ac)ltvs8k*>'}!=dt>wvwk4~bt~qib"

In [2]: r = byte_uud

In [3]: %paste
def xor(text, key):
 r = ''
 lk = len(key)
 for i in range(len(text)):
  r += chr(ord(text[i]) ^ ord(key[i % lk]))
 return r
## -- End pasted text --

In [4]: find = 'Iep! Next!'

In [5]: %paste
keys = []

for i in xrange(len(r)):
 key = xor(r[i:i+len(find)], find)
 if len(key) == len(find):
  keys.append(key)

for k in keys:
 for i in xrange(len(find)):
  nk = k[i:]+k[:i]
  result = xor(r, nk)
  if find in result:
   print '-----------------------------', nk
   print result
   raw_input()
## -- End pasted text --
----------------------------- ANDYRLZAND
Iep! Next!8ZAMRN?8)k(jh/:,u*m<6&u-8i,</'h"0/!t1kpc<oy=&r-79/u0&-,=3#
---------------------------------------------------------------------------
KeyboardInterrupt

In [6]: find = 'Iep! Ne'

In [7]: %paste
keys = []

for i in xrange(len(r)):
 key = xor(r[i:i+len(find)], find)
 if len(key) == len(find):
  keys.append(key)

for k in keys:
 for i in xrange(len(find)):
  nk = k[i:]+k[:i]
  result = xor(r, nk)
  if find in result:
   print '-----------------------------', nk
   print result
   raw_input()
## -- End pasted text --
----------------------------- ANDYRLZ
Iep! Next! FINAL! 5c3eb212c1b631c80d8981e6587a9fdf3ed68d6832f2850500

# SecuInside CTF Quals 2k14: Speed Game - Mic Check (7 points)


# ./rot.py -m inline -d "Q2QnT29oUNW0wtWqySDbw2UhvRIkTRrby2Qdx2g0UOjbwCHoTRrpw3Ei"


['ABCDEFGHIJKLMNOPQRSTUVWXYZ'] (26)

(0) Q2QnT29oUNW0wtWqySDbw2UhvRIkTRrby2Qdx2g0UOjbwCHoTRrpw3Ei
(1) R2RnU29oVOX0wtXqyTEbw2VhvSJkUSrby2Rdx2g0VPjbwDIoUSrpw3Fi
(2) S2SnV29oWPY0wtYqyUFbw2WhvTKkVTrby2Sdx2g0WQjbwEJoVTrpw3Gi
(3) T2TnW29oXQZ0wtZqyVGbw2XhvULkWUrby2Tdx2g0XRjbwFKoWUrpw3Hi
(4) U2UnX29oYRA0wtAqyWHbw2YhvVMkXVrby2Udx2g0YSjbwGLoXVrpw3Ii
(5) V2VnY29oZSB0wtBqyXIbw2ZhvWNkYWrby2Vdx2g0ZTjbwHMoYWrpw3Ji
(6) W2WnZ29oATC0wtCqyYJbw2AhvXOkZXrby2Wdx2g0AUjbwINoZXrpw3Ki
(7) X2XnA29oBUD0wtDqyZKbw2BhvYPkAYrby2Xdx2g0BVjbwJOoAYrpw3Li
(8) Y2YnB29oCVE0wtEqyALbw2ChvZQkBZrby2Ydx2g0CWjbwKPoBZrpw3Mi
(9) Z2ZnC29oDWF0wtFqyBMbw2DhvARkCArby2Zdx2g0DXjbwLQoCArpw3Ni
(10) A2AnD29oEXG0wtGqyCNbw2EhvBSkDBrby2Adx2g0EYjbwMRoDBrpw3Oi
(11) B2BnE29oFYH0wtHqyDObw2FhvCTkECrby2Bdx2g0FZjbwNSoECrpw3Pi
(12) C2CnF29oGZI0wtIqyEPbw2GhvDUkFDrby2Cdx2g0GAjbwOToFDrpw3Qi
(13) D2DnG29oHAJ0wtJqyFQbw2HhvEVkGErby2Ddx2g0HBjbwPUoGErpw3Ri
(14) E2EnH29oIBK0wtKqyGRbw2IhvFWkHFrby2Edx2g0ICjbwQVoHFrpw3Si
(15) F2FnI29oJCL0wtLqyHSbw2JhvGXkIGrby2Fdx2g0JDjbwRWoIGrpw3Ti
(16) G2GnJ29oKDM0wtMqyITbw2KhvHYkJHrby2Gdx2g0KEjbwSXoJHrpw3Ui
(17) H2HnK29oLEN0wtNqyJUbw2LhvIZkKIrby2Hdx2g0LFjbwTYoKIrpw3Vi
(18) I2InL29oMFO0wtOqyKVbw2MhvJAkLJrby2Idx2g0MGjbwUZoLJrpw3Wi
(19) J2JnM29oNGP0wtPqyLWbw2NhvKBkMKrby2Jdx2g0NHjbwVAoMKrpw3Xi
(20) K2KnN29oOHQ0wtQqyMXbw2OhvLCkNLrby2Kdx2g0OIjbwWBoNLrpw3Yi
(21) L2LnO29oPIR0wtRqyNYbw2PhvMDkOMrby2Ldx2g0PJjbwXCoOMrpw3Zi
(22) M2MnP29oQJS0wtSqyOZbw2QhvNEkPNrby2Mdx2g0QKjbwYDoPNrpw3Ai
(23) N2NnQ29oRKT0wtTqyPAbw2RhvOFkQOrby2Ndx2g0RLjbwZEoQOrpw3Bi
(24) O2OnR29oSLU0wtUqyQBbw2ShvPGkRPrby2Odx2g0SMjbwAFoRPrpw3Ci
(25) P2PnS29oTMV0wtVqyRCbw2ThvQHkSQrby2Pdx2g0TNjbwBGoSQrpw3Di

['abcdefghijklmnopqrstuvwxyz'] (26)

(0) Q2QnT29oUNW0wtWqySDbw2UhvRIkTRrby2Qdx2g0UOjbwCHoTRrpw3Ei
(1) Q2QoT29pUNW0xuWrzSDcx2UiwRIlTRscz2Qey2h0UOkcxCHpTRsqx3Ej
(2) Q2QpT29qUNW0yvWsaSDdy2UjxRImTRtda2Qfz2i0UOldyCHqTRtry3Ek
(3) Q2QqT29rUNW0zwWtbSDez2UkyRInTRueb2Qga2j0UOmezCHrTRusz3El
(4) Q2QrT29sUNW0axWucSDfa2UlzRIoTRvfc2Qhb2k0UOnfaCHsTRvta3Em
(5) Q2QsT29tUNW0byWvdSDgb2UmaRIpTRwgd2Qic2l0UOogbCHtTRwub3En
(6) Q2QtT29uUNW0czWweSDhc2UnbRIqTRxhe2Qjd2m0UOphcCHuTRxvc3Eo
(7) Q2QuT29vUNW0daWxfSDid2UocRIrTRyif2Qke2n0UOqidCHvTRywd3Ep
(8) Q2QvT29wUNW0ebWygSDje2UpdRIsTRzjg2Qlf2o0UOrjeCHwTRzxe3Eq
(9) Q2QwT29xUNW0fcWzhSDkf2UqeRItTRakh2Qmg2p0UOskfCHxTRayf3Er
(10) Q2QxT29yUNW0gdWaiSDlg2UrfRIuTRbli2Qnh2q0UOtlgCHyTRbzg3Es
(11) Q2QyT29zUNW0heWbjSDmh2UsgRIvTRcmj2Qoi2r0UOumhCHzTRcah3Et
(12) Q2QzT29aUNW0ifWckSDni2UthRIwTRdnk2Qpj2s0UOvniCHaTRdbi3Eu
(13) Q2QaT29bUNW0jgWdlSDoj2UuiRIxTReol2Qqk2t0UOwojCHbTRecj3Ev
(14) Q2QbT29cUNW0khWemSDpk2UvjRIyTRfpm2Qrl2u0UOxpkCHcTRfdk3Ew
(15) Q2QcT29dUNW0liWfnSDql2UwkRIzTRgqn2Qsm2v0UOyqlCHdTRgel3Ex
(16) Q2QdT29eUNW0mjWgoSDrm2UxlRIaTRhro2Qtn2w0UOzrmCHeTRhfm3Ey
(17) Q2QeT29fUNW0nkWhpSDsn2UymRIbTRisp2Quo2x0UOasnCHfTRign3Ez
(18) Q2QfT29gUNW0olWiqSDto2UznRIcTRjtq2Qvp2y0UObtoCHgTRjho3Ea
(19) Q2QgT29hUNW0pmWjrSDup2UaoRIdTRkur2Qwq2z0UOcupCHhTRkip3Eb
(20) Q2QhT29iUNW0qnWksSDvq2UbpRIeTRlvs2Qxr2a0UOdvqCHiTRljq3Ec
(21) Q2QiT29jUNW0roWltSDwr2UcqRIfTRmwt2Qys2b0UOewrCHjTRmkr3Ed
(22) Q2QjT29kUNW0spWmuSDxs2UdrRIgTRnxu2Qzt2c0UOfxsCHkTRnls3Ee
(23) Q2QkT29lUNW0tqWnvSDyt2UesRIhTRoyv2Qau2d0UOgytCHlTRomt3Ef
(24) Q2QlT29mUNW0urWowSDzu2UftRIiTRpzw2Qbv2e0UOhzuCHmTRpnu3Eg
(25) Q2QmT29nUNW0vsWpxSDav2UguRIjTRqax2Qcw2f0UOiavCHnTRqov3Eh

['ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'] (52)

(0) Q2QnT29oUNW0wtWqySDbw2UhvRIkTRrby2Qdx2g0UOjbwCHoTRrpw3Ei
(1) R2RoU29pVOX0xuXrzTEcx2ViwSJlUSscz2Rey2h0VPkcxDIpUSsqx3Fj
(2) S2SpV29qWPY0yvYsAUFdy2WjxTKmVTtdA2Sfz2i0WQldyEJqVTtry3Gk
(3) T2TqW29rXQZ0zwZtBVGez2XkyULnWUueB2TgA2j0XRmezFKrWUusz3Hl
(4) U2UrX29sYRa0AxauCWHfA2YlzVMoXVvfC2UhB2k0YSnfAGLsXVvtA3Im
(5) V2VsY29tZSb0BybvDXIgB2ZmAWNpYWwgD2ViC2l0ZTogBHMtYWwuB3Jn
(6) W2WtZ29uaTc0CzcwEYJhC2anBXOqZXxhE2WjD2m0aUphCINuZXxvC3Ko
(7) X2Xua29vbUd0DAdxFZKiD2boCYPraYyiF2XkE2n0bVqiDJOvaYywD3Lp
(8) Y2Yvb29wcVe0EBeyGaLjE2cpDZQsbZzjG2YlF2o0cWrjEKPwbZzxE3Mq
(9) Z2Zwc29xdWf0FCfzHbMkF2dqEaRtcaAkH2ZmG2p0dXskFLQxcaAyF3Nr
(10) a2axd29yeXg0GDgAIcNlG2erFbSudbBlI2anH2q0eYtlGMRydbBzG3Os
(11) b2bye29zfYh0HEhBJdOmH2fsGcTvecCmJ2boI2r0fZumHNSzecCAH3Pt
(12) c2czf29AgZi0IFiCKePnI2gtHdUwfdDnK2cpJ2s0gavnIOTAfdDBI3Qu
(13) d2dAg29Bhaj0JGjDLfQoJ2huIeVxgeEoL2dqK2t0hbwoJPUBgeECJ3Rv
(14) e2eBh29Cibk0KHkEMgRpK2ivJfWyhfFpM2erL2u0icxpKQVChfFDK3Sw
(15) f2fCi29Djcl0LIlFNhSqL2jwKgXzigGqN2fsM2v0jdyqLRWDigGEL3Tx
(16) g2gDj29Ekdm0MJmGOiTrM2kxLhYAjhHrO2gtN2w0kezrMSXEjhHFM3Uy
(17) h2hEk29Flen0NKnHPjUsN2lyMiZBkiIsP2huO2x0lfAsNTYFkiIGN3Vz
(18) i2iFl29Gmfo0OLoIQkVtO2mzNjaCljJtQ2ivP2y0mgBtOUZGljJHO3WA
(19) j2jGm29Hngp0PMpJRlWuP2nAOkbDmkKuR2jwQ2z0nhCuPVaHmkKIP3XB
(20) k2kHn29Iohq0QNqKSmXvQ2oBPlcEnlLvS2kxR2A0oiDvQWbInlLJQ3YC
(21) l2lIo29Jpir0ROrLTnYwR2pCQmdFomMwT2lyS2B0pjEwRXcJomMKR3ZD
(22) m2mJp29Kqjs0SPsMUoZxS2qDRneGpnNxU2mzT2C0qkFxSYdKpnNLS3aE
(23) n2nKq29Lrkt0TQtNVpayT2rESofHqoOyV2nAU2D0rlGyTZeLqoOMT3bF
(24) o2oLr29Mslu0URuOWqbzU2sFTpgIrpPzW2oBV2E0smHzUafMrpPNU3cG
(25) p2pMs29Ntmv0VSvPXrcAV2tGUqhJsqQAX2pCW2F0tnIAVbgNsqQOV3dH
(26) q2qNt29Ounw0WTwQYsdBW2uHVriKtrRBY2qDX2G0uoJBWchOtrRPW3eI
(27) r2rOu29Pvox0XUxRZteCX2vIWsjLusSCZ2rEY2H0vpKCXdiPusSQX3fJ
(28) s2sPv29Qwpy0YVySaufDY2wJXtkMvtTDa2sFZ2I0wqLDYejQvtTRY3gK
(29) t2tQw29Rxqz0ZWzTbvgEZ2xKYulNwuUEb2tGa2J0xrMEZfkRwuUSZ3hL
(30) u2uRx29SyrA0aXAUcwhFa2yLZvmOxvVFc2uHb2K0ysNFaglSxvVTa3iM
(31) v2vSy29TzsB0bYBVdxiGb2zMawnPywWGd2vIc2L0ztOGbhmTywWUb3jN
(32) w2wTz29UAtC0cZCWeyjHc2ANbxoQzxXHe2wJd2M0AuPHcinUzxXVc3kO
(33) x2xUA29VBuD0daDXfzkId2BOcypRAyYIf2xKe2N0BvQIdjoVAyYWd3lP
(34) y2yVB29WCvE0ebEYgAlJe2CPdzqSBzZJg2yLf2O0CwRJekpWBzZXe3mQ
(35) z2zWC29XDwF0fcFZhBmKf2DQeArTCAaKh2zMg2P0DxSKflqXCAaYf3nR
(36) A2AXD29YExG0gdGaiCnLg2ERfBsUDBbLi2ANh2Q0EyTLgmrYDBbZg3oS
(37) B2BYE29ZFyH0heHbjDoMh2FSgCtVECcMj2BOi2R0FzUMhnsZECcah3pT
(38) C2CZF29aGzI0ifIckEpNi2GThDuWFDdNk2CPj2S0GAVNiotaFDdbi3qU
(39) D2DaG29bHAJ0jgJdlFqOj2HUiEvXGEeOl2DQk2T0HBWOjpubGEecj3rV
(40) E2EbH29cIBK0khKemGrPk2IVjFwYHFfPm2ERl2U0ICXPkqvcHFfdk3sW
(41) F2FcI29dJCL0liLfnHsQl2JWkGxZIGgQn2FSm2V0JDYQlrwdIGgel3tX
(42) G2GdJ29eKDM0mjMgoItRm2KXlHyaJHhRo2GTn2W0KEZRmsxeJHhfm3uY
(43) H2HeK29fLEN0nkNhpJuSn2LYmIzbKIiSp2HUo2X0LFaSntyfKIign3vZ
(44) I2IfL29gMFO0olOiqKvTo2MZnJAcLJjTq2IVp2Y0MGbTouzgLJjho3wa
(45) J2JgM29hNGP0pmPjrLwUp2NaoKBdMKkUr2JWq2Z0NHcUpvAhMKkip3xb
(46) K2KhN29iOHQ0qnQksMxVq2ObpLCeNLlVs2KXr2a0OIdVqwBiNLljq3yc
(47) L2LiO29jPIR0roRltNyWr2PcqMDfOMmWt2LYs2b0PJeWrxCjOMmkr3zd
(48) M2MjP29kQJS0spSmuOzXs2QdrNEgPNnXu2MZt2c0QKfXsyDkPNnls3Ae
(49) N2NkQ29lRKT0tqTnvPAYt2ResOFhQOoYv2Nau2d0RLgYtzElQOomt3Bf
(50) O2OlR29mSLU0urUowQBZu2SftPGiRPpZw2Obv2e0SMhZuAFmRPpnu3Cg
(51) P2PmS29nTMV0vsVpxRCav2TguQHjSQqax2Pcw2f0TNiavBGnSQqov3Dh

['abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'] (52)

(0) Q2QnT29oUNW0wtWqySDbw2UhvRIkTRrby2Qdx2g0UOjbwCHoTRrpw3Ei
(1) R2RoU29pVOX0xuXrzTEcx2ViwSJlUSscz2Rey2h0VPkcxDIpUSsqx3Fj
(2) S2SpV29qWPY0yvYsAUFdy2WjxTKmVTtdA2Sfz2i0WQldyEJqVTtry3Gk
(3) T2TqW29rXQZ0zwZtBVGez2XkyULnWUueB2TgA2j0XRmezFKrWUusz3Hl
(4) U2UrX29sYRa0AxauCWHfA2YlzVMoXVvfC2UhB2k0YSnfAGLsXVvtA3Im
(5) V2VsY29tZSb0BybvDXIgB2ZmAWNpYWwgD2ViC2l0ZTogBHMtYWwuB3Jn
(6) W2WtZ29uaTc0CzcwEYJhC2anBXOqZXxhE2WjD2m0aUphCINuZXxvC3Ko
(7) X2Xua29vbUd0DAdxFZKiD2boCYPraYyiF2XkE2n0bVqiDJOvaYywD3Lp
(8) Y2Yvb29wcVe0EBeyGaLjE2cpDZQsbZzjG2YlF2o0cWrjEKPwbZzxE3Mq
(9) Z2Zwc29xdWf0FCfzHbMkF2dqEaRtcaAkH2ZmG2p0dXskFLQxcaAyF3Nr
(10) a2axd29yeXg0GDgAIcNlG2erFbSudbBlI2anH2q0eYtlGMRydbBzG3Os
(11) b2bye29zfYh0HEhBJdOmH2fsGcTvecCmJ2boI2r0fZumHNSzecCAH3Pt
(12) c2czf29AgZi0IFiCKePnI2gtHdUwfdDnK2cpJ2s0gavnIOTAfdDBI3Qu
(13) d2dAg29Bhaj0JGjDLfQoJ2huIeVxgeEoL2dqK2t0hbwoJPUBgeECJ3Rv
(14) e2eBh29Cibk0KHkEMgRpK2ivJfWyhfFpM2erL2u0icxpKQVChfFDK3Sw
(15) f2fCi29Djcl0LIlFNhSqL2jwKgXzigGqN2fsM2v0jdyqLRWDigGEL3Tx
(16) g2gDj29Ekdm0MJmGOiTrM2kxLhYAjhHrO2gtN2w0kezrMSXEjhHFM3Uy
(17) h2hEk29Flen0NKnHPjUsN2lyMiZBkiIsP2huO2x0lfAsNTYFkiIGN3Vz
(18) i2iFl29Gmfo0OLoIQkVtO2mzNjaCljJtQ2ivP2y0mgBtOUZGljJHO3WA
(19) j2jGm29Hngp0PMpJRlWuP2nAOkbDmkKuR2jwQ2z0nhCuPVaHmkKIP3XB
(20) k2kHn29Iohq0QNqKSmXvQ2oBPlcEnlLvS2kxR2A0oiDvQWbInlLJQ3YC
(21) l2lIo29Jpir0ROrLTnYwR2pCQmdFomMwT2lyS2B0pjEwRXcJomMKR3ZD
(22) m2mJp29Kqjs0SPsMUoZxS2qDRneGpnNxU2mzT2C0qkFxSYdKpnNLS3aE
(23) n2nKq29Lrkt0TQtNVpayT2rESofHqoOyV2nAU2D0rlGyTZeLqoOMT3bF
(24) o2oLr29Mslu0URuOWqbzU2sFTpgIrpPzW2oBV2E0smHzUafMrpPNU3cG
(25) p2pMs29Ntmv0VSvPXrcAV2tGUqhJsqQAX2pCW2F0tnIAVbgNsqQOV3dH
(26) q2qNt29Ounw0WTwQYsdBW2uHVriKtrRBY2qDX2G0uoJBWchOtrRPW3eI
(27) r2rOu29Pvox0XUxRZteCX2vIWsjLusSCZ2rEY2H0vpKCXdiPusSQX3fJ
(28) s2sPv29Qwpy0YVySaufDY2wJXtkMvtTDa2sFZ2I0wqLDYejQvtTRY3gK
(29) t2tQw29Rxqz0ZWzTbvgEZ2xKYulNwuUEb2tGa2J0xrMEZfkRwuUSZ3hL
(30) u2uRx29SyrA0aXAUcwhFa2yLZvmOxvVFc2uHb2K0ysNFaglSxvVTa3iM
(31) v2vSy29TzsB0bYBVdxiGb2zMawnPywWGd2vIc2L0ztOGbhmTywWUb3jN
(32) w2wTz29UAtC0cZCWeyjHc2ANbxoQzxXHe2wJd2M0AuPHcinUzxXVc3kO
(33) x2xUA29VBuD0daDXfzkId2BOcypRAyYIf2xKe2N0BvQIdjoVAyYWd3lP
(34) y2yVB29WCvE0ebEYgAlJe2CPdzqSBzZJg2yLf2O0CwRJekpWBzZXe3mQ
(35) z2zWC29XDwF0fcFZhBmKf2DQeArTCAaKh2zMg2P0DxSKflqXCAaYf3nR
(36) A2AXD29YExG0gdGaiCnLg2ERfBsUDBbLi2ANh2Q0EyTLgmrYDBbZg3oS
(37) B2BYE29ZFyH0heHbjDoMh2FSgCtVECcMj2BOi2R0FzUMhnsZECcah3pT
(38) C2CZF29aGzI0ifIckEpNi2GThDuWFDdNk2CPj2S0GAVNiotaFDdbi3qU
(39) D2DaG29bHAJ0jgJdlFqOj2HUiEvXGEeOl2DQk2T0HBWOjpubGEecj3rV
(40) E2EbH29cIBK0khKemGrPk2IVjFwYHFfPm2ERl2U0ICXPkqvcHFfdk3sW
(41) F2FcI29dJCL0liLfnHsQl2JWkGxZIGgQn2FSm2V0JDYQlrwdIGgel3tX
(42) G2GdJ29eKDM0mjMgoItRm2KXlHyaJHhRo2GTn2W0KEZRmsxeJHhfm3uY
(43) H2HeK29fLEN0nkNhpJuSn2LYmIzbKIiSp2HUo2X0LFaSntyfKIign3vZ
(44) I2IfL29gMFO0olOiqKvTo2MZnJAcLJjTq2IVp2Y0MGbTouzgLJjho3wa
(45) J2JgM29hNGP0pmPjrLwUp2NaoKBdMKkUr2JWq2Z0NHcUpvAhMKkip3xb
(46) K2KhN29iOHQ0qnQksMxVq2ObpLCeNLlVs2KXr2a0OIdVqwBiNLljq3yc
(47) L2LiO29jPIR0roRltNyWr2PcqMDfOMmWt2LYs2b0PJeWrxCjOMmkr3zd
(48) M2MjP29kQJS0spSmuOzXs2QdrNEgPNnXu2MZt2c0QKfXsyDkPNnls3Ae
(49) N2NkQ29lRKT0tqTnvPAYt2ResOFhQOoYv2Nau2d0RLgYtzElQOomt3Bf
(50) O2OlR29mSLU0urUowQBZu2SftPGiRPpZw2Obv2e0SMhZuAFmRPpnu3Cg
(51) P2PmS29nTMV0vsVpxRCav2TguQHjSQqax2Pcw2f0TNiavBGnSQqov3Dh
# ./rot.py -m tracks -d "Q2QnT29oUNW0wtWqySDbw2UhvRIkTRrby2Qdx2g0UOjbwCHoTRrpw3Ei"

['ABCDEFGHIJKLMNOPQRSTUVWXYZ'] (26)

(0) Q2QnT29oUNW0wtWqySDbw2UhvRIkTRrby2Qdx2g0UOjbwCHoTRrpw3Ei
(1) R2RnU29oVOX0wtXqyTEbw2VhvSJkUSrby2Rdx2g0VPjbwDIoUSrpw3Fi
(2) S2SnV29oWPY0wtYqyUFbw2WhvTKkVTrby2Sdx2g0WQjbwEJoVTrpw3Gi
(3) T2TnW29oXQZ0wtZqyVGbw2XhvULkWUrby2Tdx2g0XRjbwFKoWUrpw3Hi
(4) U2UnX29oYRA0wtAqyWHbw2YhvVMkXVrby2Udx2g0YSjbwGLoXVrpw3Ii
(5) V2VnY29oZSB0wtBqyXIbw2ZhvWNkYWrby2Vdx2g0ZTjbwHMoYWrpw3Ji
(6) W2WnZ29oATC0wtCqyYJbw2AhvXOkZXrby2Wdx2g0AUjbwINoZXrpw3Ki
(7) X2XnA29oBUD0wtDqyZKbw2BhvYPkAYrby2Xdx2g0BVjbwJOoAYrpw3Li
(8) Y2YnB29oCVE0wtEqyALbw2ChvZQkBZrby2Ydx2g0CWjbwKPoBZrpw3Mi
(9) Z2ZnC29oDWF0wtFqyBMbw2DhvARkCArby2Zdx2g0DXjbwLQoCArpw3Ni
(10) A2AnD29oEXG0wtGqyCNbw2EhvBSkDBrby2Adx2g0EYjbwMRoDBrpw3Oi
(11) B2BnE29oFYH0wtHqyDObw2FhvCTkECrby2Bdx2g0FZjbwNSoECrpw3Pi
(12) C2CnF29oGZI0wtIqyEPbw2GhvDUkFDrby2Cdx2g0GAjbwOToFDrpw3Qi
(13) D2DnG29oHAJ0wtJqyFQbw2HhvEVkGErby2Ddx2g0HBjbwPUoGErpw3Ri
(14) E2EnH29oIBK0wtKqyGRbw2IhvFWkHFrby2Edx2g0ICjbwQVoHFrpw3Si
(15) F2FnI29oJCL0wtLqyHSbw2JhvGXkIGrby2Fdx2g0JDjbwRWoIGrpw3Ti
(16) G2GnJ29oKDM0wtMqyITbw2KhvHYkJHrby2Gdx2g0KEjbwSXoJHrpw3Ui
(17) H2HnK29oLEN0wtNqyJUbw2LhvIZkKIrby2Hdx2g0LFjbwTYoKIrpw3Vi
(18) I2InL29oMFO0wtOqyKVbw2MhvJAkLJrby2Idx2g0MGjbwUZoLJrpw3Wi
(19) J2JnM29oNGP0wtPqyLWbw2NhvKBkMKrby2Jdx2g0NHjbwVAoMKrpw3Xi
(20) K2KnN29oOHQ0wtQqyMXbw2OhvLCkNLrby2Kdx2g0OIjbwWBoNLrpw3Yi
(21) L2LnO29oPIR0wtRqyNYbw2PhvMDkOMrby2Ldx2g0PJjbwXCoOMrpw3Zi
(22) M2MnP29oQJS0wtSqyOZbw2QhvNEkPNrby2Mdx2g0QKjbwYDoPNrpw3Ai
(23) N2NnQ29oRKT0wtTqyPAbw2RhvOFkQOrby2Ndx2g0RLjbwZEoQOrpw3Bi
(24) O2OnR29oSLU0wtUqyQBbw2ShvPGkRPrby2Odx2g0SMjbwAFoRPrpw3Ci
(25) P2PnS29oTMV0wtVqyRCbw2ThvQHkSQrby2Pdx2g0TNjbwBGoSQrpw3Di

['abcdefghijklmnopqrstuvwxyz'] (26)

(0) Q2QnT29oUNW0wtWqySDbw2UhvRIkTRrby2Qdx2g0UOjbwCHoTRrpw3Ei
(1) Q2QoT29pUNW0xuWrzSDcx2UiwRIlTRscz2Qey2h0UOkcxCHpTRsqx3Ej
(2) Q2QpT29qUNW0yvWsaSDdy2UjxRImTRtda2Qfz2i0UOldyCHqTRtry3Ek
(3) Q2QqT29rUNW0zwWtbSDez2UkyRInTRueb2Qga2j0UOmezCHrTRusz3El
(4) Q2QrT29sUNW0axWucSDfa2UlzRIoTRvfc2Qhb2k0UOnfaCHsTRvta3Em
(5) Q2QsT29tUNW0byWvdSDgb2UmaRIpTRwgd2Qic2l0UOogbCHtTRwub3En
(6) Q2QtT29uUNW0czWweSDhc2UnbRIqTRxhe2Qjd2m0UOphcCHuTRxvc3Eo
(7) Q2QuT29vUNW0daWxfSDid2UocRIrTRyif2Qke2n0UOqidCHvTRywd3Ep
(8) Q2QvT29wUNW0ebWygSDje2UpdRIsTRzjg2Qlf2o0UOrjeCHwTRzxe3Eq
(9) Q2QwT29xUNW0fcWzhSDkf2UqeRItTRakh2Qmg2p0UOskfCHxTRayf3Er
(10) Q2QxT29yUNW0gdWaiSDlg2UrfRIuTRbli2Qnh2q0UOtlgCHyTRbzg3Es
(11) Q2QyT29zUNW0heWbjSDmh2UsgRIvTRcmj2Qoi2r0UOumhCHzTRcah3Et
(12) Q2QzT29aUNW0ifWckSDni2UthRIwTRdnk2Qpj2s0UOvniCHaTRdbi3Eu
(13) Q2QaT29bUNW0jgWdlSDoj2UuiRIxTReol2Qqk2t0UOwojCHbTRecj3Ev
(14) Q2QbT29cUNW0khWemSDpk2UvjRIyTRfpm2Qrl2u0UOxpkCHcTRfdk3Ew
(15) Q2QcT29dUNW0liWfnSDql2UwkRIzTRgqn2Qsm2v0UOyqlCHdTRgel3Ex
(16) Q2QdT29eUNW0mjWgoSDrm2UxlRIaTRhro2Qtn2w0UOzrmCHeTRhfm3Ey
(17) Q2QeT29fUNW0nkWhpSDsn2UymRIbTRisp2Quo2x0UOasnCHfTRign3Ez
(18) Q2QfT29gUNW0olWiqSDto2UznRIcTRjtq2Qvp2y0UObtoCHgTRjho3Ea
(19) Q2QgT29hUNW0pmWjrSDup2UaoRIdTRkur2Qwq2z0UOcupCHhTRkip3Eb
(20) Q2QhT29iUNW0qnWksSDvq2UbpRIeTRlvs2Qxr2a0UOdvqCHiTRljq3Ec
(21) Q2QiT29jUNW0roWltSDwr2UcqRIfTRmwt2Qys2b0UOewrCHjTRmkr3Ed
(22) Q2QjT29kUNW0spWmuSDxs2UdrRIgTRnxu2Qzt2c0UOfxsCHkTRnls3Ee
(23) Q2QkT29lUNW0tqWnvSDyt2UesRIhTRoyv2Qau2d0UOgytCHlTRomt3Ef
(24) Q2QlT29mUNW0urWowSDzu2UftRIiTRpzw2Qbv2e0UOhzuCHmTRpnu3Eg
(25) Q2QmT29nUNW0vsWpxSDav2UguRIjTRqax2Qcw2f0UOiavCHnTRqov3Eh

['ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'] (26)

(0) Q2QnT29oUNW0wtWqySDbw2UhvRIkTRrby2Qdx2g0UOjbwCHoTRrpw3Ei
(1) R2RoU29pVOX0xuXrzTEcx2ViwSJlUSscz2Rey2h0VPkcxDIpUSsqx3Fj
(2) S2SpV29qWPY0yvYsaUFdy2WjxTKmVTtda2Sfz2i0WQldyEJqVTtry3Gk
(3) T2TqW29rXQZ0zwZtbVGez2XkyULnWUueb2Tga2j0XRmezFKrWUusz3Hl
(4) U2UrX29sYRA0axAucWHfa2YlzVMoXVvfc2Uhb2k0YSnfaGLsXVvta3Im
(5) V2VsY29tZSB0byBvdXIgb2ZmaWNpYWwgd2Vic2l0ZTogbHMtYWwub3Jn  ==  Welcome to our official website: ls-al.org
(6) W2WtZ29uATC0czCweYJhc2AnbXOqZXxhe2Wjd2m0AUphcINuZXxvc3Ko
(7) X2XuA29vBUD0daDxfZKid2BocYPrAYyif2Xke2n0BVqidJOvAYywd3Lp
(8) Y2YvB29wCVE0ebEygALje2CpdZQsBZzjg2Ylf2o0CWrjeKPwBZzxe3Mq
(9) Z2ZwC29xDWF0fcFzhBMkf2DqeARtCAakh2Zmg2p0DXskfLQxCAayf3Nr
(10) A2AxD29yEXG0gdGaiCNlg2ErfBSuDBbli2Anh2q0EYtlgMRyDBbzg3Os
(11) B2ByE29zFYH0heHbjDOmh2FsgCTvECcmj2Boi2r0FZumhNSzECcah3Pt
(12) C2CzF29aGZI0ifIckEPni2GthDUwFDdnk2Cpj2s0GAvniOTaFDdbi3Qu
(13) D2DaG29bHAJ0jgJdlFQoj2HuiEVxGEeol2Dqk2t0HBwojPUbGEecj3Rv
(14) E2EbH29cIBK0khKemGRpk2IvjFWyHFfpm2Erl2u0ICxpkQVcHFfdk3Sw
(15) F2FcI29dJCL0liLfnHSql2JwkGXzIGgqn2Fsm2v0JDyqlRWdIGgel3Tx
(16) G2GdJ29eKDM0mjMgoITrm2KxlHYaJHhro2Gtn2w0KEzrmSXeJHhfm3Uy
(17) H2HeK29fLEN0nkNhpJUsn2LymIZbKIisp2Huo2x0LFasnTYfKIign3Vz
(18) I2IfL29gMFO0olOiqKVto2MznJAcLJjtq2Ivp2y0MGbtoUZgLJjho3Wa
(19) J2JgM29hNGP0pmPjrLWup2NaoKBdMKkur2Jwq2z0NHcupVAhMKkip3Xb
(20) K2KhN29iOHQ0qnQksMXvq2ObpLCeNLlvs2Kxr2a0OIdvqWBiNLljq3Yc
(21) L2LiO29jPIR0roRltNYwr2PcqMDfOMmwt2Lys2b0PJewrXCjOMmkr3Zd
(22) M2MjP29kQJS0spSmuOZxs2QdrNEgPNnxu2Mzt2c0QKfxsYDkPNnls3Ae
(23) N2NkQ29lRKT0tqTnvPAyt2ResOFhQOoyv2Nau2d0RLgytZElQOomt3Bf
(24) O2OlR29mSLU0urUowQBzu2SftPGiRPpzw2Obv2e0SMhzuAFmRPpnu3Cg
(25) P2PmS29nTMV0vsVpxRCav2TguQHjSQqax2Pcw2f0TNiavBGnSQqov3Dh