day 3 (finally)
parent
e98029b5d2
commit
3acfa4075f
@ -0,0 +1,503 @@
|
||||
(;
|
||||
; Advent of Code 2022: Day 3, in wasm
|
||||
; by Ashelyn Dawn
|
||||
;)
|
||||
|
||||
(module
|
||||
(memory (export "memory") 10)
|
||||
|
||||
(global $readLoc (mut i32) (i32.const 0))
|
||||
(global $inputEnd (mut i32) (i32.const 0))
|
||||
(global $outputStart (mut i32) (i32.const 0))
|
||||
(global $outputEnd (mut i32) (i32.const 0))
|
||||
(global $upperA (mut i32) (i32.const 65))
|
||||
(global $lowerA (mut i32) (i32.const 97))
|
||||
|
||||
(func (export "part1") (result i32)
|
||||
(local $total i32)
|
||||
call $initRead
|
||||
|
||||
i32.const 0
|
||||
local.set $total
|
||||
|
||||
block $readBlock
|
||||
loop $readLoop
|
||||
call $findLine
|
||||
|
||||
call $canRead
|
||||
i32.eqz
|
||||
if
|
||||
br $readBlock
|
||||
end
|
||||
|
||||
;; check
|
||||
call $measureLine
|
||||
|
||||
call $checkBuffersForDups
|
||||
call $convertByteToPriority
|
||||
|
||||
local.get $total
|
||||
i32.add
|
||||
local.set $total
|
||||
|
||||
br $readLoop
|
||||
end
|
||||
end
|
||||
|
||||
call $initWrite
|
||||
local.get $total
|
||||
call $writeNum
|
||||
call $closeWrite
|
||||
)
|
||||
|
||||
(func (export "part2") (result i32)
|
||||
(local $total i32)
|
||||
call $initRead
|
||||
|
||||
i32.const 0
|
||||
local.set $total
|
||||
|
||||
block $readBlock
|
||||
loop $readLoop
|
||||
call $findLine
|
||||
|
||||
call $canRead
|
||||
i32.eqz
|
||||
if
|
||||
br $readBlock
|
||||
end
|
||||
|
||||
;; get start & length of line 1
|
||||
call $measureLine2
|
||||
;; line 2
|
||||
call $findLine
|
||||
call $measureLine2
|
||||
;; line 3
|
||||
call $findLine
|
||||
call $measureLine2
|
||||
|
||||
call $checkBuffersForDupsPart2
|
||||
call $convertByteToPriority
|
||||
|
||||
local.get $total
|
||||
i32.add
|
||||
local.set $total
|
||||
|
||||
br $readLoop
|
||||
end
|
||||
end
|
||||
|
||||
call $initWrite
|
||||
local.get $total
|
||||
call $writeNum
|
||||
call $closeWrite
|
||||
)
|
||||
|
||||
(func $initRead
|
||||
;; Read input length
|
||||
i32.const 0
|
||||
i32.load
|
||||
|
||||
;; Store input end byte
|
||||
i32.const 4
|
||||
i32.add
|
||||
global.set $inputEnd
|
||||
|
||||
;; Set up start read location
|
||||
i32.const 4
|
||||
global.set $readLoc
|
||||
)
|
||||
|
||||
(func $initWrite
|
||||
(local $dup i32)
|
||||
;; set up output end pointer
|
||||
global.get $inputEnd
|
||||
i32.const 4
|
||||
i32.add
|
||||
global.set $outputStart
|
||||
global.get $outputStart
|
||||
global.set $outputEnd
|
||||
)
|
||||
|
||||
(func $closeWrite (result i32)
|
||||
;; get the length to return
|
||||
global.get $inputEnd
|
||||
global.get $outputEnd
|
||||
global.get $outputStart
|
||||
i32.sub
|
||||
i32.store
|
||||
|
||||
;; return location of length
|
||||
global.get $inputEnd
|
||||
)
|
||||
|
||||
;; assumes: readLoc is on the character at the beginning of a line
|
||||
;; returns {locHalf1, locHalf2, lengthHalf}
|
||||
;; updates: readLoc to next line
|
||||
(func $measureLine (result i32 i32 i32)
|
||||
(local $lineStart i32)
|
||||
(local $midStart i32)
|
||||
(local $length i32)
|
||||
|
||||
global.get $readLoc
|
||||
local.set $lineStart
|
||||
|
||||
loop $readLoop
|
||||
call $readChar
|
||||
i32.eqz
|
||||
if
|
||||
nop
|
||||
else
|
||||
br $readLoop
|
||||
end
|
||||
end
|
||||
|
||||
;; compute half length
|
||||
global.get $readLoc
|
||||
local.get $lineStart
|
||||
i32.sub
|
||||
|
||||
i32.const 2
|
||||
i32.div_u
|
||||
|
||||
local.tee $length
|
||||
|
||||
;; compute middle length
|
||||
local.get $lineStart
|
||||
i32.add
|
||||
local.set $midStart
|
||||
|
||||
local.get $lineStart
|
||||
local.get $midStart
|
||||
local.get $length
|
||||
return
|
||||
)
|
||||
|
||||
(func $measureLine2 (result i32 i32)
|
||||
(local $lineStart i32)
|
||||
(local $length i32)
|
||||
|
||||
global.get $readLoc
|
||||
local.set $lineStart
|
||||
|
||||
loop $readLoop
|
||||
call $readChar
|
||||
i32.eqz
|
||||
if
|
||||
nop
|
||||
else
|
||||
br $readLoop
|
||||
end
|
||||
end
|
||||
|
||||
;; compute half length
|
||||
global.get $readLoc
|
||||
local.get $lineStart
|
||||
i32.sub
|
||||
local.set $length
|
||||
|
||||
local.get $lineStart
|
||||
local.get $length
|
||||
return
|
||||
)
|
||||
|
||||
;; moves readLoc until referenced character is valid (not newline or null)
|
||||
;; if position under readLoc is already valid, does not move
|
||||
(func $findLine
|
||||
loop $moveHead
|
||||
call $canRead
|
||||
i32.eqz
|
||||
if
|
||||
return
|
||||
end
|
||||
|
||||
call $readChar
|
||||
i32.eqz
|
||||
br_if $moveHead
|
||||
end
|
||||
|
||||
global.get $readLoc
|
||||
i32.const 1
|
||||
i32.sub
|
||||
global.set $readLoc
|
||||
)
|
||||
|
||||
;; returns the byte that is duplicated across both
|
||||
(func $checkBuffersForDups (param $startA i32) (param $startB i32) (param $length i32) (result i32)
|
||||
(local $currentChar i32)
|
||||
(local $prevReadLoc i32)
|
||||
;; preserve read loc
|
||||
global.get $readLoc
|
||||
local.set $prevReadLoc
|
||||
|
||||
;; set up read location
|
||||
local.get $startA
|
||||
global.set $readLoc
|
||||
|
||||
loop $checkChar
|
||||
;; set up comparison locations
|
||||
local.get $startB
|
||||
local.get $length
|
||||
|
||||
;; get comparison char
|
||||
call $readChar
|
||||
local.tee $currentChar
|
||||
|
||||
call $findByteInBuffer
|
||||
|
||||
;; if not found
|
||||
i32.eqz
|
||||
if
|
||||
;; check length
|
||||
global.get $readLoc
|
||||
local.get $startA
|
||||
local.get $length
|
||||
i32.add
|
||||
|
||||
;; if we still have chars
|
||||
i32.lt_u
|
||||
if
|
||||
br $checkChar ;; loop back
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
;; reset the read loc
|
||||
local.get $prevReadLoc
|
||||
global.set $readLoc
|
||||
|
||||
;; return character (if found)
|
||||
local.get $currentChar
|
||||
return
|
||||
)
|
||||
|
||||
;; returns 1 if byte occurs, 0 if not
|
||||
(func $findByteInBuffer (param $start i32) (param $length i32) (param $byte i32) (result i32)
|
||||
(local $currentChar i32)
|
||||
(local $prevReadLoc i32)
|
||||
|
||||
;; preserve read loc
|
||||
global.get $readLoc
|
||||
local.set $prevReadLoc
|
||||
|
||||
;; set up read location
|
||||
local.get $start
|
||||
global.set $readLoc
|
||||
|
||||
loop $checkChar
|
||||
;; get buffer char
|
||||
call $readChar
|
||||
local.tee $currentChar
|
||||
|
||||
;; check to search char
|
||||
local.get $byte
|
||||
i32.eq
|
||||
|
||||
if ;; found
|
||||
;; reset the read loc
|
||||
local.get $prevReadLoc
|
||||
global.set $readLoc
|
||||
|
||||
i32.const 1
|
||||
return
|
||||
end
|
||||
|
||||
;; not found
|
||||
|
||||
;; check length
|
||||
global.get $readLoc
|
||||
local.get $start
|
||||
local.get $length
|
||||
i32.add
|
||||
|
||||
;; if we still have chars
|
||||
i32.lt_u
|
||||
if
|
||||
br $checkChar ;; loop back
|
||||
end
|
||||
end
|
||||
|
||||
;; reset the read loc
|
||||
local.get $prevReadLoc
|
||||
global.set $readLoc
|
||||
|
||||
;; not found
|
||||
i32.const 0
|
||||
return
|
||||
|
||||
)
|
||||
|
||||
(func $checkBuffersForDupsPart2 (param $startA i32) (param $lengthA i32) (param $startB i32) (param $lengthB i32) (param $startC i32) (param $lengthC i32) (result i32)
|
||||
(local $currentChar i32)
|
||||
(local $prevReadLoc i32)
|
||||
;; preserve read loc
|
||||
global.get $readLoc
|
||||
local.set $prevReadLoc
|
||||
|
||||
;; set up read location
|
||||
local.get $startA
|
||||
global.set $readLoc
|
||||
|
||||
loop $checkChar
|
||||
;; get char in buffer A
|
||||
call $readChar
|
||||
local.set $currentChar
|
||||
|
||||
;; check buffer B
|
||||
local.get $startB
|
||||
local.get $lengthB
|
||||
local.get $currentChar
|
||||
call $findByteInBuffer
|
||||
|
||||
;; check buffer C
|
||||
local.get $startC
|
||||
local.get $lengthC
|
||||
local.get $currentChar
|
||||
call $findByteInBuffer
|
||||
|
||||
;; make sure found in both
|
||||
i32.and
|
||||
|
||||
;; if not found
|
||||
i32.eqz
|
||||
if
|
||||
;; check length
|
||||
global.get $readLoc
|
||||
local.get $startA
|
||||
local.get $lengthA
|
||||
i32.add
|
||||
|
||||
;; if we still have chars
|
||||
i32.lt_u
|
||||
if
|
||||
br $checkChar ;; loop back
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
;; reset the read loc
|
||||
local.get $prevReadLoc
|
||||
global.set $readLoc
|
||||
|
||||
;; return character (if found)
|
||||
local.get $currentChar
|
||||
return
|
||||
)
|
||||
|
||||
(func $convertByteToPriority (param $char i32) (result i32)
|
||||
local.get $char
|
||||
|
||||
;; check if lower case
|
||||
local.get $char
|
||||
global.get $lowerA
|
||||
i32.ge_u
|
||||
|
||||
if (result i32)
|
||||
global.get $lowerA
|
||||
else
|
||||
global.get $upperA
|
||||
i32.const 26
|
||||
i32.sub
|
||||
end
|
||||
|
||||
;; get alphabet offset
|
||||
i32.sub
|
||||
i32.const 1
|
||||
i32.add
|
||||
return
|
||||
)
|
||||
|
||||
(func $readChar (result i32)
|
||||
(local $charcode i32)
|
||||
;; Make sure we're still inside the input area
|
||||
block $readLocCheck
|
||||
call $canRead
|
||||
br_if $readLocCheck
|
||||
|
||||
i32.const 0
|
||||
return
|
||||
end
|
||||
|
||||
;; Read the character
|
||||
global.get $readLoc
|
||||
i32.load8_u
|
||||
local.set $charcode
|
||||
|
||||
|
||||
;; increment read location
|
||||
global.get $readLoc
|
||||
i32.const 1
|
||||
i32.add
|
||||
global.set $readLoc
|
||||
|
||||
;; check for newline
|
||||
local.get $charcode
|
||||
i32.const 0x0A
|
||||
i32.eq
|
||||
if
|
||||
i32.const 0
|
||||
return
|
||||
end
|
||||
|
||||
local.get $charcode
|
||||
return
|
||||
)
|
||||
|
||||
(func $canRead (result i32)
|
||||
global.get $readLoc
|
||||
global.get $inputEnd
|
||||
i32.lt_u
|
||||
|
||||
if (result i32)
|
||||
i32.const 1
|
||||
else
|
||||
i32.const 0
|
||||
end
|
||||
)
|
||||
|
||||
(func $writeNum (param $number i32)
|
||||
(local $digit i32)
|
||||
;; store lowest digit
|
||||
local.get $number
|
||||
i32.const 10
|
||||
i32.rem_u
|
||||
local.set $digit
|
||||
|
||||
;; divide number by 10
|
||||
local.get $number
|
||||
i32.const 10
|
||||
i32.div_u
|
||||
local.tee $number
|
||||
|
||||
;; base case
|
||||
i32.eqz
|
||||
if
|
||||
local.get $digit
|
||||
call $writeDigit
|
||||
return
|
||||
end
|
||||
|
||||
;; recurse (to print other digits)
|
||||
local.get $number
|
||||
call $writeNum
|
||||
|
||||
;; print our digit
|
||||
local.get $digit
|
||||
call $writeDigit
|
||||
)
|
||||
|
||||
(func $writeDigit (param $digit i32)
|
||||
global.get $outputEnd
|
||||
|
||||
local.get $digit
|
||||
i32.const 48
|
||||
i32.add
|
||||
|
||||
i32.store
|
||||
|
||||
global.get $outputEnd
|
||||
i32.const 1
|
||||
i32.add
|
||||
global.set $outputEnd
|
||||
)
|
||||
)
|
@ -0,0 +1,301 @@
|
||||
CjhshBJCSrTTsLwqwqwb
|
||||
GtmnFHlDfcpHbLZjtTTRLWwb
|
||||
fDfNHHjVFNvvrvVBJJdS
|
||||
PPWvWQjPhrPQwlMWJJdMDGbJTdCJ
|
||||
rsqsStgNNggBNBZHSrJGdJdCFRRZCFbGbTdJ
|
||||
qgBqqHzzggBpzSnBNqNSSSgcfhrVlVmwPljQVLVwVvQmmzVl
|
||||
bBBGBfmGvBTnGtGJBtGpcJbZrrddjqrZhDldwdcqrjrjDr
|
||||
HWPSQMsPHFsMWPVVMVSHCwDCDwwZZvwjwQZZwjdd
|
||||
vVHPgHHFRLfpfJTLLtJL
|
||||
LWLZhDBHhWWHjBwHwBjCTrBnnrQTQCJTJpTQBQ
|
||||
vvdcqbRmvwSFmRqPFSqwdvtQnrpCQJpNNVnrptVCtCCP
|
||||
wRSffqlFgvvdgdlzhLWWDzLljZhhGL
|
||||
LNbTbPdTNgnShgSjmHcqtQGCtrctCPcQqc
|
||||
vzWZDZZBlDwlzvDRZfFBRzVBtMMGHCcpjrqBGMtQQppqHtCq
|
||||
DfRvFZjZRsRjlVWsjFlWVWvdSdbhsSmnSngTdTSTsJdSLm
|
||||
nnZRbfZRTZfRsbZTFPRfpbRJdqqQNPwNqvvwvvvSwdQqdS
|
||||
WjDzjMWMHpQwcSQWcJSS
|
||||
hrHhHDgpphmjtMrGLDmGgmnbsflbfZCsnsClltsVsfRR
|
||||
QFngsFnGdLGFGVRgLLqWPQPWvBrMDppCPrDB
|
||||
NfcHZZzbHthSZtNtNfhHWhClDvCqlrqBvrCpWMWB
|
||||
fSMSHjbTMVgVVngVgT
|
||||
llnMffwbvCnffHvJJPJpPBNVVZDJDmmS
|
||||
QssGGHhRgcqjRRTWGWRGDZcVFZBpNBmPFBDSmZNP
|
||||
hzsRHWQshzgRjjsgQRTsbwzCtnrrlnrwzMCtvMff
|
||||
HdddHHmtDMDTqHHSftmqdmfdssGzrsjVGtrllWlGZGsnlnnp
|
||||
BQNPNPgPhBBhCJQhbCgCnrrnbZnlWznzpGssllVW
|
||||
LFNZRvCPCFZmHmTLcwdwcq
|
||||
zQRDChCnVhqRllpzQlzqCVVzPvNHTTFFHlNPsPNvTBPBHBFT
|
||||
wcfdfDmfPHjdsHPs
|
||||
cwGMwMMbwbmwJZfDSMmfwcpRVWzQqnnnzGVVnhqRVCph
|
||||
CScCSPcPszFJWSMjGZHMpGMjvG
|
||||
TTQfQvBTVBfrDVRDVqGMmjZqnpnGmMpnnpZZ
|
||||
NDdbrQdVQDNNfvTVNdBfrDBJFcsLWcCJzWFCcFLbFcFJsc
|
||||
WWdzhpHcHHrtzGBJMwmjJGmBtP
|
||||
CqsgqNrVnlCBCvPjCBmPJm
|
||||
LDDDLnVsqsgTQsgFcQzbQdprbWHzdb
|
||||
nFpNPGLGrntlrFLpflfBTcJwSgwQvGwbgSvbvJvT
|
||||
DHZWmMDZZDHPMHsDJQbbgSJcvbQgjwJM
|
||||
CRdzzdDDVRHWWNlPfPzllnFLlL
|
||||
ZJVqGSVCJCSgdSvtjtvcjcjbNl
|
||||
pmDWFnDFMnDdFLDHffjcbjjtBNctBjBMbMcl
|
||||
dLnfmdLLmrWsgZqCThgssgsq
|
||||
CLsvLLQvrlrrpLpw
|
||||
tmTHnNtgmzgWmpjlpjnwrrlRjw
|
||||
WHgTdmNJmJTDDrtFWsVGQqBQqcCCbhdvCB
|
||||
jwCHwmWRTWRWJwfcgVgflvPqPBPH
|
||||
MpphdbZZpZMNZpsdpZLMgjBlBqDvLPjfLVPBgPfv
|
||||
ZdrZsjQbnMCGwrRwzmTr
|
||||
CMDsWppsfhjNNzzzcBrbPgnrrnVBQHBNrV
|
||||
ZmGdTdvtStFDtTvtBHgPHnPHgnrnHVmH
|
||||
ZtLZdwdGqtZqLTLtwvfjDWcRscqMCDsCfWjf
|
||||
QQPPfPjLNLfSShfNRSRrrGHzvHrvlvnHRDJJ
|
||||
WCMJJVBwbGCbnbCl
|
||||
gBJmTBBMchsSjgfS
|
||||
NvCQGNRQQrWRpWhhvQrNLgrJqTVzzLFZsJqJZFcJTqFMJJ
|
||||
ttdBllbCSdcsJVVVzVMb
|
||||
CnwfwwdlnPGQgpnPvv
|
||||
WQmnmBBmWRCgDpndbD
|
||||
SvjsqGGqTSTdbggS
|
||||
lZbFJqLjvHZrcZNHcc
|
||||
gcgQhclQlntnnvBMZlwffTBLwv
|
||||
JqzNpqbmpJCbbzCfNFFqfWpZvDVTqBMTrTLvrTMTrvrZTT
|
||||
NbJWCpRWSFWNWJCzmRNRdchcdHcchnfncnhntcdjng
|
||||
JvDwhPWPzvzPDggWlvCQgPtHgtGnHtNqLqTnHTHHnnVg
|
||||
jBsfcbpdQsRcsSpRcjZjHNGtnnVncVtqTVVNVNNT
|
||||
prBbsjQdSbZdSFwMzrhPMWwzwlvC
|
||||
SStQfWQmJQjjhphQ
|
||||
sMVTwvLTswLwwqMPnnhglbHgglPh
|
||||
RDrRVrVCsrssBFWffFCZthfNFN
|
||||
ZnpgzcqgmhHtfwSDwplwVV
|
||||
QCrBNLdLrrnSVSrl
|
||||
LQQLLLjTBjGWnNBBGLFZbGgMcsMsZzbgbZZgsZ
|
||||
ZnbzbhqPbMrnDGjtQGSRVVMGpf
|
||||
gFdTlNJFGVGChJCt
|
||||
HgswWLNdhwTTwWsNNvzPmbvbcZbrsbrmzP
|
||||
SHpDqcJvBmJgJJHgDphHmvhTddWlLsZTTdFWMMsWtthZ
|
||||
GPrRCPfRfjjwffjrrnPVPsTLZFwLWMzLdTsTFzzFWT
|
||||
QPfZVNfbfQnRVjCRrPJBvSJgpDSDBHNgBJpB
|
||||
mjpcZcHcrqjrNmNpNmptHNHWwvCwgwCgMmQgRQsRMgwMvnCg
|
||||
DfSfFSVtDSTJVfdGJMwPnMRwnRCPQgMR
|
||||
DDfzDVdbTbzVDDtrtqlHptqbjbql
|
||||
lsBgqLqhqqgBBvGLBwQJJHRpJCJDHMwhwz
|
||||
NCVfntPnVnfrZtfdbTntnnWDDMDwwRRJmJDWRWJmHRzpJD
|
||||
ZrZbtbSZfdNVfbtCrbPTndsFvFLFSqcGLBFgvgjsgcqj
|
||||
gwRCCDmlZtPDdtBBPM
|
||||
VLrjccJVcJTfTtLjscVBHjHPjPQQSPpBHMjBhP
|
||||
rfcJrzvvctrscvzRqGRCZvmqbmwqZw
|
||||
nffqBWfRfRnpBfznpWTpTlWNNbcrDcbGbPhrGVwGlllPGN
|
||||
MsJQsmQLjMMFsmjbPZNcNbrbmGVhZZ
|
||||
LCJsFSsJFMFpfrTBWSvqpB
|
||||
vSspfvprpTNTZNTj
|
||||
LlFQCtnwMqqSmCMPmMSwClCJhBDJZZJZZjBTjQNjJbdjTT
|
||||
PHtwMLPqCHsfVRGvSR
|
||||
HjLDQMjtRvTmfTfmtf
|
||||
BddChcvvhwhqgmqTfnSmdg
|
||||
NBVVZJhZVhZsJJzhJZNHrRMPbQvHrjPvPDRvRN
|
||||
GgwtwntLQmNjvRGJGv
|
||||
wwzWzrzrqWjRlhJrNlrj
|
||||
wBWSCMPMcdnHsTHPsn
|
||||
MggMDDJzdbvsjCJvWJnJ
|
||||
THBGGScfHwHqHGTGTBqfSWCsnWBCbvsbshjRnZWZCn
|
||||
HwltftNGtmHHGqNlGmfPrVDDgzpVplpzDpVPbP
|
||||
shMdsCMpQMCZMQsZQVDJnvvPpPLSvLSLLV
|
||||
RmgzGTGRmClLNCvzVn
|
||||
rCrRftmftWjbTttjcdFZBcjdsFqZQFjZ
|
||||
qLwvNLtLvPGqSltLLqvNSpflMfQfMpMnBBggslMpfB
|
||||
VDcVzzDRRVTDgMPBBgdfQD
|
||||
VVWrcHbVzrzVjHPNqSmtqJJwjLGN
|
||||
nBswlBBhntTttbFVnt
|
||||
JNjTHZvLHDLVVLtCCFFPLz
|
||||
THvNddgZWQNDNZgjZSfGwfsBrhmfGBhcWs
|
||||
cCSbPmJqwqJjgJtTzJZT
|
||||
BpBTFFTQZzQgNgZv
|
||||
sFRVpsfrfrLfslwTcTccwcnCcTRC
|
||||
DLjLwDPjVPnWWvVWVjcqzSCJTzSzMTtSrqRqJn
|
||||
bdNGgmbGHdZdHbSRqrTJzrMtTR
|
||||
dhGmFffGQsWjshcVpt
|
||||
TrGzZpzWhCHcPPpF
|
||||
sqsJqtlqDVDJVJttgNSbsQPfcjQcBQjhFFRSPQHFRc
|
||||
VgqbtllbdvNtDdLZrHWGmwdrLM
|
||||
DNrqBvvZZNDDHBFJmMNbLMRctztznRsbds
|
||||
hlSlPPWfQCChPtWWfjTwLzbdRcbMsbMjnRLsgzsz
|
||||
PCfWwlQpTTVmmtqmVGrvmt
|
||||
lLrlLRbgrjRbRjFlRrnRRdgPdWdCwdWqmWPwqScdPc
|
||||
tDZLNGHsNQZDNBGHTCVSddVCPwVqVtcdWV
|
||||
BhGLBNvhHDTZDjfRvbfjljbbJf
|
||||
McRctHfDctZGlZZWgpcW
|
||||
TTQLQqLSLqTqhdLqPzLqLwrpsGpWVGFZGrlgWZGhFllV
|
||||
QNdzbQgzSvqPzqNqvnnbtfbRfDntCfMRjn
|
||||
bHQvFvffjpVvPSTvVm
|
||||
RDLRRDLBnVbsDsqDSb
|
||||
MtGGtJJnwnLltblMFCHfQcthjNfjHCQN
|
||||
FQfFldFCSRRFQSQmLVfRGwGDDGZDhDGwmmhZtthZ
|
||||
cTpscpCcNzNNvCBgbPPwvZGZggbghb
|
||||
TNzznnccTjTspHWNzCTpNlRRQnlfdVFVfLLJFrFJQQ
|
||||
LsMMLCQQQMTJnJMnsJlGlZJNvbNVGNNSDJ
|
||||
fhcBqmfvmtRftcmfVVNNVbZSSDVGZmgG
|
||||
BztFRjFjBchWzhvWTHWTMCdwTdTQnH
|
||||
cpddMRdHTSNRtRztbG
|
||||
mWvrQnQFhFNtsSNV
|
||||
vrBnlLvWvlPCCnrrmBrnQQLmTMHwHHccMgggTNjdcDwjNgCw
|
||||
hlRhqRnQQHcbBHGVVgRLVmrRgrLR
|
||||
sCFMTMwtzFMzTwCsswWjCsdQJmJLGfrrgLfgPmPVVVmtLP
|
||||
TMDjCFMTHShBQSDB
|
||||
fcpssfGWpRDnvDRWvD
|
||||
LMvQlPLtLQZbQjBqZBFnCRFZRFzR
|
||||
jlQrvjlbjbLffpdpdrmGwr
|
||||
hbRTjRRZthvSDvDn
|
||||
LGrwPfrGfLjqvBsHzBrvstBv
|
||||
mpCLCqqqLcwcwCLmLmwwdWgWgVVMTbbWbRdQVNjC
|
||||
QLCqzhzQDqhHsCJjTcVdScccSVgs
|
||||
NMPBBfwbmwmmGnfpTJJJcTrRjRJJddpr
|
||||
mflmdfBBlnPBvBNGnwlGzhDqzHZzZtCLZqqltHtL
|
||||
GGsFmSmFHHGZsqhSTQjlNQNzpptD
|
||||
JfVJvvJfWMPPnVVJvhlNlltDldzpjpTzQn
|
||||
LgLcwJffMMLcwPVvPMvsmRqTmbGGssgGssRRqG
|
||||
ScnbPhwPHPTbwCGJBDtNZZPZDsttNB
|
||||
FjfQlVVWrQgfQrrWfddnWfQlqJqJMNJBZJqsZtsJjJsvDjJq
|
||||
lrVngVQpmmmrlnLGLLmTzchcwhHh
|
||||
QZtDJqWZtWGmhJJjvVBP
|
||||
crNMSpcdNNFcrdzlrsVGVnvhmnvHbjVjjrhV
|
||||
NTszNMSpwTNFzcsTlsLRQLtWwZDDfQgZhggQ
|
||||
mfmdLLLqsvZzjfPgPT
|
||||
hppLhBNpHGrhHnQQhGMDhPbPbWzvZzbMzZFPbvbvgz
|
||||
BNGGNLGcQpCcSstSRmct
|
||||
mnjsJBjBRsmFsSRqqrGfrqqtrfrN
|
||||
LZDHZZzdcdQzLbcgLwGtNVrlGrMVNfrllHrH
|
||||
DPcZZzdQpZPzQQDpDdcpbcPgmBBBsnWfTBmnJmCsjjsPSTjJ
|
||||
jwwHjCPvLVmhmRdJvr
|
||||
gTBnbFGTTQMgnTbdbhHhrplhJdlV
|
||||
DTScZTgSSnGTBFzjDwtLtDDHqwwL
|
||||
RZWhWWRSgBRrdMRdCmtcdtLncHndqF
|
||||
bssspTjbVDQGTVGTQsJpbvLtVmFLqqHgnLmCcFnmHC
|
||||
DpfQJJQpDsGzzfDNhPBlPlMBNhghPZlW
|
||||
VzJrJMBntJpMnBBJMDDGDQLLQwwDpQLGLG
|
||||
WSFCWNWWWhQRzvNqLTRD
|
||||
CbSlSlWHghChhWlcclgcWdHgfrmbmznnffMZMztrMbrJBBBJ
|
||||
gtjBNTvDQNBPlBFlPFZPdP
|
||||
mCmpfJCVmMzmfsHpCWdGPWCCWZGtSFtF
|
||||
zJnhJnJzbbMMpnspmmfsJpLNgqtrjQvrTbTgLgtqgqLj
|
||||
CLJnZZCJLJZJgZZZJMLSTgnRdFWpFdfFWBffpqDBfjFWQdRD
|
||||
slNzNzzwwPQrfWmDmqBFWlDm
|
||||
zwHhsVHwQcHJCgnngMZn
|
||||
wLRLLddJLdZZZjHdRwgJsjqDVsDVSVGSscsVVmDq
|
||||
tvMWfnhMvnvztzzVSVqqmcSSVsDGmW
|
||||
TmhhpnnFlfMzMMRZRPTJRHwdPJZB
|
||||
sLsQSLvcSrbQbFGlWlCD
|
||||
BhgPBqBhPwmmpPlGhZMVCFFlbZGF
|
||||
nCBBTPBHdHwmfCvTLStLJSctrJtt
|
||||
vwNjwvBSSNndtdBJMJsLvZsJhZpPLM
|
||||
TmCQDHGTVTLhPQhpZprq
|
||||
CbCmmTzfVGfFGGCNbctwNPtcSnbjww
|
||||
NWQQdHdTddhGrnJjqCRggvRmhzmm
|
||||
wLLVHcFFFfwtFfJzqRvmRqzRVgVz
|
||||
MlwFfflbLFfbwctDplwcwFMMNNWdWNTNSWDQQnsQNWWHsrQH
|
||||
QlfbQrBjBQvfDBjhlpwpqbMzwWppGWqGwG
|
||||
VJNcVCJgcntgRcsZWpPDPDqzPTqqnTpL
|
||||
ZCRNRNmcJZCcNNVRmVdmHfjdrlfhSrvBDSfH
|
||||
MzzPjGpjpGPPjdtHBfBNBQBrbtlclV
|
||||
FqCnZcgcnFsWqmVHVHlgfBrbQVVb
|
||||
STmCLFZWnTsWvdvSSdvPpGcP
|
||||
lNjczlDNCSRMSmlR
|
||||
VbhwhgwGQgwpvQpVDpSCbmfnCPfnMnmPmmBn
|
||||
VhvGTdhwQwVVVsQQshjcDZdHdqzcDdJrjjzH
|
||||
DhPffCSLCPCwfPPqqwqVjHFjzljppl
|
||||
TBWBRWTMRBTTBTBdbQqztzQtWqzQFqbV
|
||||
sgGTBGTGmNvrGfrz
|
||||
hJgqGzqQmGQMQzgGmJGhJQSvZPfppjjPnZNTTTTpjWJvWp
|
||||
lbwbRsRdbdmLdrllbbDcrHwwnjvjNfPWWZwWPjPjjZnTZZpf
|
||||
dDDrdlDBHbDtVFSqmBShMMVF
|
||||
ddvtMZJdJTtDvgtfZJfvtWZlHpGljLRcBcjplLwGRnnLGlGc
|
||||
SNbFbrCNhQbrVQCQSCVzbLjBGRGRGwTBVwpnRGcHcw
|
||||
bbhrTzrbrPrSQFrTTCmFQPCJmJqvJfZZWftZmZJqDvgfJv
|
||||
vWLsTNNscttvNTLTLHRgcdqBnVSZVZVWVZqdSdJwwd
|
||||
jDrFMhGPbGGFFPChDGpGBdngZMzVSSwZgJSqgMSV
|
||||
bjjPQjphCPprhFrCCjFPDCTmcLgLtsTlmsNsQTtscQHt
|
||||
PdhqLdNccGsrNLpScBnDznjnBnzppQwpHz
|
||||
ftFtMbtfRMMWTvfRgRWbWMTjjzngzCzjzmDPjjwQDCDQmm
|
||||
MRWVVfWfbFWWTbFWlvvRWPJGSLSLNJcPVsqJPcLSGr
|
||||
fdRbPbHmnqvrvHDz
|
||||
psTdcMgjjNpllVVgjJslMdpMhrttthznDttBWttBvWcnzBvh
|
||||
gJjgVNFppjgCCVNsTTCsZbFwmmmmQGZSZLfwSZZd
|
||||
csDFpcpJFbccqpFqpfggJJsljhvlTvQQtjwPTmjPPjRTtNvh
|
||||
ZBGLddVCSVwNThhCQjPj
|
||||
ZHLLLrSHGSBzWWzHWpgwcFbJsfcgJbsrgg
|
||||
QJljRQLGJSNjMjQBLLJllFznzVCFpBnnzgwngpDCnD
|
||||
mHWrTmWrdZHWvdrdWrdZttsFspFVcpzcwcggzpwzwVwDVp
|
||||
vfzWvqTWWtPffWHqrWTZvTNSjRjQGGPPRbJbllQbMlJS
|
||||
DFnFprBLpHcSlJHRBl
|
||||
dbdMMCdsVWmMPlHSSVPVJfcf
|
||||
sllvhgsdLThDnhQF
|
||||
BSFTWCJWFJmBJdbcgDHgfDzHbncC
|
||||
MjMPNjhlslPPLjPqPqVcDttzLBHcgDggDggDbB
|
||||
MZhjMsBNNMhPrNjBrMhMPZWRmFmQFRRFFFQmWFQGFQ
|
||||
NFgqSSrtlNbNffffffmFFZCf
|
||||
WPvTBPPnBWmdJjCsPmVd
|
||||
zBwhwwTRWwhvvzTvnhCTnCnSbbqlNStNbLltDRDHRHqtDR
|
||||
NgggqJTHTJscdjggNVDVRcNHGLQWqpffZQGQGqpQWpWwQZfW
|
||||
vvBPBhBFrzvnzSSrrSzPMtWZZcWGwmLnWQWpQlwGwpnl
|
||||
rzbSCtrSttMctvvFMvrvPvgNJDRNHDsHNJsjTjsJJsVb
|
||||
HbGVfpJbmbpHLBfHbdChRDDwDRhFlMlFVDFr
|
||||
QzNQqcNgtqcNMjgqtntsgswRDDRQlFDSFQPDFRDwhCFR
|
||||
ngscZtsqsznnnszqTnnqHfLWLWLWZmJpWMJGLBZb
|
||||
cTNmqSbTBFhBQZjq
|
||||
vswHWHWzHMMttvGGwgppttRfZFZjfBnQnfQZBhwQfhRB
|
||||
lglsvMHHWHsWjHMtsvHvjWvTmJbCmcCcbCTcJlTmSmPSPT
|
||||
JjSBbBLppbrvZGhhhvGwZNRtNMPCqCPqRgCFRNMgjP
|
||||
lWlmDsdDnszRRwdCcNcdwd
|
||||
TsDwwVTWsHTmTWVzQflQJbSGhZrZZQBhvBSrJZSr
|
||||
JcrncrnrcZcGtJzfrrrzqbTWTlvW
|
||||
SCRSDRPSLgRDCHdjjgmdDSHqQTzlmTNNVWbqfbvQzQlbfb
|
||||
gpvpHHPPLdLRCSgjpLPtpZZMtnBMZJZBZBtMZs
|
||||
lQSvJllvHBPPHPHWSPQQJtDtnhbwDDwwtwfhrrVw
|
||||
MgLLdsMsgpRpTLLMgFrbFnfhNbbrhtwDwDDr
|
||||
MqpTpqGRLpMgBzGPSvlhSBhW
|
||||
NqpNNNPzhwzzshPwRPHWRmRFQWHDQPHD
|
||||
VcbcnbjbbrrbbcnbZQDHmlRSVlvZWRFm
|
||||
MttmjTtMrhqwhLhtdN
|
||||
dMggwDwvMdqgqqtqwHnzVnmGmGtGRrFmsJrN
|
||||
SlBClclffBPfZlssrGnJnZZzzznF
|
||||
ljfTPplCpLcpBBPfTBfcCTbvbDMMFhqdvqWpMWHMDMpd
|
||||
llTNZlhSvqMGlZMGhGgGlttrbVVwNjDbNFJbtjjDtN
|
||||
fQWCBWQBBpBCsmzPmnmddQccwJtjdVbJDtDcrrjwjbFr
|
||||
QzpQCRspPPPmzfppmmBBWLhgTZZTMRwSTgLlqvMqGG
|
||||
HSfnNllsHThcchcJBjJhRL
|
||||
FQQdzFCrFMbdFbrJBcqprcBrcBDqcB
|
||||
mtmMFJJmnTfnsHvm
|
||||
nddbfrBHdvbdBBhhhnWmtLsBGQCCtpmmMGPMQP
|
||||
cwVVqVNggDgjZDFspptttQrsPgpttp
|
||||
wDjczVZqSFDZVlSvrfhHlJHThh
|
||||
CttLqSPLqLHhhCdGGTgdlZfclNlsfglbTg
|
||||
nzFJpQJWVQjFmnmpjFWzVvBbMBTBNNTfTgZlTgFMNNZb
|
||||
njDDWpVWQjQnzZzjJjnRRwCqPtLLrSqhSwCPCHqG
|
||||
BFmNvfFNJRrdpMLLLVldWm
|
||||
jPjGGwqsndHZqJqM
|
||||
GtTSbjbtJjGQsQSSbPSGbzNgCRcCTCFhvfFgFFTBhfRc
|
||||
rwBvGlDrBMSzMvGVSBwMSZgnJmmJqmcTTTmVCFJRcTgF
|
||||
bbjpzLhHnFTLngLJ
|
||||
zdHQdQQftWfNfNtsSvrsGBPGlswrlvDw
|
||||
hdnMhghHZzFnZhDCCVTTTbtVmHmWbT
|
||||
PQscSNcllJwzwbGmTmWVGm
|
||||
sjprJpJjJNPpJBlpdFdgMzDDDhhvhd
|
||||
SMwBWSBMPSfzqzPf
|
||||
gJDlrFFQlgbFgvjDjTgrQQTGlhNNLdlqLGhNPqwPNPNfGf
|
||||
jvwHQQjrjrJrppjvJpDFgDgHcsZZnnsVHsmMWCnsBsVVWZ
|
||||
cblRJczlcBtBRCqNfGgHfpHCVHGp
|
||||
WZWsLWmSPjMdWFGHTVNgLfvHqGDT
|
||||
ZdmsFmZPmnZMsWWNsNjdmmmcQlrBQnBtQJtclBrtJwBzJz
|
||||
wtMNCNwNqwtMMRnVcTlFtlcnFlsl
|
||||
vrvrjzjZDDDwmwwVFT
|
||||
jzrHjrrHjjLBPfQPjZBZzvpSMwCNRpRwSdRCNLqSShSR
|
||||
BDgnhMDCDDpjDhBDJDfMSsLSZzCFTTLzTFLzTFZS
|
||||
lrqrlmqbvtvWwVRtwlmrrqNvZlZSsLTTFTFZSPzZFzzTBFzz
|
||||
HRRRbVmmwqhHHHhGJBcD
|
||||
MvnmMvNjvvvmNnRcvzHgzMGtzhffHwHtwt
|
||||
ZBBsFPPrTgCpSSBwHrLtwbHbLLtzLf
|
||||
ZBZZssBdWRJgmgJdNn
|
||||
TTLChzhDnjQLTDhTQJrzSbbJHsGrGrGFGb
|
||||
BfvvpflfWVlVsFFvJHcFJFrJrt
|
||||
ZwMBwwZPWMMpffflqlZMRnRNQLCNhPhDDNssnRQD
|
||||
|
Loading…
Reference in New Issue