Subversion Repositories Kolibri OS

Compare Revisions

No changes between revisions

Regard whitespace Rev 204 → Rev 205

/programs/games/life/trunk/build_ru.bat
File deleted
\ No newline at end of file
/programs/games/life/trunk/ascl.inc
File deleted
/programs/games/life/trunk/macros.inc
File deleted
\ No newline at end of file
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/programs/games/life/trunk/life.asm
File deleted
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/programs/games/life/trunk/build_en.bat
File deleted
\ No newline at end of file
/programs/games/freecell/Buben.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/games/freecell/Club.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/games/freecell/ClubSml.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/games/freecell/ClubUD.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/games/freecell/Cross.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/games/freecell/Diam.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/games/freecell/DiamSml.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/games/freecell/DiamUD.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/games/freecell/Heart.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/games/freecell/HeartSml.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/games/freecell/HeartUD.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/games/freecell/MACROS.INC
0,0 → 1,269
; new application structure
macro meos_app_start
{
use32
org 0x0
 
db 'MENUET01'
dd 0x01
dd __start
dd __end
dd __memory
dd __stack
 
if used __params & ~defined __params
dd __params
else
dd 0x0
end if
 
dd 0x0
}
MEOS_APP_START fix meos_app_start
 
macro code
{
__start:
}
CODE fix code
 
macro data
{
__data:
}
DATA fix data
 
macro udata
{
if used __params & ~defined __params
__params:
db 0
__end:
rb 255
else
__end:
end if
__udata:
}
UDATA fix udata
 
macro meos_app_end
{
align 32
rb 2048
__stack:
__memory:
}
MEOS_APP_END fix meos_app_end
 
 
; macro for defining multiline text data
struc mstr [sstring]
{
forward
local ssize
virtual at 0
db sstring
ssize = $
end virtual
dd ssize
db sstring
common
dd -1
}
 
 
; strings
macro sz name,[data] { ; from MFAR [mike.dld]
common
if used name
label name
end if
forward
if used name
db data
end if
common
if used name
.size = $-name
end if
}
 
macro lsz name,[lng,data] { ; from MFAR [mike.dld]
common
if used name
label name
end if
forward
if (used name)&(lang eq lng)
db data
end if
common
if used name
.size = $-name
end if
}
 
 
 
; easy system call macro
macro mpack dest, hsrc, lsrc
{
if (hsrc eqtype 0) & (lsrc eqtype 0)
mov dest, (hsrc) shl 16 + lsrc
else
if (hsrc eqtype 0) & (~lsrc eqtype 0)
mov dest, (hsrc) shl 16
add dest, lsrc
else
mov dest, hsrc
shl dest, 16
add dest, lsrc
end if
end if
}
 
macro __mov reg,a,b { ; mike.dld
if (~a eq)&(~b eq)
mpack reg,a,b
else if (~a eq)&(b eq)
mov reg,a
end if
}
 
macro mcall a,b,c,d,e,f { ; mike.dld
__mov eax,a
__mov ebx,b
__mov ecx,c
__mov edx,d
__mov esi,e
__mov edi,f
int 0x40
}
 
 
 
; optimize the code for size
__regs fix <eax,ebx,ecx,edx,esi,edi,ebp,esp>
 
macro add arg1,arg2
{
if (arg2 eqtype 0)
if (arg2) = 1
inc arg1
else
add arg1,arg2
end if
else
add arg1,arg2
end if
}
 
macro sub arg1,arg2
{
if (arg2 eqtype 0)
if (arg2) = 1
dec arg1
else
sub arg1,arg2
end if
else
sub arg1,arg2
end if
}
 
macro mov arg1,arg2
{
if (arg1 in __regs) & ((arg2 eqtype 0) | (arg2 eqtype '0'))
if (arg2) = 0
xor arg1,arg1
else if (arg2) = 1
xor arg1,arg1
inc arg1
else if (arg2) = -1
or arg1,-1
else if (arg2) > -128 & (arg2) < 128
push arg2
pop arg1
else
mov arg1,arg2
end if
else
mov arg1,arg2
end if
}
 
 
macro struct name
{
virtual at 0
name name
sizeof.#name = $ - name
end virtual
}
 
; structures used in MeOS
struc process_information
{
.cpu_usage dd ? ; +0
.window_stack_position dw ? ; +4
.window_stack_value dw ? ; +6
.not_used1 dw ? ; +8
.process_name rb 12 ; +10
.memory_start dd ? ; +22
.used_memory dd ? ; +26
.PID dd ? ; +30
.x_start dd ? ; +34
.y_start dd ? ; +38
.x_size dd ? ; +42
.y_size dd ? ; +46
.slot_state dw ? ; +50
dw ? ; +52 - reserved
.client_left dd ? ; +54
.client_top dd ? ; +58
.client_width dd ? ; +62
.client_height dd ? ; +66
.wnd_state db ? ; +70
rb (1024-71)
}
struct process_information
 
struc system_colors
{
.frame dd ?
.grab dd ?
.grab_button dd ?
.grab_button_text dd ?
.grab_text dd ?
.work dd ?
.work_button dd ?
.work_button_text dd ?
.work_text dd ?
.work_graph dd ?
}
struct system_colors
 
 
; constants
 
; events
EV_IDLE = 0
EV_TIMER = 0
EV_REDRAW = 1
EV_KEY = 2
EV_BUTTON = 3
EV_EXIT = 4
EV_BACKGROUND = 5
EV_MOUSE = 6
EV_IPC = 7
EV_STACK = 8
 
; event mask bits for function 40
EVM_REDRAW = 1b
EVM_KEY = 10b
EVM_BUTTON = 100b
EVM_EXIT = 1000b
EVM_BACKGROUND = 10000b
EVM_MOUSE = 100000b
EVM_IPC = 1000000b
EVM_STACK = 10000000b
/programs/games/freecell/Pick.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/games/freecell/Spade.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/games/freecell/SpadeSml.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/games/freecell/SpadeUD.bmp
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/programs/games/freecell/build.bat
0,0 → 1,2
@fasm freecell.asm freecell
@pause
/programs/games/freecell/freecell.ASM
0,0 → 1,2096
; <--- description --->
; compiler: FASM 1.50
; name: FreeCell for MeOS
; version: 1.00
; last update: 21/07/2004
; written by: Alexandr Gorbovets
; e-mail: gorsash@mail.ru
 
 
include "macros.inc"
meos_app_start
 
code
call randomize
call draw_window
 
wait_event:
mov eax, 10
int 0x40
 
cmp eax, 1 ; if event == 1
je redraw ; jump to redraw handler
cmp eax, 2 ; else if event == 2
je key ; jump to key handler
cmp eax, 3 ; else if event == 3
je button ; jump to button handler
 
 
jmp wait_event ;else return to the start of main cycle
 
 
redraw: ; redraw event handler
call draw_window
jmp wait_event
 
 
key: ; key event handler
mov eax, 2 ; get key code
int 0x40
 
jmp wait_event
 
button: ; button event handler
mov eax, 17 ; get button identifier
int 0x40
 
cmp ah, 1
je exit_app ; return if button id != 1
 
cmp ah, 1 + 8
jbe common_card ; if 1 < ah <= 9
 
cmp ah, 1 + 8 + 4 ; if 9 < ah <= 13
jbe temp_cell
 
cmp ah, 1 + 8 + 8
jbe home_cell
 
cmp ah, 1 + 8 + 4 + 4 + 1
je new_game_button
 
cmp ah, 1 + 8 + 4 + 4 + 2
je exit_app
 
 
jmp wait_event
 
 
exit_app:
mov eax, -1 ; exit application
int 0x40
 
common_card:
sub ah, 2 ;going from number of card to number of column
mov [columnclicked], 0
mov byte [columnclicked], ah
call common_card_click
jmp wait_event
 
temp_cell:
sub ah, 2 + 8
mov [columnclicked], 0
mov byte [columnclicked], ah
call temp_cell_click
jmp wait_event
 
 
home_cell:
sub ah, 2 + 8 + 4
mov [columnclicked], 0
mov byte [columnclicked], ah
call home_cell_click
jmp wait_event
 
new_game_button:
call new_game_click
jmp wait_event
 
 
;******************************************************************************
; common_card_click(columnclicked)
common_card_click:
 
; counting code of card, that has been clicked
mov eax, [columnclicked]
mov [ncolumn], eax
call get_row_of_top_card_in_column
mov eax, [topcardrow] ; eax = topcardrow * 8 + columnofselcard
mov bl, 8
mul bl
add eax, [columnclicked]
add eax, cards
 
mov ebx, 0
mov bl, byte [eax]
mov [cardclicked], ebx
 
 
call get_sel_card_code_and_addr
 
cmp [selcardcode], 52
jb .something_selected
 
 
cmp [cardclicked], 52
je .end
 
mov [whereisselcard], scCommonCells
mov eax, [columnclicked]
mov [columnofselcard], eax
call draw_window
jmp .end
 
 
.something_selected:
 
 
; checking if selected and clicked cards are equivalent
mov eax, [selcardcode]
cmp [cardclicked], eax
jne .not_same_card
 
mov [whereisselcard], scNotSelected
call draw_window
jmp .end
 
.not_same_card:
 
cmp [cardclicked], 52
jae .put_in_blank_cell
 
 
mov eax, [selcardcode]
mov bl, 4
div bl
 
mov ebx, 0
mov bl, ah
mov [cardfamily], ebx
 
mov ecx, 0
mov cl, al
mov [cardrange], ecx
 
 
mov eax, [cardclicked]
mov bl, 4
div bl ; reminder in ah, quotient in al
 
mov ebx, 0
mov bl, ah
mov [clickedcardfamily], ebx
 
mov ecx, 0
mov cl, al
mov [clickedcardrange], ecx
 
; clickedcardrange must be = cardrange + 1
mov eax, [cardrange]
inc eax
 
cmp [clickedcardrange], eax ; eax is such as needed
jne .end
 
 
cmp [cardfamily], 1
ja .black_card
 
; if selected red card
cmp [clickedcardfamily], 1
jbe .end ; if clicked red card (range <= 1) then exit
 
jmp .valid_cards
 
.black_card:
; if selected black card
cmp [clickedcardfamily], 1
ja .end ; if clicked black card then exit
 
jmp .valid_cards
 
.valid_cards:
; moving card from its place on clicked card
 
mov eax, [columnclicked]
mov [ncolumn], eax
call get_row_of_top_card_in_column
mov eax, [topcardrow]
inc eax
 
mov bl, 8
mul bl
 
and eax, $0000FFFF
add eax, [columnclicked]
add eax, cards
 
mov bl, byte [selcardcode]
mov byte [eax], bl
 
mov eax, [selcardaddr]
mov byte [eax], 52
 
mov [whereisselcard], scNotSelected
 
call draw_window
 
jmp .end
 
.put_in_blank_cell:
 
mov eax, cards
add eax, [columnclicked]
mov bl, byte [selcardcode]
mov byte [eax], bl
 
mov eax, [selcardaddr]
mov byte [eax], 52
 
mov [whereisselcard], scNotSelected
 
call draw_window
 
.end:
 
ret
 
 
;******************************************************************************
; temp_cell_click(columnclicked)
temp_cell_click:
call get_sel_card_code_and_addr
cmp [selcardcode], 52
jb .something_selected
 
 
mov [whereisselcard], scTempCells
mov eax, [columnclicked]
mov [columnofselcard], eax
call draw_window
jmp .end
 
.something_selected:
; checking if selected and clicked cards equivalent
mov eax, [columnclicked]
add eax, tempcells
 
mov ebx, 0
mov bl, byte [eax]
mov [cardclicked], ebx
 
mov eax, [selcardcode]
cmp [cardclicked], eax
jne .not_same_card
 
mov [whereisselcard], scNotSelected
call draw_window
 
.not_same_card:
 
;putting cards in temp cells
 
mov eax, [columnclicked]
add eax, tempcells
 
mov ebx, 0
mov bl, byte [eax]
mov [cardclicked], ebx
 
 
cmp [cardclicked], 52
jb .end
; if nothing lay in this cell
; move selected card to temp cell
mov eax, [columnclicked]
add eax, tempcells
mov bl, byte [selcardcode]
mov byte [eax], bl
 
mov eax, [selcardaddr]
mov byte [eax], 52
 
mov [whereisselcard], scNotSelected
 
call draw_window
 
 
jmp .end
 
 
.end:
 
ret
 
;******************************************************************************
; home_cell_click(column_clicked)
home_cell_click:
call get_sel_card_code_and_addr
 
mov eax, [columnclicked]
add eax, homecells
 
 
mov ebx, 0
mov bl, byte [eax]
mov [cardclicked], ebx
 
mov eax, [selcardcode]
mov bl, 4
div bl ; reminder in ah, quotient in al
 
mov ebx, 0
mov bl, ah
mov [cardfamily], ebx
 
mov ecx, 0
mov cl, al
mov [cardrange], ecx
 
 
cmp [cardclicked], 52
jb .not_blank
; if nothing lay in this cell
cmp [cardrange], 0
jne .end
; move ace to home
mov eax, [columnclicked]
add eax, homecells
mov bl, byte [selcardcode]
mov byte [eax], bl
 
mov eax, [selcardaddr]
mov byte [eax], 52
 
mov [whereisselcard], scNotSelected
 
call draw_window
 
 
jmp .end
 
.not_blank:
 
mov eax, [cardclicked]
mov bl, 4
div bl ; reminder in ah, quotient in al
 
mov ebx, 0
mov bl, ah
mov [clickedcardfamily], ebx
 
mov ecx, 0
mov cl, al
mov [clickedcardrange], ecx
 
cmp [cardfamily], ebx
jne .end
 
inc ecx
cmp [cardrange], ecx
jne .end
 
; moving card from its place to home with replacing
; of old card in home
mov eax, [columnclicked]
add eax, homecells
mov bl, byte [selcardcode]
mov byte [eax], bl
 
mov eax, [selcardaddr]
mov byte [eax], 52
 
mov [whereisselcard], scNotSelected
 
call draw_window
 
 
 
.end:
 
ret
 
 
;******************************************************************************
new_game_click:
 
mov [i], 0
.deleting_cards_from_common_cells:
mov eax, cards
add eax, [i]
mov byte [eax], 52
 
 
inc [i]
cmp [i], 19*8
jb .deleting_cards_from_common_cells
 
 
mov [i], 0
.filling_pack:
mov eax, pack
add eax, [i]
mov bl, byte [i]
mov byte [eax], bl
 
inc [i]
cmp [i], 52
jb .filling_pack
 
mov [i], 0
 
.putting_cards:
 
mov [range], 52
call random
mov eax, [random_value]
add eax, pack
 
mov ebx, 0
mov bl, byte [eax]
mov [randomcard], ebx
 
mov eax, [random_value]
mov [j], eax
 
cmp [randomcard], 52
jb .found_card
 
 
mov [range], 52
call random
cmp [random_value], 26
jae .decreasing_j
 
.increasing_j:
inc [j]
; j mod 52
mov eax, [j]
mov edx, 0
mov ebx, 52
div ebx
mov [j], edx
 
 
mov eax, [j]
add eax, pack
mov ebx, 0
mov bl, byte [eax]
mov [randomcard], ebx
cmp [randomcard], 52
jb .found_card
 
jmp .increasing_j
 
 
.decreasing_j:
dec [j]
; i mod 32
mov eax, [j]
mov edx, 0
mov ebx, 52
div ebx
mov [j], edx
 
mov eax, [j]
add eax, pack
mov ebx, 0
mov bl, byte [eax]
mov [randomcard], ebx
cmp [randomcard], 52
jb .found_card
 
jmp .decreasing_j
 
.found_card:
; putting card from pack
mov eax, cards
add eax, [i]
mov bl, byte [randomcard]
mov byte [eax], bl
; deleting card from pack
mov eax, pack
add eax, [j]
mov byte [eax], 52
 
 
inc [i]
cmp [i], 52
jb .putting_cards
 
 
 
 
mov [i], 0
.deleting_cards_from_temp_cells:
mov eax, tempcells
add eax, [i]
mov byte [eax], 52
 
 
inc [i]
cmp [i], 4
jb .deleting_cards_from_temp_cells
 
mov [i], 0
.deleting_cards_from_home_cells:
mov eax, homecells
add eax, [i]
mov byte [eax], 52
 
 
inc [i]
cmp [i], 4
jb .deleting_cards_from_home_cells
 
 
mov [whereisselcard], scNotSelected
call draw_window
 
 
ret
 
 
;******************************************************************************
; get_sel_card_code_and_addr(): selcardcode, selcardaddr
; if nothing selected, then selcardcode is 52
get_sel_card_code_and_addr:
cmp [whereisselcard], scNotSelected
jne .something_selected
 
mov [selcardcode], 52
jmp .end
 
.something_selected:
cmp [whereisselcard], scTempCells
je .temp_cells_selected
 
; common cells selected
mov eax, [columnofselcard]
mov [ncolumn], eax
call get_row_of_top_card_in_column
 
 
mov eax, [topcardrow]; eax = topcardrow * 8 + columnofselcard
mov bl, 8
mul bl ; result of multiplication in ax
add eax, [columnofselcard]
add eax, cards
 
 
mov [selcardaddr], eax
xor ebx, ebx
mov bl, byte [eax]
mov [selcardcode], ebx
 
jmp .end
 
.temp_cells_selected:
 
mov eax, tempcells
add eax, [columnofselcard]
mov [selcardaddr], eax
mov ebx, 0
mov bl, byte [eax]
mov [selcardcode], ebx
 
.end:
 
ret
 
;******************************************************************************
; draw_window()
 
draw_window:
mov eax,48 ; get system colors
mov ebx,3
mov ecx,syscolors
mov edx,sizeof.system_colors
int 0x40
 
 
mov eax, 12 ; start drawing
mov ebx, 1
int 0x40
 
mov eax, 0 ; create and draw the window
mov ebx, 100 * 65536 + 8 * cardwidth + 10 + 7 * columnspace
mov ecx, 100 * 65536 + 500
mov edx, 0x13008000
mov edi, header
int 0x40
 
mov eax, 9 ; getting window info
mov ebx, process_info
mov ecx, -1 ; we want to know info of our window
int 0x40
 
 
mov eax, [process_info.y_size]
mov [WindowHeight], ax
 
mov eax, [process_info.x_size]
mov [WindowWidth], ax
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; draw top panel
 
mov eax, 13
mov ebx, 5
shl ebx, 16
add bx, word [process_info.x_size]
sub bx, 9
mov ecx, 22 shl 16 + topbuttonsbarheight - 1
mov edx, [syscolors.work_graph]
int $40
 
; draw button "new game"
 
mov eax, 8
mov ebx, 5 shl 16 + 80
mov ecx, 22 shl 16 + topbuttonsbarheight - 2
mov edx, 1 + 8 + 4 + 4 + 1 ;button id
mov esi, [syscolors.work_button]
int $40
 
mov eax, 4
mov ebx, 20 shl 16 + 22 + topbuttonsbarheight/2 - 4
mov ecx, [syscolors.work_button_text]
mov edx, new_game
mov esi, new_game_len
int $40
 
 
; draw button "exit"
mov eax, 8
mov ebx, (5 + 85) shl 16 + 80 + 5
mov ecx, 22 shl 16 + topbuttonsbarheight - 2
mov edx, 1 + 8 + 4 + 4 + 2 ;button id
mov esi, [syscolors.work_button]
int $40
 
mov eax, 4
mov ebx, (40 + 80) shl 16 + 22 + topbuttonsbarheight/2 - 4
mov ecx, [syscolors.work_button_text]
mov edx, exit
mov esi, exit_len
int $40
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; draw separators between home, temp and common cells
mov eax, 13
; horizontal line
mov ebx, 5
shl ebx, 16
add bx, word [process_info.x_size]
sub bx, 9
mov ecx, (21 + topbuttonsbarheight + cardheight + columnspace) shl 16+1
 
mov edx, [syscolors.work_graph]
int $40
; verical line
mov eax, [process_info.x_size]
mov edx, 0
mov ecx, 2
div ecx
 
mov ebx, eax
 
;
shl ebx, 16
add bx, 1
mov ecx, (21 + topbuttonsbarheight) shl 16 + cardheight + columnspace
mov edx, [syscolors.work_graph]
mov eax, 13
int $40
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; draw temp buttons
 
mov [j], 0 ;counter that loops from 0 to 51
 
draw_a_temp_card:
 
; code of card must be in ecx
mov eax, tempcells
add eax, [j]
xor ecx, ecx
mov cl, byte [eax] ; placing in cl value from memory
; with address [tempcells + j] or
; j-th element of array "tempcells"
 
mov [cardcode], ecx
 
mov eax, [j]
xor edx, edx
mov ebx, 8
div ebx ; divsion by 8 (8 columns),
; so in eax quotient - number of row
; and in edx remainder -
; number of column where lay card
 
mov [row], eax
mov [column], edx
 
mov eax, [process_info.x_size] ; width of window
sub eax, 10
sub eax, cardwidth
mov ebx, 7
mov edx, 0
div ebx
mov ebx, [column]
mul ebx
add eax, 5
 
mov [xpos], eax
 
 
mov eax, [row]
mov bl, rowsize
mul bl
add eax, 24 + topbuttonsbarheight
mov [ypos], eax
 
; checking, if this card selected
 
mov [negativedraw], 0
 
cmp [whereisselcard], scTempCells
jne .this_temp_cell_isnt_selected
 
mov eax, [column]
cmp [columnofselcard], eax
jne .this_temp_cell_isnt_selected
 
mov [negativedraw], 1
 
.this_temp_cell_isnt_selected:
 
call draw_card
 
; define button on place of card
mov eax, 8
mov ebx, [xpos]
shl ebx, 16
add bx, cardwidth - 1
mov ecx, [ypos]
shl ecx, 16
add cx, cardheight - 1
mov edx, [column]
add edx, 01000000000000000000000000000000b + 2 + 8; button id = column
; id = 1 reserved as close button
int $40
 
 
inc [j]
cmp [j], 4
jb draw_a_temp_card
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; draw home buttons
mov [j], 0 ;counter that loops from 0 to 51
 
draw_a_home_card:
 
 
; code of card must be in ecx
mov eax, homecells
add eax, [j]
xor ecx, ecx
mov cl, byte [eax] ; placing in cl value from memory
; with address [tempcells + j] or
; j-th element of array "tempcells"
 
mov [cardcode], ecx
 
mov eax, [j]
xor edx, edx
mov ebx, 8
div ebx ; divsion by 8 (8 columns),
; so in eax quotient - number of row
; and in edx remainder -
; number of column where lay card
 
mov [row], eax
mov [column], edx
 
mov eax, [process_info.x_size] ; width of window
sub eax, 10
sub eax, cardwidth
mov ebx, 7
mov edx, 0
div ebx
mov ebx, [column]
add ebx, 4
mul ebx
add eax, 5
 
mov [xpos], eax
 
mov eax, [row]
mov bl, rowsize
mul bl
add eax, 24 + topbuttonsbarheight
mov [ypos], eax
 
mov [negativedraw], 0
 
call draw_card
 
; define button on place of card
 
mov eax, 8
mov ebx, [xpos]
shl ebx, 16
add bx, cardwidth - 1
mov ecx, [ypos]
shl ecx, 16
add cx, cardheight - 1
mov edx, [column]
add edx, 01000000000000000000000000000000b + 2 + 8 + 4 ; button id
 
; id = 1 reserved as close button
int $40
 
 
inc [j]
cmp [j], 4
jb draw_a_home_card
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; draw common cards
 
mov [j], 0 ;counter that loops from 0 to 8 * 19
 
draw_a_card:
 
 
; code of card must be in ecx
mov eax, cards
add eax, [j]
xor ecx, ecx
mov cl, byte [eax] ; placing in cl value from memory
; with address [cards + j] or
; j-th element of array "cards"
; cmp ecx, 52 ; if code of card >= 52 then there is no card
; jae no_draw
;
; cmp ecx, 0 ; if code of card < 0 then there is no card
; jb no_draw
 
mov [cardcode], ecx
 
 
 
mov eax, [j]
xor edx, edx
mov ebx, 8
div ebx ; divsion by 8 (8 columns),
; so in eax quotient - number of row
; and in edx remainder -
; number of column where lay card
 
mov [row], eax
mov [column], edx
 
mov eax, [process_info.x_size] ; width of window
sub eax, 10
sub eax, cardwidth
mov ebx, 7
mov edx, 0
div ebx
mov ebx, [column]
mul ebx
add eax, 5
 
mov [xpos], eax
 
mov eax, [row]
mov bl, rowsize
mul bl
add eax, cardheight + 24 + topbuttonsbarheight + columnspace
mov [ypos], eax
 
 
mov [negativedraw], 0 ;checking, if this is selected card
 
cmp [whereisselcard], scCommonCells
jne .this_card_isnt_selected
 
mov eax, [column]
cmp [columnofselcard], eax
jne .this_card_isnt_selected
 
 
mov eax, [column]
mov [ncolumn], eax
call get_row_of_top_card_in_column
mov eax, [row]
cmp [topcardrow], eax
jne .this_card_isnt_selected
 
mov [negativedraw], 1
 
.this_card_isnt_selected:
 
call draw_card
 
 
 
; now checking if it is top card in its column
; if it does, we'll define button on its place
mov eax, [column]
mov [ncolumn], eax
call get_row_of_top_card_in_column
mov eax, [row]
cmp [topcardrow], eax
je .define_button
 
cmp [topcardrow], 0
jne .no_define_button
 
cmp [row], 0
jne .no_define_button
 
 
.define_button:
mov eax, 8
mov ebx, [xpos]
shl ebx, 16
add bx, cardwidth - 1
mov ecx, [ypos]
shl ecx, 16
add cx, cardheight - 1
mov edx, [column]
add edx, 01000000000000000000000000000000b + 2; button id = column + 2,
; id = 1 reserved as close button
int $40
 
 
.no_define_button:
 
inc [j]
cmp [j], 8 * 19
jb draw_a_card
 
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
mov eax, 12 ; finish drawing
mov ebx, 2
int $40
 
ret
 
 
;******************************************************************************
; get_row_of_top_card_in_column(ncolumn): topcardrow
 
get_row_of_top_card_in_column:
; number of column in ncolumn
; returns in topcardrow
 
mov [i], 0 ; i loops from 0 to 1, ... while card i * 8 + ncolumn
; is valid card (0 <= its code < 52)
 
.cycle:
xor eax, eax
mov al, 8
mov ebx, [i]
mul bl
add eax, [ncolumn]
add eax, cards
xor ecx, ecx
mov cl, byte [eax]
 
cmp ecx, 52
jae .endcycle
 
 
cmp [i], 18
ja .endcycle
 
 
inc [i]
 
jmp .cycle
 
.endcycle:
 
cmp [i], 0
je .dont_dec
 
dec [i]
 
.dont_dec:
 
mov eax, [i]
mov [topcardrow], eax
ret
 
 
;******************************************************************************
; invert_image_colors(imagetoinvert, sizeofimagetoinvert)
invert_image_colors:
mov [i], 0
 
.inverting:
mov eax, [imagetoinvert]
add eax, [i]
 
mov bl, byte [eax]
;xor ebx, ebx
;add ebx, 10
not ebx
 
mov byte [eax], bl
 
 
inc [i]
 
mov ecx, [sizeofimagetoinvert]
cmp [i], ecx
jb .inverting
 
jmp .later
 
 
.exit:
mov eax, -1
int $40
 
.later:
 
 
ret
 
 
 
;******************************************************************************
; draw_card(xpos, ypos, cardcode, negativedraw)
; if negativedraw = 1 then card drawn in inverted colors
 
draw_card: ; draws card with left top corner
; in point ([xpos],[ypos]),
; type of card in [cardcode]
 
cmp [cardcode], 52 ; if code of card >= 52 then there is no card
jae .no_draw_card
 
 
cmp [negativedraw], 1
jne .no_invert1
;doing if negativedraw
mov [bgcolor], $00000000
mov [blackcolor], $00FFFFFF
mov [redcolor], $0000FFFF
 
;inverting all images
call invert_all_images
 
jmp .colors_selection_done
 
.no_invert1:
;doing if not negativedraw
mov [bgcolor], $00FFFFFF
mov [blackcolor], $00000000
mov [redcolor], $00FF0000
 
 
.colors_selection_done:
 
mov eax, 13
 
mov ebx, [xpos] ; filling card with bgcolor
; (big background rectangle)
mov edx, [bgcolor]
add ebx, 2
shl ebx, 16
mov bx, cardwidth - 4
 
mov ecx, [ypos]
add ecx, 2
shl ecx, 16
mov cx, cardheight - 4
int $40
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
mov ebx, [xpos] ; left black line
shl ebx, 16
mov bx, 1
 
mov ecx, [ypos]
add ecx, 5
shl ecx, 16
xor cx, cx
mov cx, cardheight - 2 * radius - 2
mov edx, [blackcolor]
int $40
 
mov ebx, [xpos] ; left white line
inc ebx
shl ebx, 16
mov bx, 1
mov edx, [bgcolor]
int $40
 
mov ebx, [xpos] ; right black line
add ebx, cardwidth - 1
shl ebx, 16
mov bx, 1
mov edx, [blackcolor]
int $40
 
mov ebx, [xpos] ; right white line
add ebx, cardwidth - 2
shl ebx, 16
mov bx, 1
mov edx, [bgcolor]
int $40
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
mov ecx, [ypos] ; top black line
shl ecx, 16
mov cx, 1
 
mov ebx, [xpos]
add ebx, 5
shl ebx, 16
mov bx, cardwidth - 2 * radius - 2
mov edx, [blackcolor]
int $40
 
mov ecx, [ypos] ; top white line
inc ecx
shl ecx, 16
mov cx, 1
mov edx, [bgcolor]
int $40
 
mov ecx, [ypos] ; bottom black line
add ecx, cardheight - 1
shl ecx, 16
mov cx, 1
mov edx, [blackcolor]
int $40
 
mov ecx, [ypos] ; bottom white line
add ecx, cardheight - 2
shl ecx, 16
mov cx, 1
mov edx, [bgcolor]
int $40
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
mov eax, 1 ; drawing points
mov edx, [blackcolor] ; black color for all pixels
 
mov ebx, [xpos] ; draw top left corner
mov ecx, [ypos]
inc ebx
add ecx, 4
int $40
 
dec ecx
int $40
 
dec ecx
inc ebx
int $40
 
dec ecx
inc ebx
int $40
 
inc ebx
int $40
 
mov ebx, [xpos] ;drawing top right corner
mov ecx, [ypos]
add ebx, cardwidth - 2
add ecx, 4
int $40
 
dec ecx
int $40
 
dec ebx
dec ecx
int $40
 
dec ebx
dec ecx
int $40
 
dec ebx
int $40
;drawing bottom left corner
mov ebx, [xpos]
mov ecx, [ypos]
inc ebx
add ecx, cardheight - 5
int $40
 
inc ecx
int $40
 
inc ebx
inc ecx
int $40
 
inc ebx
inc ecx
int $40
 
inc ebx
int $40
;drawing bottom right corner
mov ebx, [xpos]
mov ecx, [ypos]
add ebx, cardwidth - 2
add ecx, cardheight - 5
int $40
 
inc ecx
int $40
 
dec ebx
inc ecx
int $40
 
dec ebx
inc ecx
int $40
 
dec ebx
int $40
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; drawing text and images
 
mov eax, [cardcode]
mov edx, 0
mov ebx, 4
div ebx
 
mov [cardfamily], edx
mov [cardrange], eax
 
; counting position of small card image
mov eax, 7
mov ecx, 8*65536+8
mov edx, [xpos]
add edx, radius
shl edx, 16
mov dx, word [ypos]
add dx, radius + 8
 
 
 
cmp [cardfamily], 0
je .heart
 
cmp [cardfamily], 1
je .diamond
 
cmp [cardfamily], 2
je .club
 
cmp [cardfamily], 3
je .spade
 
.heart:
mov esi, [redcolor]
mov [color], esi
mov [imageaddr], heart
mov [imageflipaddr], heart_updown
 
mov ebx, heart_small
int $40
 
jmp .selnumber
 
.diamond:
mov esi, [redcolor]
mov [color], esi
mov [imageaddr], diamond
mov [imageflipaddr], diamond_updown
 
mov ebx, diamond_small
int $40
 
jmp .selnumber
 
.club:
mov esi, [blackcolor]
mov [color], esi
mov [imageaddr], club
mov [imageflipaddr], club_updown
 
mov ebx, club_small
int $40
 
jmp .selnumber
 
.spade:
mov esi, [blackcolor]
mov [color], esi
mov [imageaddr], spade
mov [imageflipaddr], spade_updown
 
mov ebx, spade_small
int $40
 
 
 
.selnumber:
 
mov ebx, [xpos] ; counting position of text
; in ebx, same for all cards
add ebx, radius
shl ebx, 16
mov bx, word [ypos]
add bx, radius
 
 
mov ecx, [color]
 
 
cmp [cardrange], 0
je .ace
 
cmp [cardrange], 1
je .two
 
cmp [cardrange], 2
je .three
 
cmp [cardrange], 3
je .four
 
cmp [cardrange], 4
je .five
 
cmp [cardrange], 5
je .six
 
cmp [cardrange], 6
je .seven
 
cmp [cardrange], 7
je .eight
 
cmp [cardrange], 8
je .nine
 
cmp [cardrange], 9
je .ten
 
cmp [cardrange], 10
je .jack
 
cmp [cardrange], 11
je .queen
 
cmp [cardrange], 12
je .king
 
; +-------+-------+-------+
; | 3 | 2 | 3 | ace = 1
; +-------+-------+-------+ two = 2
; | | | | three = 2 + 1
; +-------+-------+-------+ four = 3
; | | 6 | | five = 3 + 1
; +-------+-------+-------+ six = 3 + 4
; | 5 | | 5 | seven = 3 + 4 + 6
; +-------+-------+-------+ eight = 3 + 5
; | 4 | 1 | 4 | nine = 3 + 5
; +-------+-------+-------+ ten = 3 + 5 + 6 + 7
; | 5 | | 5 |
; +-------+-------+-------+
; | | 7 | | 1 means draw_1
; +-------+-------+-------+
; | | | |
; +-------+-------+-------+
; | 3 | 2 | 3 |
; +-------+-------+-------+
 
 
 
.ace:
mov eax, 4
mov [s], byte 'A'
mov edx, s
mov esi, 1
int $40
 
call draw_1
jmp .end
 
.two:
mov eax, 4
mov [s], byte '2'
mov edx, s
mov esi, 1
int $40
 
call draw_2
jmp .end
 
 
.three:
mov eax, 4
mov [s], byte '3'
mov edx, s
mov esi, 1
int $40
 
call draw_1
call draw_2
 
jmp .end
 
.four:
mov eax, 4
mov [s], byte '4'
mov edx, s
mov esi, 1
int $40
 
call draw_3
jmp .end
 
.five:
mov eax, 4
mov [s], byte '5'
mov edx, s
mov esi, 1
int $40
 
call draw_1
call draw_3
 
jmp .end
 
.six:
mov eax, 4
mov [s], byte '6'
mov edx, s
mov esi, 1
int $40
 
call draw_3
call draw_4
 
jmp .end
 
.seven:
mov eax, 4
mov [s], byte '7'
mov edx, s
mov esi, 1
int $40
 
call draw_3
call draw_4
call draw_6
 
jmp .end
 
.eight:
mov eax, 4
mov [s], byte '8'
mov edx, s
mov esi, 1
int $40
 
call draw_3
call draw_5
 
jmp .end
 
.nine:
mov eax, 4
mov [s], byte '9'
mov edx, s
mov esi, 1
int $40
 
call draw_3
call draw_5
call draw_1
 
jmp .end
 
.ten:
mov eax, 4
mov [s], word '10'
mov edx, s
mov esi, 2
int $40
 
call draw_3
call draw_5
call draw_6
call draw_7
 
jmp .end
 
.jack:
mov eax, 4
mov [s], byte 'J'
mov edx, s
mov esi, 1
int $40
 
jmp .end
 
.queen:
mov eax, 4
mov [s], byte 'Q'
mov edx, s
mov esi, 1
int $40
 
jmp .end
 
.king:
mov eax, 4
mov [s], byte 'K'
mov edx,s
mov esi, 1
int $40
 
.end:
 
 
cmp [negativedraw], 1
jne .no_invert2
 
call invert_all_images
 
 
.no_invert2:
.no_draw_card:
 
ret
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; invert_all_images()
invert_all_images:
mov [sizeofimagetoinvert], 16 * 16 * 3
mov [imagetoinvert], heart
call invert_image_colors
 
mov [sizeofimagetoinvert], 16 * 16 * 3
mov [imagetoinvert], diamond
call invert_image_colors
 
mov [sizeofimagetoinvert], 16 * 16 * 3
mov [imagetoinvert], spade
call invert_image_colors
 
mov [sizeofimagetoinvert], 16 * 16 * 3
mov [imagetoinvert], club
call invert_image_colors
 
 
mov [sizeofimagetoinvert], 16 * 16 * 3
mov [imagetoinvert], heart_updown
call invert_image_colors
 
mov [sizeofimagetoinvert], 16 * 16 * 3
mov [imagetoinvert], diamond_updown
call invert_image_colors
 
mov [sizeofimagetoinvert], 16 * 16 * 3
mov [imagetoinvert], spade_updown
call invert_image_colors
 
mov [sizeofimagetoinvert], 16 * 16 * 3
mov [imagetoinvert], club_updown
call invert_image_colors
 
 
mov [sizeofimagetoinvert], 8 * 8 * 3
mov [imagetoinvert], heart_small
call invert_image_colors
 
mov [sizeofimagetoinvert], 8 * 8 * 3
mov [imagetoinvert], diamond_small
call invert_image_colors
 
mov [sizeofimagetoinvert], 8 * 8 * 3
mov [imagetoinvert], spade_small
call invert_image_colors
 
mov [sizeofimagetoinvert], 8 * 8 * 3
mov [imagetoinvert], club_small
call invert_image_colors
 
 
 
ret
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
draw_1:
;draw center image
mov ebx, [imageaddr]
mov ecx, 16 * 65536 + 16
mov edx, [xpos]
add edx, cardwidth/2 - 8
shl edx, 16
mov dx, word [ypos]
add dx, cardheight/2 - 8
mov eax, 7
int $40
ret
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
draw_2:
;draw top image
mov ebx, [imageaddr]
mov ecx, 16 * 65536 + 16
mov edx, [xpos]
add edx, 40 - 8
shl edx, 16
mov dx, word [ypos]
add dx, margin
mov eax, 7
int $40
;draw bottom image
mov ebx, [imageflipaddr]
mov edx, [xpos]
add edx, cardwidth/2 - 8
shl edx, 16
mov dx, word [ypos]
add dx, cardheight - 16 - margin
mov eax, 7
int $40
ret
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
draw_3:
;draw top left image
mov ebx, [imageaddr]
mov ecx, 16 * 65536 + 16
mov edx, [xpos]
add edx, margin
shl edx, 16
mov dx, word [ypos]
add dx, margin
mov eax, 7
int $40
;draw bottom left image
mov ebx, [imageflipaddr]
mov edx, [xpos]
add edx, margin
shl edx, 16
mov dx, word [ypos]
add dx, cardheight - margin - 16
mov eax, 7
int $40
;draw top right image
mov ebx, [imageaddr]
mov edx, [xpos]
add edx, cardwidth - margin - 16
shl edx, 16
mov dx, word [ypos]
add dx, margin
mov eax, 7
int $40
;draw bottom right image
mov ebx, [imageflipaddr]
mov edx, [xpos]
add edx, cardwidth - margin - 16
shl edx, 16
mov dx, word [ypos]
add dx, cardheight - margin - 16
mov eax, 7
int $40
ret
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
draw_4:
;draw center left image
mov ebx, [imageaddr]
mov ecx, 16 * 65536 + 16
mov edx, [xpos]
add edx, margin
shl edx, 16
mov dx, word [ypos]
add dx, cardheight/2 - 8
mov eax, 7
int $40
;draw center right image
mov edx, [xpos]
add edx, cardwidth - margin - 16
shl edx, 16
mov dx, word [ypos]
add dx, cardheight/2 - 8
mov eax, 7
int $40
ret
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
draw_5:
;draw top left image
mov ebx, [imageaddr]
mov ecx, 16 * 65536 + 16
mov edx, [xpos]
add edx, margin
shl edx, 16
mov dx, word [ypos]
add dx, cardheight * 3 / 9
mov eax, 7
int $40
;draw bottom left image
mov ebx, [imageflipaddr]
mov edx, [xpos]
add edx, 16
shl edx, 16
mov dx, word [ypos]
add dx, cardheight * 5 / 9
mov eax, 7
int $40
;draw top right image
mov ebx, [imageaddr]
mov edx, [xpos]
add edx, cardwidth - margin - 16
shl edx, 16
mov dx, word [ypos]
add dx, cardheight * 3 / 9
mov eax, 7
int $40
;draw bottom right image
mov ebx, [imageflipaddr]
mov edx, [xpos]
add edx, cardwidth - margin - 16
shl edx, 16
mov dx, word [ypos]
add dx, cardheight * 5 / 9
mov eax, 7
int $40
ret
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
draw_6:
mov ebx, [imageaddr]
mov ecx, 16 * 65536 + 16
mov edx, [xpos]
add edx, cardwidth/2 - 8
shl edx, 16
mov dx, word [ypos]
add dx, cardheight * 2 / 9
mov eax, 7
int $40
ret
 
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
draw_7:
mov ebx, [imageflipaddr]
mov ecx, 16 * 65536 + 16
mov edx, [xpos]
add edx, cardwidth/2 - 8
shl edx, 16
mov dx, word [ypos]
add dx, cardheight * 6 / 9
mov eax, 7
int $40
ret
 
 
;******************************************************************************
randomize:
push eax
 
mov eax, 3
int 0x40
 
mov ebx, $A59E3F1C
mul ebx
mov dword [randseed], eax
pop eax
ret
 
 
 
;******************************************************************************
; function Random(Range): RandomValue
random:
push ebx
 
mov eax, [randseed]
mov edx, 0
mov ebx, 7
div ebx
 
cmp edx, 0
je _0
 
cmp edx, 1
je _1
 
cmp edx, 2
je _2
 
cmp edx, 3
je _3
 
cmp edx, 4
je _4
 
cmp edx, 5
je _5
 
cmp edx, 6
je _6
 
jmp _end
 
 
_0:
;base := base + 58 + a[8];
mov eax, [randseed]
add eax, 58
add eax, dword [a + 8 * 4]
mov [randseed], eax
jmp _end;
 
_1:
;base := base + 1 + a[9];
mov eax, [randseed]
add eax, 1
add eax, dword [a + 9 * 4]
mov [randseed], eax
jmp _end;
 
_2:
;base := base + 4 + a[88];
mov eax, [randseed]
add eax, 4
add eax, dword [a + 88 * 4]
mov [randseed], eax
jmp _end;
 
_3:
;randseed := randseed + 79 + a[43];
mov eax, [randseed]
add eax, 79
add eax, dword [a + 43 * 4]
mov [randseed], eax
jmp _end;
 
_4:
;randseed := randseed + 3 + a[12];
mov eax, [randseed]
add eax, 3
add eax, dword [a + 12 * 4]
mov [randseed], eax
jmp _end;
 
_5:
;randseed := randseed + 2 + a[63];
mov eax, [randseed]
add eax, 2
add eax, dword [a + 63 * 4]
mov [randseed], eax
jmp _end;
 
_6:
;randseed := randseed + 151 + a[24];
mov eax, [randseed]
add eax, 151
add eax, dword [a + 24 * 4]
mov [randseed], eax
 
_end:
 
mov eax, [randseed]
mov edx, eax
shl edx, 16
mov bx, 100
div bx ; dx = randseed mod 100
 
mov ax, dx ; ax = randseed mod 100
mov bx, 4
mul bx ; dx:ax = (randseed mod 100) * 4
and eax, $0000FFFF
shr edx, 16
and edx, $FFFF0000
or eax, edx
 
mov eax, dword [a + eax] ; eax = dword[a + (randseed mod 100) * 4]
; ~ a[randseed mod 100]
mov ebx, dword [a + 47 * 4]
mul ebx ; eax = low(a[randseed mod 100] * a[47])
 
add eax, [randseed]
add eax, $4AE783A
mov [randseed], eax
 
mov eax, dword [a + 6 * 4]
mov edx, 0
mov ebx, 100
div ebx
mov eax, edx
mov ebx, 4
mul ebx ; eax = (dword [a + 6 * 4] mod 100) * 4 ~ a[6] mod 100
 
 
mov eax, dword [a + eax] ; eax = dword [a + (dword [a + 6 * 4] mod 100) * 4
 
; ~ a[a[6] mod 100]
add eax, [randseed]
mov [random_value], eax
 
mov edx, 0
 
mov ebx, [range]
div ebx
mov [random_value], edx
 
mov al, [TimesCalled]
xor ah, ah
inc al
mov bl, 100
div bl
mov [TimesCalled], ah ; TimesCalled = (TimesCalled + 1 ) mod 100
 
mov al, ah
mov bl, 4
mul bl
and eax, $0000FFFF
 
mov ebx, [randseed]
mov dword [a + eax], ebx ; a[TimesCalled] = randseed
 
pop ebx
ret
 
;******************************************************************************
 
; <--- initialised data --->
data
header db 'Freecell',0
 
new_game: db "New game"
new_game_len = $ - new_game
 
exit: db "Exit"
exit_len = $ - exit
 
s: db "10"
 
 
negativedraw db 0 ; for procedure draw_card
 
 
spade file 'SPADE.BMP': 54
spade_updown file 'SPADEUD.BMP': 54
spade_small file 'SPADESML.BMP': 54
 
club file 'CLUB.BMP': 54
club_updown file 'CLUBUD.BMP': 54
club_small file 'CLUBSML.BMP': 54
 
diamond file 'DIAM.BMP': 54
diamond_updown file 'DIAMUD.BMP': 54
diamond_small file 'DIAMSML.BMP': 54
 
heart file 'HEART.BMP': 54
heart_updown file 'HEARTUD.BMP': 54
heart_small file 'HEARTSML.BMP': 54
 
 
scNotSelected = 0
scCommonCells = 1
scTempCells = 2
 
 
whereisselcard dd scNotSelected
columnofselcard dd 0 ; if WhereIsSelCard = scGeneralCells
; then this can be 0 .. 7,
; if scTempCells then - 0 .. 3
; if scNotSelected - no matter
 
tempcells: times 4 db 52;
homecells: times 4 db 52 ; maximal card code is 51
cards: times 8 * 19 db 52; - %
pack: times 52 db ?
 
 
 
udata
process_info process_information
syscolors system_colors
 
WindowHeight rw 1
WindowWidth rw 1
 
xpos rd 1
ypos rd 1
bgcolor rd 1
blackcolor rd 1
redcolor rd 1
 
 
lastparam rd 1 ;
 
randomcard rd 1 ; for new_game_click
 
columnclicked rd 1 ; used in common_card_click, temp_cell_click,
cardclicked rd 1 ; home_cell_click
clickedcardrange rd 1 ;
clickedcardfamily rd 1 ;
 
 
selcardcode rd 1 ; for procedure get_sel_card_code_and_addr
selcardaddr rd 1 ;
 
column rd 1 ; for procedure draw_window
row rd 1 ;
 
imagetoinvert rd 1 ; for procedure invert_image_colors
sizeofimagetoinvert rd 1 ;
 
ncolumn rd 1 ; for procedure get_row_of_top_card_in_column
topcardrow rd 1 ;
 
 
color rd 1 ; for procedue draw_card
imageaddr rd 1 ;
imageflipaddr rd 1 ;
 
cardcode rd 1 ; used in differrent procedures
cardrange rd 1 ; cardcode = cardrange * 4 + cardfamily
cardfamily rd 1 ;
 
a: times 100 rd 1 ; for function Random
range rd 1 ;
random_value rd 1 ;
randseed rd 1 ;
TimesCalled rb 1 ;
 
j rd 1 ; number of card (in array cards) drawn now
i rd 1 ; used in many procedures of 1-st level
k rd 1
 
cardwidth = 80
cardheight = 120
radius = 4 ; not recommended to change
rowsize = 30 ; distance between top poins
;of cards in neighboring rows
columnspace = 5 ; minimal space between cards
margin = 14 ; margin of every card
 
topbuttonsbarheight = 20
 
 
meos_app_end
/programs/games/freecell/play.txt
0,0 → 1,26
FreeCell.
 
You can find this games in Windows XP and Linux Mandrake 9.0 distributions.
 
Rules to FreeCell can be found in help files for those games but I place here
game rules from site www.freecell.org:
 
4 cells (top left) - storage locations for cards.
Only 1 card allowed in each cell.
8 tableau piles (below foundations and cells) - build down by alternate color.
Move groups of cards if they are in sequence down by alternate color and if
there are enough free cells that the cards could be moved individually.
Spaces can be filled by any card or legal group of cards (see KingOnly for
option). At the start of the game 7 cards are dealt face up to the leftmost 4
piles, 6 cards are dealt face up to the remaining piles.
 
Some features not implemented yet: moving groups of cards - you
can move only one card at one time, no automatic moving of
some cards in home.
 
 
You only need to copy the file freecell to the floppy; The rest of the
files are for assembling the code.
 
Alexandr Gorbovets gorsash@mail.ru
/programs/games/pipes/build.bat
0,0 → 1,2
@fasm pipes.asm pipes
@pause
/programs/games/pipes/pipes.asm
0,0 → 1,649
;
; pipes for menuet {and now kolibri}
; v1.2
; 2006 by Mario Birkner
;
; l.mod. 27.08.06/15:11
;
; Compile with FASM
;
bgcolor equ 0x0074744A ;thx
fgcolor equ 0x00E7C750 ;to
fg2color equ 0x00E0B0A0 ;colorref
fg3color equ 0x007F7F55
btcolor equ 0x005B6200
 
 
use32
 
org 0x0
 
db 'MENUET01' ; 8 byte id
dd 0x01 ; header version
dd START ; start of code
dd I_END ; size of image
dd 0x100000 ; memory for app
dd 0x7fff0 ; esp
dd 0x0 , 0x0 ; I_Param , I_Icon
 
START: ; start of execution
 
call draw_window
call draw_board
 
still:
 
mov eax,10 ; wait here for event
int 0x40
 
cmp eax,1 ; redraw request ?
je red
cmp eax,2 ; key in buffer ?
je key
cmp eax,3 ; button in buffer ?
je button
 
jmp still
 
red: ; redraw
call draw_window
call draw_board
call draw_message
jmp still
 
key: ; key
mov eax,2 ; just read it and ignore
int 0x40
jmp still
button: ; button
call get_input
jmp still
 
 
 
get_input:
pusha
mov eax,17 ; get id
int 0x40
 
cmp ah,1 ; button id=1 ?
jne .noclose
 
mov eax,-1 ; close this program
int 0x40
.noclose:
cmp ah,4
jne .moderate
mov [diffic],1
jmp .enddiffic
.moderate:
cmp ah,3
jne .easy
mov [diffic],3
jmp .enddiffic
.easy:
cmp ah,2
jne .board
mov [diffic],5
.enddiffic:
mov [score],0
mov [speed],40
mov [level],1
mov [stat],0
mov [time],0
call draw_window
call scramble_board
call draw_board
call countdown
call wassermarsch
jmp .getno
.board:
cmp [stat],2
jge .getno
shr eax,8 ; -> 24bit id
cmp eax,10
jle .getno
cmp eax,150
jg .getno
sub eax,10
mov edi,eax
add edi,map
cmp [edi], byte 1
jg .nogerade
xor byte [edi], 1
call draw_board
jmp .getno
.nogerade:
cmp [edi], byte 6
jge .getno
cmp [edi], byte 5
jne .rota
sub byte [edi],4
.rota:
inc byte [edi]
call draw_board
.getno:
popa
ret
;//// end of event detection
get_direction: ;Setzt Richtungs-Konstanten
pusha ;IN:
mov eax,[esp+28] ;eax - Richtung IN
mov ebx,[esp+16] ;ebx - Teilchen (Map-Wert)
cmp ebx,0 ;OUT:
jne .no0 ;eax - Richtung OUT
cmp eax,14
jne .o0
jmp .setout
.o0:
cmp eax,-14
jne .col
jmp .setout
.no0:
cmp ebx,1
jne .no1
cmp eax,1
jne .o1
jmp .setout
.o1:
cmp eax,-1
jne .col
jmp .setout
.no1:
cmp ebx,2
jne .no2
cmp eax,14
jne .o2
sub eax,13
jmp .setout
.o2:
cmp eax,-1
jne .col
sub eax,13
jmp .setout
.no2:
cmp ebx,3
jne .no3
cmp eax,-14
jne .o3
add eax,15
jmp .setout
.o3:
cmp eax,-1
jne .col
add eax,15
jmp .setout
.no3:
cmp ebx,4
jne .no4
cmp eax,-14
jne .o4
add eax,13
jmp .setout
.o4:
cmp eax,1
jne .col
add eax,13
jmp .setout
.no4:
cmp ebx,5
jne .no5
cmp eax,14
jne .o5
sub eax,15
jmp .setout
.o5:
cmp eax,1
jne .col
sub eax,15
jmp .setout
.no5:
cmp ebx,6
jne .no6
jmp .setout
.no6:
cmp ebx,7
jne .no7
mov eax,14
jmp .setout
.no7:
cmp ebx,8
jne .no8
cmp eax,14
jne .col
mov [stat],1
jmp .setout
.no8:
cmp ebx,16 ; cross 2x
jne .col
add [score],10 ; + 10 bonus points
jmp .setout
.col:
xor eax,eax
.setout:
xor ebx,ebx
mov [esp+28],eax
mov [esp+16],ebx
popa
ret
 
countdown:
pusha
xor eax,eax
mov al,[diffic]
imul eax,10
mov [time],eax
.udown:
call show_score
mov ecx,10
.down:
mov eax,5
mov ebx,10
int 0x40
mov eax,11
int 0x40
cmp eax,1
jne .nored
call draw_window
call draw_board
jmp .nothing
.nored:
cmp eax,3
jne .nothing
call get_input
.nothing:
cmp [stat],0 ;bugfix 210806
jnz .exitsub ;bugfix 210806
dec ecx
jnz .down
dec [time]
jnz .udown
.exitsub: ;bugfix 210806
popa
ret
 
wassermarsch:
pusha
.restart:
mov esi,map+16 ;start position
mov eax, 14 ;start-richtung
.findway:
movzx ebx, byte [esi]
call get_direction
test eax,eax
jz .collision
push eax
xor eax,eax
mov al,6
sub al,[diffic]
add [score],eax ;points/item = 6 - difficulty
mov ecx,dword [speed]
add byte [esi],10
.down:
mov eax,5
mov ebx,2
int 0x40
mov eax,11
int 0x40
cmp eax,1
jne .nored
call draw_window
.nored:
cmp eax,3
jne .noevnt
call get_input
.noevnt:
dec ecx
jnz .down
pop eax
 
add esi,eax
call draw_board
call show_score
jmp .findway
.collision:
cmp [stat],1
jne .loose
call draw_message
mov eax,5
mov ebx,500
int 0x40
mov [stat],0
inc [level]
cmp [speed],6 ;waterflowdelay < 6 ?
jle .skipsub
sub [speed],2
.skipsub:
call draw_window
call scramble_board
call draw_board
call countdown
jmp .restart
.loose:
mov [stat],2
call draw_message
popa
ret
 
show_score:
pusha
mov eax,13 ;clear time and score area
mov ebx,50 shl 16 +15
mov ecx,395 shl 16 +15
mov edx,bgcolor
int 0x40
add ebx,60 shl 16 + 20
int 0x40
add ebx,80 shl 16
int 0x40
mov eax,47
mov ebx,0x20000
mov ecx,[time]
mov edx,50*65536+398
mov esi,fg2color
int 0x40
mov ebx,0x50000
mov ecx,[score]
add edx,60 shl 16
int 0x40
mov ebx,0x20000
mov ecx,[level]
add edx,80 shl 16
int 0x40
 
popa
ret
 
 
 
scramble_board:
pusha
mov edi,map+16 ;startpunkt
mov eax,7 ;wieder-
stosb ;herstellen
 
mov ebx, 0x00000007 ;modul m max-wert
.loop_through:
mov esi,edi
lodsb
cmp eax, 9
je .skip
inc eax
xor edx, edx
div ebx ;modulo -> edx
mov eax, edx
cmp eax,6
jne .skip
dec [half]
movzx eax, byte [half]
jnz .skip
mov [half], byte 7
.skip:
stosb
cmp edi,map+125 ;endpunkt erhalten
jge .exit
jmp .loop_through
.exit:
mov eax,8
stosb
popa
ret
 
 
gen_image:
pusha
xor ebx,ebx ;default: kein wasser
movzx eax,byte [map] ;erstes byte der map lesen (position)
inc byte [map] ;position inkrementieren
add eax,map ;zur position die map-adresse addieren
movzx esi,byte [eax]
cmp esi,10
jl .nowater
sub esi,10 ;map-werte+10 sind mit wasser gefuellt
mov ebx,1
cmp esi,16
jne .nowater
sub esi,10
.nowater:
imul esi,3072 ;mapwert * 32*32*3 = image-adresse
add esi,images
mov edi,0x10000
mov ecx,32*32*3
.gendd: ;RGB-Image im Speicher generieren
mov eax,dword [esi] ;byte aus imagemap lesen
shl eax,8
shr eax,8
cmp ebx,0
jz .nowcolor
mov ebx,eax
cmp ebx,0x00B0B5B0
jne .nog1
jmp .wcolor
.nog1:
cmp ebx,0x00A0A5A0
jne .nog2
jmp .wcolor
.nog2:
cmp ebx,0x00909590
jne .nog3
jmp .wcolor
.nog3:
cmp ebx,0x00808580
jne .nog4
jmp .wcolor
.nog4:
cmp ebx,0x00707570
jne .nowcolor
jmp .wcolor
.wcolor:
add eax,0x40
.nowcolor:
add esi,3
stosd
dec edi
loop .gendd
popa
ret
 
 
 
; *********************************************
; ******* WINDOW DEFINITIONS AND DRAW ********
; *********************************************
draw_message:
pusha
cmp [stat],0
je .nomessage
cmp [stat],3
je .nomessage
mov eax,13
mov ebx,146 shl 16 + 200
mov ecx,190 shl 16 + 40
mov edx,0x0
int 0x40
add ebx,2 shl 16 - 4
add ecx,2 shl 16 - 4
mov edx,fgcolor
int 0x40
 
cmp [stat],1
je .winmessage
mov eax,4
mov ebx,186 shl 16 +200
mov edx,lbl_gameover+1
movzx esi,byte [lbl_gameover]
mov ecx,btcolor
add ecx,0x10000000
int 0x40
add ebx,8 shl 16 +17
mov edx,lbl_yscore+1
movzx esi,byte [lbl_yscore]
mov ecx,btcolor
int 0x40
mov esi,ecx ;color
mov edx,ebx ;pos
add edx,80 shl 16
mov ebx,0x50000 ;type
mov ecx,[score] ;inp
mov eax,47
int 0x40
jmp .nomessage
.winmessage:
mov eax,4
mov ebx,152 shl 16 +200
mov edx,lbl_win+1
movzx esi,byte [lbl_win]
mov ecx,btcolor
add ecx,0x10000000
int 0x40
mov ebx,152 shl 16 +217
add edx,esi
mov ecx,btcolor
int 0x40
.nomessage:
popa
ret
 
draw_board:
pusha
mov ebx,15*65536+32
mov ecx,50*65536+32
mov edx,15*65536+50 ;Spielfeldposition
mov esi,10 ;Spielfeldgroesse Y
.vloop:
mov edi,14 ;Spielfeldgroesse X
.hloop:
call gen_image
push edx
mov eax,8
movsx edx, byte [map]
add edx,9 ;button-id = map-pos + 10;gen_image inkrements
add edx,0x50000000 ;no button image - no esi need
int 0x40
pop edx
push ebx
push ecx
mov eax,7
mov ebx,0x10000
mov ecx,32 shl 16 +32
int 0x40
pop ecx
pop ebx
add edx,33 shl 16
add ebx,33 shl 16
dec edi
jnz .hloop
sub edx,14*(33 shl 16) ;Spielfeldgroesse X
sub ebx,14*(33 shl 16)
add edx,33
add ecx,33 shl 16
dec esi
jnz .vloop
mov [map], byte 1 ;Map-Position zuruecksetzen
popa
ret
 
 
draw_window:
pusha
 
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,1 ; 1, start of draw
int 0x40
 
; DRAW WINDOW
mov eax,0 ; function 0 : define and draw window
mov ebx,100*65536+492 ; [x start] *65536 + [x size]
mov ecx,100*65536+420 ; [y start] *65536 + [y size]
mov edx,bgcolor ; color of work area RRGGBB,8->color gl
or edx,0x13000000
mov edi,header
int 0x40
 
mov eax,8
mov ebx,84*65536+72
mov ecx,28*65536+15
mov edx,2
mov esi,btcolor
int 0x40
add ebx,76 shl 16
inc edx
int 0x40
add ebx,76 shl 16
inc edx
int 0x40
 
mov eax,4
mov ebx,26 shl 16 +32
mov ecx,fgcolor
mov edx,lbl_toolbar+1
movsx esi, byte [lbl_toolbar]
int 0x40
mov ebx,18 shl 16 +398
mov edx,lbl_score+1
movsx esi, byte [lbl_score]
int 0x40
mov ebx,350 shl 16 +405
mov ecx,fg3color
mov edx,lbl_copy+1
movsx esi,byte [lbl_copy]
int 0x40
 
mov eax,12 ; function 12:tell os about windowdraw
mov ebx,2 ; 2, end of draw
int 0x40
 
popa
ret
 
 
; DATA AREA
 
 
header db 'PIPES',0
lbl_gameover:
db 19
db 'G a m e O v e r !'
lbl_win:
db 32
db ' G r e a t ! '
db " Let's goin'on! "
lbl_yscore:
db 11
db 'Your Score:'
lbl_toolbar:
db 43
db 'New Game: Easy Moderate Hard'
lbl_copy:
db 23
db 'v1.2 2006,Mario Birkner'
lbl_score:
db 28
db 'Time: Score: Level:'
stat db 3 ;0=gameplay 1=won 2-lost 3=stopped
speed db 0
time dd 0
diffic db 0 ;1=hard 3=moderate 5=easy 8=dedicated to Wildwest - try it out!
score dd 0
level dd 1
half db 1 ;reduces the random-crosses
 
map: ;14*10 blocks + position
db 1 ;<- act. position
db 9,9,9,9,9,9,9,9,9,9,9,9,9,9
db 9,7,1,3,2,0,1,1,0,3,4,4,3,9
db 9,5,0,2,2,1,3,0,3,1,1,6,4,9
db 9,4,0,4,6,0,3,3,2,6,0,1,2,9
db 9,3,0,1,2,4,6,4,5,1,2,4,1,9
db 9,5,3,2,6,3,2,1,2,1,2,6,0,9
db 9,4,0,2,3,0,4,1,2,3,2,3,4,9
db 9,2,0,4,5,6,3,1,3,0,4,1,0,9
db 9,1,0,3,5,4,2,2,4,1,6,0,8,9
db 9,9,9,9,9,9,9,9,9,9,9,9,9,9
images:
file 'pipes.raw'
I_END:
 
 
 
 
/programs/games/pipes/pipes.raw
0,0 → 1,0
z£ÇsœÀZƒ§g´r›¿f³cŒ°[„¨@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@užÂqš¾w ÄaŠ®m–ºqš¾y¢Æ]†ªy¢ÆcŒ°o˜¼{¤Èb‹¯Y‚¦m–ºd±@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@]†ªvŸÃ[„¨eŽ²qš¾h‘µf³`‰­[„¨i’¶r›¿g´k”¸sœÀqš¾Y‚¦@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@sœÀh‘µn—»f³k”¸y¢Æn—»w Äo˜¼užÂvŸÃ^‡«p™½x¡Åw ÄY‚¦@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@n—»tÁsœÀg´aŠ®eŽ²X¥`‰­x¡Åy¢ÆcŒ°\…©eŽ²užÂf³h‘µ@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@^‡«l•¹y¢Æx¡Åf³w ÄužÂz£Çz£ÇZƒ§d±cŒ°w ÄY‚¦n—»o˜¼@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@]†ªz£Çf³r›¿cŒ°sœÀf³tÁm–ºsœÀl•¹o˜¼aŠ®j“·k”¸Y‚¦@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@x¡Ån—»cŒ°x¡Åi’¶g´^‡«\…©užÂh‘µy¢ÆvŸÃo˜¼W€¤r›¿d±@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@_ˆ¬r›¿sœÀ`‰­_ˆ¬k”¸W€¤_ˆ¬_ˆ¬{¤ÈcŒ°cŒ°Zƒ§qš¾]†ªcŒ°@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@g´k”¸W€¤_ˆ¬\…©cŒ°o˜¼k”¸eŽ²X¥tÁZƒ§tÁh‘µm–º^‡«@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@f³]†ªeŽ²g´\…©j“·Zƒ§Y‚¦b‹¯Zƒ§m–ºw Äqš¾cŒ°i’¶f³@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@x¡Åg´Y‚¦vŸÃr›¿o˜¼k”¸[„¨Y‚¦f³qš¾_ˆ¬r›¿sœÀ`‰­_ˆ¬@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@j“·]†ªW€¤w ÄsœÀcŒ°n—»y¢Æf³Y‚¦l•¹w ÄužÂtÁd±d±@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@p™½n—»p™½Zƒ§]†ªz£ÇtÁeŽ²y¢Æ\…©j“·vŸÃo˜¼užÂZƒ§p™½@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@qš¾^‡«o˜¼W€¤n—»x¡ÅZƒ§Y‚¦Zƒ§`‰­aŠ®X¥n—»Zƒ§w Ä_ˆ¬@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@n—»j“·m–º\…©qš¾{¤Èf³Zƒ§j“·]†ªj“·eŽ²w ÄužÂqš¾`‰­@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@_ˆ¬w ÄtÁl•¹X¥^‡«tÁcŒ°b‹¯eŽ²[„¨[„¨Zƒ§j“·k”¸r›¿@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@`‰­cŒ°qš¾aŠ®f³x¡Å`‰­y¢Æj“·užÂvŸÃx¡Å^‡«[„¨d±qš¾@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@eŽ²užÂ[„¨tÁ^‡«eŽ²x¡Åh‘µn—»j“·\…©g´n—»k”¸]†ª\…©@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@Y‚¦d±W€¤]†ªi’¶l•¹tÁ\…©`‰­^‡«o˜¼`‰­o˜¼qš¾eŽ²W€¤@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@r›¿p™½w Äp™½`‰­qš¾b‹¯\…©X¥sœÀvŸÃZƒ§g´užÂf³h‘µ@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@vŸÃx¡Åm–ºX¥Zƒ§r›¿x¡Åm–ºn—»`‰­X¥vŸÃz£Ç[„¨g´\…©@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@w Äh‘µvŸÃf³^‡«tÁcŒ°i’¶f³x¡ÅZƒ§]†ªp™½tÁ_ˆ¬{¤È@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@{¤È^‡«tÁi’¶h‘µk”¸m–º]†ª_ˆ¬cŒ°m–ºm–ºd±z£ÇcŒ°tÁ@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@b‹¯p™½d±tÁw ÄeŽ²w ÄX¥j“·p™½Y‚¦qš¾h‘µaŠ®m–ºm–º@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@f³{¤Èx¡ÅY‚¦aŠ®h‘µl•¹X¥\…©l•¹w Äj“·_ˆ¬g´]†ª_ˆ¬@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@W€¤{¤ÈsœÀ{¤ÈW€¤j“·r›¿Zƒ§n—»`‰­X¥vŸÃz£Ç[„¨g´\…©@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@w Äh‘µvŸÃf³^‡«tÁcŒ°i’¶w Äm–º_ˆ¬Zƒ§m–ºsœÀl•¹o˜¼@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@Y‚¦x¡Å^‡«b‹¯x¡Ån—»cŒ°x¡ÅvŸÃg´vŸÃf³f³w Äm–ºeŽ²@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@cŒ°cŒ°n—»d±i’¶d±_ˆ¬l•¹p™½užÂaŠ®]†ªp™½j“·X¥X¥@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@X¥vŸÃw ÄaŠ®aŠ®W€¤j“·Zƒ§d±m–ºZƒ§n—»qš¾vŸÃf³h‘µ@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@i’¶k”¸y¢Æw Än—»b‹¯h‘µj“·Zƒ§W€¤i’¶z£ÇsœÀZƒ§g´r›¿@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@b‹¯r›¿f³užÂqš¾w ÄaŠ®m–ºeŽ²Zƒ§`‰­aŠ®X¥n—»Zƒ§w Ä_ˆ¬vŸÃeŽ²p™½f³n—»i’¶o˜¼y¢Æp™½o˜¼{¤Èz£Çi’¶eŽ²X¥^‡«n—»j“·m–º\…©qš¾{¤Èf³n—»n—»g´X¥užÂg´y¢ÆcŒ°h‘µ{¤Èl•¹j“·{¤ÈX¥^‡«z£ÇY‚¦užÂg´sœÀi’¶m–ºd±w ÄcŒ°{¤Èqš¾{¤Èy¢ÆY‚¦r›¿f³h‘µY‚¦`‰­sœÀw ÄsœÀx¡ÅY‚¦[„¨m–ºg´[„¨x¡ÅaŠ®užÂcŒ°eŽ²Y‚¦_ˆ¬sœÀ]†ªj“·_ˆ¬p™½X¥b‹¯[„¨j“·j“·n—»f³w Äm–ºX¥Zƒ§r›¿x¡Åm–ºtÁg´X¥l•¹j“·j“·W€¤qš¾^‡«o˜¼W€¤n—»x¡ÅZƒ§Y‚¦l•¹eŽ²]†ªeŽ²aŠ®i’¶k”¸r›¿i’¶Zƒ§užÂn—»užÂk”¸{¤ÈX¥cŒ°užÂn—»l•¹eŽ²j“·n—»_ˆ¬b‹¯aŠ®k”¸w Äz£Çg´l•¹r›¿f³vŸÃ_ˆ¬^‡«aŠ®vŸÃl•¹r›¿vŸÃx¡ÅZƒ§^‡«eŽ²h‘µqš¾n—»b‹¯h‘µy¢Æf³x¡Åj“·\…©z£Ç`‰­x¡ÅaŠ®i’¶h‘µb‹¯^‡«r›¿i’¶Zƒ§k”¸{¤ÈY‚¦\…©i’¶o˜¼g´eŽ²x¡ÅY‚¦y¢Æd±sœÀi’¶l•¹Zƒ§cŒ°^‡«užÂW€¤w Äm–º_ˆ¬Zƒ§m–ºsœÀl•¹o˜¼aŠ®j“·k”¸Y‚¦y¢Æ]†ªm–º^‡«j“·m–º[„¨_ˆ¬o˜¼n—»b‹¯h‘µj“·X¥l•¹y¢Æqš¾užÂ_ˆ¬užÂp™½vŸÃz£Çy¢Æn—»Y‚¦tÁj“·cŒ°tÁ\…©\…©sœÀi’¶p™½j“·m–ºtÁqš¾\…©h‘µ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@puppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppup€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€•••••••••••••••••••••••••••••••• ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ °µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ° ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ ••••••••••••••••••••••••••••••••€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€puppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppuppup@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Y‚¦sœÀk”¸cŒ°Y‚¦n—»]†ªX¥y¢Æ[„¨i’¶tÁf³W€¤z£ÇvŸÃeŽ²cŒ°n—»_ˆ¬cŒ°m–ºm–ºd±z£ÇcŒ°tÁW€¤qš¾Y‚¦l•¹\…©j“·o˜¼tÁk”¸i’¶_ˆ¬`‰­]†ªx¡ÅvŸÃqš¾b‹¯[„¨z£Çb‹¯j“·]†ªp™½y¢Æz£Ç]†ªcŒ°k”¸_ˆ¬vŸÃh‘µX¥z£Ç]†ªj“·z£ÇužÂb‹¯vŸÃužÂ`‰­aŠ®h‘µl•¹qš¾Zƒ§w ÄtÁ`‰­x¡ÅZƒ§n—»tÁx¡Åd±^‡«w ÄeŽ²i’¶b‹¯sœÀ^‡«^‡«l•¹cŒ°]†ªvŸÃz£ÇtÁužÂo˜¼x¡Åqš¾h‘µg´x¡Åf³[„¨]†ªtÁk”¸h‘µx¡Åqš¾[„¨užÂr›¿vŸÃqš¾aŠ®n—»vŸÃ_ˆ¬vŸÃX¥g´eŽ²m–ºh‘µp™½l•¹l•¹d±tÁužÂZƒ§_ˆ¬w ÄtÁl•¹X¥^‡«tÁcŒ°^‡«z£Çqš¾x¡ÅX¥W€¤qš¾[„¨z£Çp™½`‰­p™½Zƒ§{¤Èf³[„¨eŽ²^‡«x¡Åi’¶l•¹tÁj“·[„¨[„¨p™½p™½j“·tÁaŠ®m–ºf³\…©tÁz£ÇW€¤{¤ÈsœÀ{¤ÈW€¤j“·r›¿Zƒ§g´k”¸\…©x¡Åb‹¯`‰­qš¾sœÀk”¸cŒ°w Äi’¶b‹¯i’¶\…©]†ª\…©i’¶m–ºw ÄcŒ°cŒ°aŠ®d±w Äp™½l•¹j“·p™½užÂj“·y¢Æ]†ªp™½]†ª[„¨j“·vŸÃqš¾k”¸aŠ®Y‚¦[„¨h‘µn—»aŠ®eŽ²qš¾užÂj“·]†ªj“·eŽ²w ÄužÂqš¾`‰­y¢Æ[„¨{¤È\…©g´m–ºr›¿X¥]†ªg´i’¶l•¹d±tÁužÂh‘µ\…©f³]†ªz£Çf³r›¿cŒ°@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@W€¤l•¹n—»w Äo˜¼m–ºsœÀY‚¦k”¸m–º]†ªo˜¼Y‚¦d±m–º{¤È@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@p™½w Äz£Ç^‡«d±^‡«h‘µf³[„¨r›¿Zƒ§_ˆ¬tÁW€¤j“·vŸÃ@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@h‘µužÂ{¤Èy¢ÆX¥W€¤g´_ˆ¬qš¾cŒ°qš¾d±vŸÃg´Y‚¦m–º@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@`‰­aŠ®h‘µl•¹qš¾Zƒ§w ÄtÁl•¹p™½qš¾Zƒ§`‰­d±_ˆ¬vŸÃ@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@{¤Èm–ºp™½r›¿h‘µm–ºcŒ°aŠ®sœÀeŽ²i’¶vŸÃx¡Åj“·X¥\…©@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@^‡«k”¸užÂ]†ª{¤Èx¡Åj“·X¥qš¾y¢Æ[„¨_ˆ¬užÂp™½j“·j“·@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@tÁr›¿x¡Å_ˆ¬o˜¼sœÀcŒ°m–ºX¥_ˆ¬aŠ®y¢Æl•¹o˜¼^‡«sœÀ@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@@@@w ÄY‚¦n—»o˜¼vŸÃqš¾eŽ²Zƒ§j“·cŒ°sœÀg´qš¾]†ªp™½@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@@@@@@@@@@@@@@@@@@@{¤ÈcŒ°]†ªb‹¯p™½g´p™½cŒ°@@@@@@pup€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@@@@@@@@@@@@@@@@d±^‡«Zƒ§qš¾_ˆ¬h‘µi’¶Y‚¦@@@@@@puppup€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€puppuppuppuppuppuppuppuppupZƒ§W€¤j“·Y‚¦\…©h‘µy¢ÆtÁ@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€€…€€…€€…€€…€€…€€…€€…€€…€W€¤k”¸i’¶qš¾\…©k”¸w Ä]†ªj“·@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥ •••••••••h‘µf³n—»m–ºo˜¼^‡«eŽ²b‹¯i’¶Zƒ§@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ _ˆ¬k”¸W€¤_ˆ¬^‡«tÁ[„¨m–ºqš¾j“·eŽ²@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ n—»z£ÇcŒ°p™½qš¾tÁ^‡«b‹¯m–ºi’¶Zƒ§l•¹@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°aŠ®užÂY‚¦z£Çqš¾vŸÃ`‰­m–ºz£Çqš¾f³eŽ²Zƒ§@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°aŠ®eŽ²p™½i’¶eŽ²p™½k”¸n—»h‘µm–ºW€¤p™½l•¹j“·@@@@@@@@@puppup€…€• ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ ]†ªj“·cŒ°o˜¼{¤Èz£ÇZƒ§d±_ˆ¬z£ÇeŽ²y¢Æi’¶Zƒ§Zƒ§@@@@@@@@@puppup€…€• ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ l•¹tÁužÂ`‰­Zƒ§y¢Æh‘µtÁ`‰­h‘µr›¿W€¤qš¾f³eŽ²eŽ²@@@@@@@@@puppup€…€••••••••••w Ä{¤Èp™½d±`‰­tÁk”¸f³l•¹_ˆ¬užÂg´m–ºW€¤p™½l•¹l•¹@@@@@@@@@puppup€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€cŒ°m–ºp™½z£Ço˜¼cŒ°užÂW€¤i’¶`‰­\…©Zƒ§tÁb‹¯x¡Åj“·b‹¯Zƒ§@@@@@@@@@puppuppuppuppuppuppuppuppuppuppupn—»{¤ÈX¥sœÀužÂp™½z£Ço˜¼qš¾f³eŽ²m–ºp™½h‘µr›¿W€¤qš¾f³eŽ²@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Zƒ§y¢Æh‘µtÁz£Ç[„¨l•¹f³m–ºW€¤p™½l•¹sœÀ_ˆ¬užÂg´m–ºW€¤p™½l•¹@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@qš¾x¡Åo˜¼tÁb‹¯g´qš¾_ˆ¬Zƒ§n—»cŒ°w Äl•¹]†ªaŠ®aŠ®n—»_ˆ¬h‘µW€¤Zƒ§d±{¤ÈZƒ§X¥qš¾sœÀl•¹qš¾[„¨k”¸h‘µw Ä\…©w Ä`‰­i’¶užÂy¢Æl•¹y¢Æ{¤Èm–º{¤ÈtÁj“·eŽ²užÂz£Çk”¸f³k”¸W€¤^‡«cŒ°j“·_ˆ¬y¢ÆeŽ²p™½cŒ°r›¿m–º\…©aŠ®Y‚¦w Äx¡Åy¢Æf³[„¨[„¨h‘µX¥p™½p™½užÂcŒ°p™½Y‚¦cŒ°W€¤n—»i’¶j“·Zƒ§]†ªcŒ°aŠ®[„¨i’¶qš¾qš¾Zƒ§]†ªf³m–ºy¢Æn—»Zƒ§o˜¼h‘µ_ˆ¬eŽ²tÁsœÀz£Çd±`‰­o˜¼i’¶z£Çp™½_ˆ¬m–ºqš¾Y‚¦qš¾b‹¯sœÀy¢Æ_ˆ¬vŸÃZƒ§d±_ˆ¬o˜¼]†ªqš¾aŠ®{¤Èn—»x¡År›¿užÂ^‡«z£ÇužÂo˜¼`‰­Zƒ§{¤ÈeŽ²qš¾qš¾^‡«o˜¼\…©\…©_ˆ¬p™½g´l•¹užÂx¡Å`‰­vŸÃtÁY‚¦z£Çy¢Æk”¸X¥tÁ[„¨[„¨p™½`‰­[„¨p™½cŒ°tÁy¢Æz£Çp™½vŸÃtÁtÁ^‡«k”¸h‘µh‘µg´qš¾o˜¼p™½j“·d±g´W€¤d±f³]†ªy¢ÆsœÀx¡Ån—»sœÀj“·\…©l•¹z£ÇužÂk”¸h‘µZƒ§k”¸`‰­^‡«[„¨eŽ²w Äy¢Æi’¶p™½]†ª^‡«j“·X¥_ˆ¬Y‚¦j“·m–ºr›¿vŸÃd±užÂd±_ˆ¬z£Çj“·Zƒ§f³o˜¼W€¤f³tÁd±n—»m–ºb‹¯m–ºb‹¯]†ªtÁY‚¦cŒ°p™½sœÀj“·\…©vŸÃm–ºvŸÃ{¤ÈcŒ°qš¾x¡Åo˜¼tÁb‹¯g´qš¾_ˆ¬Zƒ§n—»cŒ°w Äl•¹]†ªaŠ®aŠ®n—»_ˆ¬h‘µW€¤Zƒ§d±{¤ÈZƒ§X¥qš¾sœÀl•¹qš¾[„¨k”¸h‘µw Ä\…©w Ä`‰­i’¶užÂy¢Æl•¹y¢Æ{¤Èm–º{¤ÈtÁj“·eŽ²užÂz£Çk”¸f³k”¸W€¤^‡«cŒ°j“·_ˆ¬y¢ÆeŽ²p™½cŒ°r›¿m–º\…©aŠ®Y‚¦w Äx¡Åy¢Æf³[„¨[„¨h‘µX¥p™½p™½užÂcŒ°p™½Y‚¦cŒ°W€¤n—»i’¶j“·Zƒ§]†ªcŒ°aŠ®[„¨i’¶qš¾qš¾Zƒ§]†ªf³m–ºy¢Æn—»Zƒ§o˜¼h‘µ_ˆ¬eŽ²tÁsœÀz£Çd±`‰­o˜¼i’¶z£Çp™½_ˆ¬m–ºqš¾Y‚¦qš¾b‹¯sœÀy¢Æ_ˆ¬vŸÃZƒ§d±_ˆ¬o˜¼]†ªqš¾aŠ®{¤Èn—»x¡År›¿užÂ^‡«z£ÇužÂo˜¼`‰­Zƒ§{¤ÈeŽ²qš¾qš¾^‡«o˜¼\…©\…©_ˆ¬p™½g´l•¹užÂx¡Å`‰­vŸÃtÁY‚¦z£Çy¢Æk”¸X¥tÁ[„¨[„¨p™½`‰­[„¨p™½cŒ°tÁy¢Æz£Çp™½vŸÃtÁtÁ^‡«k”¸h‘µh‘µg´qš¾o˜¼p™½j“·d±g´W€¤d±f³]†ªy¢ÆsœÀx¡Ån—»sœÀj“·\…©l•¹z£ÇužÂk”¸h‘µZƒ§k”¸`‰­^‡«[„¨eŽ²w Äy¢Æi’¶p™½]†ª^‡«j“·X¥_ˆ¬Y‚¦j“·m–ºr›¿vŸÃd±užÂd±_ˆ¬z£Çj“·Zƒ§f³o˜¼W€¤f³tÁd±n—»m–ºb‹¯m–ºb‹¯]†ªtÁY‚¦cŒ°p™½sœÀj“·\…©vŸÃm–ºvŸÃ{¤ÈcŒ°g´y¢Æp™½^‡«\…©o˜¼l•¹i’¶m–ºqš¾i’¶l•¹`‰­_ˆ¬h‘µz£Çm–ºqš¾i’¶j“·@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@tÁqš¾z£Çw Äh‘µb‹¯p™½Y‚¦W€¤f³`‰­_ˆ¬h‘µz£Çm–ºqš¾i’¶j“·Zƒ§@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@z£ÇvŸÃo˜¼eŽ²g´eŽ²qš¾tÁp™½eŽ²\…©užÂr›¿eŽ²W€¤f³Zƒ§eŽ²@@@@@@@@@puppuppuppuppuppuppuppuppuppuppup]†ªl•¹vŸÃi’¶l•¹y¢ÆZƒ§f³l•¹m–ºZƒ§g´W€¤y¢Æp™½eŽ²l•¹@@@@@@@@@puppup€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€p™½]†ªg´b‹¯W€¤\…©`‰­[„¨sœÀp™½tÁm–ºqš¾i’¶l•¹Zƒ§@@@@@@@@@puppup€…€••••••••••p™½cŒ°vŸÃsœÀaŠ®j“·d±X¥_ˆ¬h‘µb‹¯W€¤f³Zƒ§j“·@@@@@@@@@puppup€…€• ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ m–ºaŠ®f³^‡«k”¸vŸÃ_ˆ¬i’¶užÂr›¿x¡Åp™½eŽ²Zƒ§@@@@@@@@@puppup€…€• ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ f³o˜¼f³^‡«užÂo˜¼vŸÃi’¶g´W€¤j“·l•¹eŽ²@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°b‹¯p™½w Äl•¹w ÄužÂ\…©aŠ®m–ºqš¾b‹¯l•¹@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°qš¾\…©m–ºcŒ°j“·Zƒ§k”¸užÂW€¤f³Zƒ§@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ x¡Åg´eŽ²]†ªsœÀp™½eŽ²Y‚¦p™½eŽ²@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ g´qš¾sœÀvŸÃaŠ®_ˆ¬x¡Åz£Çl•¹@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥ •••••••••z£Çx¡Åi’¶z£Çg´vŸÃ^‡«qš¾@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€€…€€…€€…€€…€€…€€…€€…€€…€]†ªqš¾j“·tÁj“·x¡Å^‡«vŸÃ@@@@@@puppup€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€puppuppuppuppuppuppuppuppupz£Çz£Çm–ºr›¿`‰­m–ºk”¸`‰­@@@@@@pup€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@@@@@@@@@@@@@@@@_ˆ¬h‘µz£ÇtÁ[„¨X¥\…©m–º@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@@@@@@@@@@@@@@@@@@@užÂr›¿eŽ²b‹¯y¢ÆZƒ§tÁb‹¯@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@@@@tÁ^‡«{¤È`‰­h‘µp™½W€¤g´W€¤y¢Æx¡Åy¢Ær›¿r›¿Y‚¦@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@w Är›¿k”¸m–ºaŠ®užÂw Äl•¹m–ºqš¾i’¶j“·X¥x¡Åx¡År›¿@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@Y‚¦x¡ÅužÂp™½h‘µ{¤Èz£Çn—»W€¤f³Zƒ§b‹¯Zƒ§m–º_ˆ¬vŸÃ@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@n—»_ˆ¬]†ªr›¿l•¹y¢Æ^‡«w Äp™½eŽ²]†ªsœÀužÂtÁo˜¼užÂ@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@o˜¼o˜¼{¤Èh‘µqš¾X¥d±o˜¼l•¹m–ºm–º]†ªg´g´sœÀ^‡«@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@vŸÃsœÀx¡Åm–ºZƒ§W€¤^‡«m–ºsœÀp™½Y‚¦tÁužÂX¥cŒ°{¤È@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@qš¾cŒ°j“·cŒ°w Äg´h‘µsœÀk”¸k”¸y¢ÆtÁw Äl•¹m–ºf³@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@eŽ²m–ºX¥aŠ®tÁ_ˆ¬f³Y‚¦k”¸sœÀl•¹p™½W€¤m–ºg´užÂ_ˆ¬z£Ç]†ªz£Çg´x¡Åqš¾b‹¯f³m–ºp™½p™½]†ªz£ÇtÁg´vŸÃ]†ªy¢Æqš¾m–ºaŠ®w Äqš¾k”¸p™½m–ºeŽ²f³qš¾W€¤r›¿h‘µz£Çqš¾x¡Åqš¾g´\…©p™½o˜¼aŠ®cŒ°]†ªl•¹vŸÃqš¾y¢Æd±y¢Æk”¸aŠ®y¢ÆY‚¦\…©x¡Åy¢ÆY‚¦m–º]†ªZƒ§i’¶y¢ÆeŽ²z£Çm–ºj“·i’¶sœÀeŽ²m–ºw Äf³f³vŸÃg´vŸÃo˜¼z£Çp™½užÂsœÀX¥{¤Èn—»w Äw Äo˜¼tÁtÁ]†ªsœÀb‹¯j“·x¡Åb‹¯tÁr›¿tÁz£ÇvŸÃ]†ªcŒ°l•¹^‡«^‡«sœÀb‹¯i’¶eŽ²w Ä^‡«d±x¡ÅtÁn—»Zƒ§x¡Å`‰­tÁw ÄužÂg´užÂZƒ§X¥y¢Æy¢Æ[„¨`‰­j“·g´aŠ®sœÀj“·w ÄužÂk”¸aŠ®W€¤l•¹g´h‘µ\…©_ˆ¬n—»[„¨x¡Åo˜¼y¢Æi’¶b‹¯l•¹X¥g´tÁm–ºx¡År›¿Zƒ§X¥m–ºx¡ÅvŸÃ_ˆ¬p™½Zƒ§užÂo˜¼vŸÃj“·\…©y¢ÆeŽ²b‹¯o˜¼z£ÇsœÀ[„¨r›¿h‘µf³užÂg´m–ºcŒ°sœÀo˜¼_ˆ¬x¡År›¿tÁ\…©k”¸^‡«^‡«x¡ÅeŽ²k”¸\…©vŸÃ_ˆ¬d±`‰­Zƒ§qš¾p™½l•¹j“·j“·p™½užÂ_ˆ¬[„¨y¢Æqš¾f³{¤È^‡«užÂvŸÃr›¿Y‚¦b‹¯m–º`‰­vŸÃqš¾z£ÇY‚¦užÂaŠ®i’¶i’¶X¥[„¨f³tÁY‚¦i’¶Zƒ§\…©`‰­^‡«eŽ²[„¨l•¹_ˆ¬@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@l•¹p™½W€¤m–ºg´užÂ_ˆ¬sœÀl•¹p™½W€¤m–ºf³l•¹[„¨z£ÇtÁh‘µy¢ÆZƒ§@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@eŽ²f³qš¾W€¤r›¿h‘µp™½m–ºeŽ²f³qš¾o˜¼z£Çp™½užÂsœÀX¥{¤Èn—»puppuppuppuppuppuppuppuppuppuppup@@@@@@@@@Zƒ§b‹¯j“·x¡Åb‹¯tÁZƒ§\…©`‰­i’¶W€¤užÂcŒ°o˜¼z£Çp™½m–ºcŒ°€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€puppup@@@@@@@@@l•¹l•¹p™½W€¤m–ºg´užÂ_ˆ¬l•¹f³k”¸tÁ`‰­d±p™½{¤Èw Ä••••••••••€…€puppup@@@@@@@@@eŽ²eŽ²f³qš¾W€¤r›¿h‘µ`‰­tÁh‘µy¢ÆZƒ§`‰­užÂtÁl•¹ ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ •€…€puppup@@@@@@@@@Zƒ§Zƒ§i’¶y¢ÆeŽ²z£Ç_ˆ¬d±Zƒ§z£Ç{¤Èo˜¼cŒ°j“·]†ª ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ •€…€puppup@@@@@@@@@j“·l•¹p™½W€¤m–ºh‘µn—»k”¸p™½eŽ²i’¶p™½eŽ²aŠ®°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@Zƒ§eŽ²f³qš¾z£Çm–º`‰­vŸÃqš¾z£ÇY‚¦užÂaŠ®°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@l•¹Zƒ§i’¶m–ºb‹¯^‡«tÁqš¾p™½cŒ°z£Çn—» ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@eŽ²j“·qš¾m–º[„¨tÁ^‡«_ˆ¬W€¤k”¸_ˆ¬ ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@Zƒ§i’¶b‹¯eŽ²^‡«o˜¼m–ºn—»f³h‘µ••••••••• ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@j“·]†ªw Äk”¸\…©qš¾i’¶k”¸W€¤€…€€…€€…€€…€€…€€…€€…€€…€€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@tÁy¢Æh‘µ\…©Y‚¦j“·W€¤Zƒ§puppuppuppuppuppuppuppuppup€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€puppup@@@@@@Y‚¦i’¶h‘µ_ˆ¬qš¾Zƒ§^‡«d±@@@@@@@@@@@@@@@@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€pup@@@@@@cŒ°p™½g´p™½b‹¯]†ªcŒ°{¤È@@@@@@@@@@@@@@@@@@@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@p™½]†ªqš¾g´sœÀcŒ°j“·Zƒ§eŽ²qš¾vŸÃo˜¼n—»Y‚¦w Ä@@@@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@sœÀ^‡«o˜¼l•¹y¢ÆaŠ®_ˆ¬X¥m–ºcŒ°sœÀo˜¼_ˆ¬x¡År›¿tÁ@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@j“·j“·p™½užÂ_ˆ¬[„¨y¢Æqš¾X¥j“·x¡Å{¤È]†ªužÂk”¸^‡«@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@\…©X¥j“·x¡ÅvŸÃi’¶eŽ²sœÀaŠ®cŒ°m–ºh‘µr›¿p™½m–º{¤È@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@vŸÃ_ˆ¬d±`‰­Zƒ§qš¾p™½l•¹tÁw ÄZƒ§qš¾l•¹h‘µaŠ®`‰­@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@m–ºY‚¦g´vŸÃd±qš¾cŒ°qš¾_ˆ¬g´W€¤X¥y¢Æ{¤ÈužÂh‘µ@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@vŸÃj“·W€¤tÁ_ˆ¬Zƒ§r›¿[„¨f³h‘µ^‡«d±^‡«z£Çw Äp™½@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@{¤Èm–ºd±Y‚¦o˜¼]†ªm–ºk”¸Y‚¦sœÀm–ºo˜¼w Än—»l•¹W€¤@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@cŒ°r›¿f³z£Ç]†ªf³\…©h‘µY‚¦f³_ˆ¬tÁaŠ®X¥m–ºeŽ²@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@f³m–ºl•¹w ÄtÁy¢Æk”¸k”¸sœÀh‘µg´w ÄcŒ°j“·cŒ°qš¾@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@{¤ÈcŒ°X¥užÂtÁY‚¦p™½sœÀm–º^‡«W€¤Zƒ§m–ºx¡ÅsœÀvŸÃ@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@^‡«sœÀg´g´]†ªm–ºm–ºl•¹o˜¼d±X¥qš¾h‘µ{¤Èo˜¼o˜¼@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@užÂo˜¼tÁužÂsœÀ]†ªeŽ²p™½w Ä^‡«y¢Æl•¹r›¿]†ª_ˆ¬n—»@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@vŸÃ_ˆ¬m–ºZƒ§b‹¯Zƒ§f³W€¤n—»z£Ç{¤Èh‘µp™½užÂx¡ÅY‚¦@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@r›¿x¡Åx¡ÅX¥j“·i’¶qš¾m–ºl•¹w ÄužÂaŠ®m–ºk”¸r›¿w Ä@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@Y‚¦r›¿r›¿y¢Æx¡Åy¢ÆW€¤g´W€¤p™½h‘µ`‰­{¤È^‡«tÁ@@@@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@b‹¯tÁZƒ§y¢Æb‹¯eŽ²r›¿užÂ@@@@@@@@@@@@@@@@@@@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@m–º\…©X¥[„¨tÁz£Çh‘µ_ˆ¬@@@@@@@@@@@@@@@@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€pup@@@@@@`‰­k”¸m–º`‰­r›¿m–ºz£Çz£Çpuppuppuppuppuppuppuppuppup€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€puppup@@@@@@vŸÃ^‡«x¡Åj“·tÁj“·qš¾]†ª€…€€…€€…€€…€€…€€…€€…€€…€€…€• ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@b‹¯^‡«vŸÃg´z£Çi’¶x¡Åz£Ç••••••••• ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@l•¹j“·x¡Å_ˆ¬aŠ®vŸÃsœÀqš¾g´ ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@eŽ²p™½x¡ÅeŽ²p™½sœÀ]†ªeŽ²g´x¡Å ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ °µ°°µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@Zƒ§f³W€¤b‹¯k”¸Zƒ§j“·cŒ°m–º\…©qš¾°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@l•¹b‹¯qš¾m–ºtÁy¢Æk”¸k”¸l•¹w Äp™½b‹¯°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@eŽ²l•¹j“·W€¤g´Zƒ§Y‚¦p™½sœÀ^‡«f³o˜¼f³ ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ •€…€puppup@@@@@@@@@Zƒ§eŽ²p™½x¡År›¿užÂ\…©m–ºm–ºl•¹^‡«f³aŠ®m–º ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ •€…€puppup@@@@@@@@@j“·Zƒ§f³W€¤b‹¯h‘µ_ˆ¬`‰­]†ªeŽ²p™½sœÀvŸÃcŒ°p™½••••••••••€…€puppup@@@@@@@@@Zƒ§l•¹i’¶qš¾m–ºtÁp™½sœÀb‹¯Zƒ§f³W€¤b‹¯g´]†ªp™½€…€€…€€…€€…€€…€€…€€…€€…€€…€€…€puppup@@@@@@@@@l•¹eŽ²p™½y¢ÆW€¤g´Zƒ§m–ºl•¹j“·i’¶qš¾m–ºi’¶vŸÃl•¹]†ªpuppuppuppuppuppuppuppuppuppuppup@@@@@@@@@eŽ²Zƒ§f³W€¤eŽ²r›¿užÂ\…©eŽ²p™½x¡Åy¢ÆW€¤g´eŽ²o˜¼vŸÃz£Ç@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Zƒ§j“·i’¶qš¾m–ºz£Çh‘µ_ˆ¬`‰­f³W€¤b‹¯eŽ²r›¿užÂw Äz£Çqš¾tÁ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@j“·i’¶qš¾m–ºz£Çh‘µ_ˆ¬`‰­l•¹i’¶qš¾m–ºtÁz£Çh‘µ_ˆ¬^‡«p™½y¢Æg´cŒ°{¤ÈvŸÃm–ºvŸÃ\…©j“·sœÀp™½cŒ°Y‚¦tÁ]†ªb‹¯o˜¼tÁužÂsœÀ]†ªeŽ²p™½y¢ÆW€¤g´Zƒ§j“·z£Ç_ˆ¬d±užÂd±vŸÃr›¿m–ºj“·Y‚¦_ˆ¬X¥j“·^‡«]†ªp™½i’¶y¢Æw ÄeŽ²_ˆ¬m–ºZƒ§b‹¯Zƒ§f³W€¤eŽ²r›¿užÂ\…©j“·sœÀn—»x¡ÅsœÀy¢Æ]†ªf³d±W€¤g´d±j“·p™½o˜¼qš¾g´h‘µh‘µk”¸^‡«x¡Åx¡ÅX¥j“·i’¶qš¾m–ºz£Çh‘µ_ˆ¬`‰­p™½[„¨[„¨tÁX¥k”¸y¢Æz£ÇY‚¦tÁvŸÃ`‰­x¡ÅužÂl•¹g´p™½_ˆ¬\…©\…©o˜¼r›¿r›¿y¢Æx¡Åy¢ÆW€¤g´o˜¼užÂz£Ç^‡«užÂr›¿x¡Ån—»{¤ÈaŠ®qš¾]†ªo˜¼_ˆ¬d±Zƒ§vŸÃ_ˆ¬y¢ÆsœÀb‹¯qš¾Y‚¦qš¾m–ºtÁZƒ§y¢Æb‹¯eŽ²r›¿užÂz£ÇsœÀtÁeŽ²_ˆ¬h‘µo˜¼Zƒ§n—»y¢Æm–ºf³]†ªZƒ§qš¾qš¾i’¶[„¨aŠ®cŒ°]†ªZƒ§j“·i’¶n—»\…©X¥[„¨tÁz£Çh‘µ_ˆ¬p™½X¥h‘µ[„¨[„¨f³y¢Æx¡Åw ÄY‚¦aŠ®\…©m–ºr›¿cŒ°p™½eŽ²y¢Æ_ˆ¬j“·cŒ°^‡«W€¤k”¸f³k”¸z£ÇužÂeŽ²j“·tÁ{¤Èm–º{¤Èy¢Æl•¹y¢ÆužÂi’¶`‰­w Ä\…©w Äh‘µk”¸[„¨qš¾l•¹sœÀqš¾X¥Zƒ§{¤Èd±Zƒ§W€¤h‘µ_ˆ¬n—»aŠ®aŠ®]†ªl•¹w ÄcŒ°n—»Zƒ§_ˆ¬qš¾g´b‹¯tÁo˜¼x¡Åqš¾h‘µ\…©f³]†ªz£Çf³r›¿cŒ°@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@W€¤l•¹n—»w Äo˜¼m–ºsœÀY‚¦k”¸m–º]†ªo˜¼Y‚¦d±m–º{¤È@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@p™½w Äz£Ç^‡«d±^‡«h‘µf³[„¨r›¿Zƒ§_ˆ¬tÁW€¤j“·vŸÃ@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@h‘µužÂ{¤Èy¢ÆX¥W€¤g´_ˆ¬qš¾cŒ°qš¾d±vŸÃg´Y‚¦m–º@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@`‰­aŠ®h‘µl•¹qš¾Zƒ§w ÄtÁl•¹p™½qš¾Zƒ§`‰­d±_ˆ¬vŸÃ@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@{¤Èm–ºp™½r›¿h‘µm–ºcŒ°aŠ®sœÀeŽ²i’¶vŸÃx¡Åj“·X¥\…©@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@^‡«k”¸užÂ]†ª{¤Èx¡Åj“·X¥qš¾y¢Æ[„¨_ˆ¬užÂp™½j“·j“·@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@tÁr›¿x¡Å_ˆ¬o˜¼sœÀcŒ°m–ºX¥_ˆ¬aŠ®y¢Æl•¹o˜¼^‡«@@@@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@@@@w ÄY‚¦n—»o˜¼vŸÃqš¾eŽ²@@@@@@@@@@@@@@@@@@@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@puppup€…€• ¥  ¥  ¥ °µ°°µ° ¥  ¥  ¥ •€…€puppup@@@@@@@@@@@@@@@@@@@@@@@@puppuppuppuppuppuppuppuppup€…€• ¥  ¥  ¥  ¥ °µ°°µ° ¥  ¥  ¥  ¥ •€…€puppuppuppuppuppuppuppuppup€…€€…€€…€€…€€…€€…€€…€€…€€…€• ¥  ¥  ¥  ¥  ¥ °µ°°µ° ¥  ¥  ¥  ¥  ¥ •€…€€…€€…€€…€€…€€…€€…€€…€€…€••••••••• ¥  ¥  ¥  ¥  ¥  ¥ °µ°°µ° ¥  ¥  ¥  ¥  ¥  ¥ ••••••••• ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ °µ°°µ° ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ °µ°°µ° ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ °µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ° ¥ °µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ° ¥ °µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ°°µ° ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ °µ°°µ° ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ °µ°°µ° ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥  ¥ ••••••••• ¥  ¥  ¥  ¥  ¥  ¥ °µ°°µ° ¥  ¥  ¥  ¥  ¥  ¥ •••••••••€…€€…€€…€€…€€…€€…€€…€€…€€…€• ¥  ¥  ¥  ¥  ¥ °µ°°µ° ¥  ¥  ¥  ¥  ¥ •€…€€…€€…€€…€€…€€…€€…€€…€€…€puppuppuppuppuppuppuppuppup€…€• ¥  ¥  ¥  ¥ °µ°°µ° ¥  ¥  ¥  ¥ •€…€puppuppuppuppuppuppuppuppup@@@@@@@@@@@@@@@@@@@@@@@@puppup€…€• ¥  ¥  ¥ °µ°°µ° ¥  ¥  ¥ •€…€puppup@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@puppup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€puppup@@@@@@@@@@@@@@@@@@@@@@@@@@@_ˆ¬l•¹[„¨eŽ²^‡«`‰­\…©@@@@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@@@@Y‚¦r›¿vŸÃužÂ^‡«{¤Èf³qš¾y¢Æ[„¨_ˆ¬užÂp™½j“·j“·@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@tÁr›¿x¡Å_ˆ¬o˜¼sœÀcŒ°m–ºg´užÂf³h‘µr›¿[„¨sœÀz£Ç@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@Zƒ§r›¿x¡Åm–ºtÁg´X¥l•¹b‹¯i’¶y¢Æo˜¼x¡Å[„¨n—»_ˆ¬@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@y¢Æy¢ÆX¥Zƒ§užÂg´užÂw ÄtÁ`‰­x¡ÅZƒ§n—»tÁx¡Åd±@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@b‹¯x¡Åj“·b‹¯sœÀ]†ªtÁtÁo˜¼w Äw Än—»{¤ÈX¥sœÀužÂ@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@eŽ²y¢Æi’¶Zƒ§]†ªm–ºY‚¦y¢Æx¡Å\…©Y‚¦y¢ÆaŠ®k”¸y¢Æd±@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@r›¿W€¤qš¾f³eŽ²m–ºp™½k”¸qš¾w ÄaŠ®m–ºqš¾y¢Æ]†ªvŸÃ@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@užÂg´m–ºW€¤p™½l•¹sœÀk”¸_ˆ¬vŸÃ\…©k”¸eŽ²x¡Å^‡«^‡«k”¸\…©tÁr›¿x¡Å_ˆ¬o˜¼sœÀcŒ°m–º{¤Èm–ºp™½r›¿h‘µm–ºcŒ°aŠ®cŒ°Zƒ§l•¹W€¤cŒ°cŒ°i’¶d±užÂvŸÃ^‡«`‰­k”¸y¢Æw Ä[„¨p™½d±z£ÇZƒ§z£Ç\…©m–ºY‚¦o˜¼w Äb‹¯cŒ°d±vŸÃw Än—»Y‚¦l•¹p™½_ˆ¬[„¨g´sœÀb‹¯tÁ[„¨j“·r›¿[„¨r›¿y¢Ær›¿vŸÃsœÀeŽ²i’¶vŸÃx¡ÅX¥\…©qš¾]†ª[„¨i’¶r›¿g´k”¸sœÀqš¾qš¾Y‚¦{¤Èk”¸w Äb‹¯_ˆ¬`‰­X¥cŒ°h‘µh‘µl•¹i’¶ vŸÃBAADCDDEEFFFFFFEEECDDAAA^‡« cŒ°g´h‘µW€¤W€¤qš¾l•¹r›¿g´k”¸\…©cŒ°W€¤X¥z£Çg´p™½ HGHJKKMMMOOONNOMMMKJJGHH p™½l•¹x¡Åx¡Å^‡«[„¨d±qš¾m–º_ˆ¬aŠ®n—»j“·cŒ°cŒ° @@@@@@ STSWWVYYYYYXWVWTSS @@@@@@ i’¶X¥X¥vŸÃeŽ²w Ä\…©y¢Æ]†ª{¤ÈvŸÃg´qš¾ @@@```@@@@@@ ^^^bbbdeeedeabb^^] @@@@@@```@@@ b‹¯b‹¯x¡ÅeŽ²cŒ°tÁtÁ_ˆ¬{¤Èr›¿W€¤i’¶ @@@@@@```@@@ mmnqpqqqqmmn @@@```@@@@@@ o˜¼o˜¼Y‚¦d±m–º{¤Èw ÄužÂo˜¼X¥\…©{¤È^‡« @@@@@@@@@@@@ yyz}}}}}}zyz @@@@@@@@@@@@ vŸÃužÂužÂY‚¦j“·sœÀi’¶r›¿o˜¼k”¸[„¨p™½aŠ®AABHHH @@@@@@ Š‰‰‰Š‰ @@@@@@ HHGAAAsœÀsœÀh‘µy¢Æx¡Åz£Çg´vŸÃf³f³w Äm–ºDCCKJKSTT^^^ •••••• ^^^STTJKKCDDi’¶i’¶d±_ˆ¬l•¹[„¨užÂvŸÃ^‡«p™½x¡Åw ÄEEEMMMVVVbbammmyyz yyynnnbbbWWWMMMEEEaŠ®aŠ®eŽ²X¥`‰­l•¹l•¹j“·r›¿r›¿k”¸r›¿FFFOOOYYYdedqpp}}}Š‰Š•”• •••ŠŠ‰}}~qqpeddYYYONNFFFtÁtÁh‘µužÂd±eŽ²f³qš¾[„¨n—»W€¤užÂFFFNOOYYYdeeqqp~}}ŠŠ‰••• •”•‰Š‰}}}qpqeddXXYNOOFFFk”¸j“·]†ªm–º`‰­sœÀ`‰­l•¹b‹¯y¢ÆsœÀl•¹EDEMMMVWVbabmmmzzy yzznnmbbbWWWMMMEEEl•¹k”¸_ˆ¬_ˆ¬g´z£Ç]†ªk”¸`‰­i’¶vŸÃg´CCCJJKTTS^]^ ”•”••• ^^^SSSKKJDDCW€¤l•¹Y‚¦tÁi’¶qš¾W€¤\…©f³eŽ²užÂf³ABAGGG @@@@@@ ‰‰ŠŠ‰‰ @@@@@@ GHHAABf³W€¤o˜¼b‹¯h‘µ]†ªy¢ÆcŒ°\…©eŽ²`‰­y¢ÆvŸÃ @@@@@@@@@@@@ zyz}}}}}}yyy @@@@@@@@@@@@ ^‡«m–ºf³w ÄužÂz£Çx¡Åj“·f³g´y¢Æqš¾vŸÃ @@@@@@```@@@ nmmqqqqqqnmn @@@```@@@@@@ b‹¯m–ºj“·n—»p™½i’¶d±m–º{¤ÈaŠ®k”¸r›¿ @@@```@@@@@@ ^]^abbdeedddbbb^^^ @@@@@@```@@@ o˜¼b‹¯Y‚¦p™½[„¨^‡«]†ªeŽ²aŠ®i’¶Zƒ§y¢Æi’¶ @@@@@@ TTSVWVYYYYXYVWWTSS @@@@@@ cŒ°n—»o˜¼aŠ®j“·k”¸Y‚¦r›¿[„¨vŸÃw Ä[„¨r›¿l•¹p™½ HHGJJKMMMNNOONNMMMJKKGHG p™½g´m–ºn—»qš¾vŸÃf³h‘µZƒ§\…©sœÀaŠ®f³eŽ²h‘µg´@@@ @@@ABBCCCEEEFFFFFFEEECCCBBA@@@ @@@l•¹h‘µo˜¼m–ºr›¿`‰­{¤ÈsœÀvŸÃX¥W€¤\…©aŠ®[„¨sœÀi’¶@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Y‚¦{¤Èi’¶o˜¼z£ÇW€¤o˜¼b‹¯vŸÃtÁp™½^‡«aŠ®[„¨sœÀi’¶@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Y‚¦{¤Èi’¶r›¿k”¸Y‚¦o˜¼y¢Æk”¸\…©aŠ®^‡«b‹¯vŸÃužÂ`‰­@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@eŽ²i’¶b‹¯sœÀ^‡«^‡«l•¹cŒ°p™½k”¸w Äqš¾eŽ²Zƒ§_ˆ¬X¥@@@@@@@@@@@@@@@@@@@@@°µ°°µ°@@@@@@@@@@@@@@@@@@@@@qš¾cŒ°z£Çj“·W€¤qš¾f³^‡«b‹¯h‘µ]†ª\…©W€¤eŽ²m–ºd±@@@@@@@@@@@@• ¥  ¥ °µ°°µ° ¥  ¥ •@@@@@@@@@@@@l•¹j“·\…©m–ºužÂf³vŸÃj“·l•¹f³p™½j“·n—»užÂk”¸{¤È@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@r›¿f³vŸÃ_ˆ¬^‡«aŠ®vŸÃl•¹_ˆ¬{¤Èr›¿W€¤i’¶n—»_ˆ¬f³@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@m–º]†ªo˜¼Y‚¦d±m–º{¤ÈaŠ®p™½X¥f³r›¿x¡Ån—»w Äd±@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@qš¾vŸÃcŒ°`‰­p™½o˜¼]†ª[„¨^‡«]†ªm–º^‡«qš¾užÂ^‡«k”¸@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@l•¹]†ªcŒ°aŠ®o˜¼p™½\…©g´_ˆ¬vŸÃ\…©k”¸eŽ²užÂ^‡«k”¸@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@l•¹]†ªcŒ°aŠ®l•¹W€¤cŒ°cŒ°^‡«cŒ°{¤ÈcŒ°aŠ®x¡Å^‡«k”¸@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@l•¹aŠ®cŒ°Zƒ§z£Çn—»w ÄeŽ²^‡«k”¸užÂ]†ª{¤È]†ªj“·b‹¯@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@]†ªh‘µf³m–ºsœÀm–ºh‘µužÂ]†ªg´{¤Èj“·užÂx¡Åj“·X¥@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@\…©W€¤g´]†ªl•¹_ˆ¬k”¸užÂaŠ®vŸÃY‚¦užÂm–º\…©eŽ²f³@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@d±Zƒ§eŽ²^‡«h‘µsœÀY‚¦]†ª`‰­z£Ç[„¨sœÀd±j“·p™½w Ä@@@@@@@@@@@@• ¥  ¥ °µ°°µ° ¥  ¥ •@@@@@@@@@@@@{¤ÈY‚¦b‹¯d±vŸÃl•¹W€¤x¡Ån—»g´r›¿\…©eŽ²Zƒ§eŽ²^‡«@@@@@@@@@@@@@@@@@@@@@°µ°°µ°@@@@@@@@@@@@@@@@@@@@@tÁj“·Zƒ§vŸÃr›¿\…©g´cŒ°r›¿p™½w Äp™½`‰­z£Ç]†ªj“·@@@@@@@@@@@@@@@@@@@@@@@@@@@===@@@@@@@@@@@@@@@@@@qš¾\…©g´\…©\…©p™½w Äk”¸sœÀužÂx¡Åh‘µh‘µqš¾b‹¯\…©@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@o˜¼k”¸qš¾j“·p™½Zƒ§eŽ²tÁaŠ®l•¹b‹¯r›¿f³j“·aŠ®r›¿@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@aŠ®h‘µZƒ§sœÀz£Ç_ˆ¬užÂg´]†ªj“·p™½[„¨y¢ÆeŽ²h‘µg´AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg´h‘µz£Ç]†ª[„¨^‡«_ˆ¬aŠ®{¤Èd±r›¿{¤È`‰­r›¿l•¹p™½AAAAAAAAAAAACCCFFFHGGIHHIHHHGGFFFCCCAAAAAAAAAAAAp™½l•¹d±^‡«g´x¡ÅY‚¦m–ºZƒ§p™½vŸÃ]†ªg´y¢Æi’¶^‡«AAAAAACBCHHHLLMPPPSSRSSTSSTSSRPPPLLMHHHCBCAAAAAA^‡«i’¶vŸÃužÂ\…©_ˆ¬h‘µg´k”¸l•¹užÂh‘µy¢Ær›¿]†ª`‰­AAADDDJJJQQQXWW\]]```aaaaaa```\]]XWWQQQJJJDDDAAA`‰­]†ªz£Çn—»sœÀ`‰­_ˆ¬k”¸Y‚¦tÁj“·cŒ°tÁvŸÃh‘µAAABBCJJJRSS\[[ddcjjkooopqppqpooojjkddc\[[RSSJJJBBCAAAh‘µ_ˆ¬r›¿l•¹W€¤aŠ®k”¸^‡«eŽ²x¡Åh‘µW€¤y¢Æp•µAAAGHHQQQ[\\ffgqppyyy~~~€€€€~~~yyyqppffg[\\QQQGHHAAAp•µh‘µg´Zƒ§m–ºj“·^‡«g´qš¾cŒ°z£Çj“·f³AAACCDLLMXWWdddppp|||†††ŒŒ†††|||pppdddXWWLLMCCDAAAh‘µ^‡«f³Zƒ§aŠ®k”¸cŒ°{¤Èqš¾{¤Èy¢Æg´AAAFFEPPP]]\jjjxxx†††‘‘‘š™šš™š‘‘‘†††xxxjjj]]\PPPFFEAAA]†ªeŽ²{¤Èi’¶aŠ®W€¤cŒ°p™½qš¾tÁ^‡«l•¹AAAHHGSRR```ono}~~Œšš™¤£¤¨¨¨¨¨¨¤£¤šš™Œ}~~ono```SRRHHGAAAx¡Åk”¸f³\…©tÁz£Ç[„¨^‡«g´Zƒ§\…©užÂ@@@IIHTSSbaappp€€œ¨§¨°°°°°°¨§¨œ€€pppbaaTSSIIH@@@aŠ®m–ºb‹¯r›¿m–ºr›¿p™½Y‚¦qš¾h‘µaŠ®r›¿@@@IIHTSSbaappp€€œ¨§¨°°°°°°¨§¨œ€€pppbaaTSSIIH@@@W€¤Zƒ§h‘µl•¹X¥^‡«sœÀsœÀeŽ²cŒ°užÂw ÄAAAHHGSRR```ono}~~Œšš™¤£¤¨¨¨¨¨¨¤£¤šš™Œ}~~ono```SRRHHGAAAY‚¦aŠ®{¤Èh‘µw ÄZƒ§n—»qš¾aŠ®{¤Èqš¾m–ºAAAFFEPPP]]\jjjxxx†††‘‘‘š™šš™š‘‘‘†††xxxjjj]]\PPPFFEAAAi’¶qš¾`‰­y¢Æb‹¯užÂl•¹m–ºX¥p™½[„¨aŠ®AAACCDLLMXWWdddppp|||†††ŒŒ†††|||pppdddXWWLLMCCDAAA{¤È^‡«W€¤j“·vŸÃZƒ§h‘µ`‰­X¥f³^‡«{¤Èp•µAAAGHHQQQ[\\ffgqppyyy~~~€€€€~~~yyyqppffg[\\QQQGHHAAAp•µ_ˆ¬l•¹W€¤X¥z£Çg´sœÀ{¤È]†ª_ˆ¬`‰­i’¶h‘µAAABBCJJJRSS\[[ddcjjkooopqppqpooojjkddc\[[RSSJJJBBCAAAh‘µ^‡«cŒ°X¥^‡«n—»j“·[„¨eŽ²^‡«x¡Ål•¹qš¾]†ª`‰­AAADDDJJJQQQXWW\]]```aaaaaa```\]]XWWQQQJJJDDDAAA`‰­]†ªi’¶eŽ²o˜¼eŽ²`‰­{¤Èo˜¼f³p™½d±X¥cŒ°i’¶^‡«l•¹AAACBCHHHLLMPPPSSRSSTSSTSSRPPPLLMHHHCBCAAAl•¹^‡«i’¶W€¤\…©l•¹tÁX¥o˜¼_ˆ¬{¤Èd±^‡«\…©z£Çl•¹p™½]†ª^‡«AAAAAACCCFFFHGGIHHIHHHGGFFFCCCAAAAAA^‡«]†ªp™½l•¹m–ºY‚¦]†ªx¡ÅvŸÃqš¾užÂg´^‡«x¡Åy¢Æh‘µh‘µg´cŒ°]†ª]†ª[ŸAAAAAAAAA@@@@@@AAAAAAAAA[Ÿ]†ª]†ªcŒ°g´h‘µ_ˆ¬`‰­l•¹y¢Æx¡Åf³^‡«h‘µf³b‹¯Y‚¦p™½[„¨^‡«eŽ²f³sœÀZƒ§d±d±x¡ÅZƒ§_ˆ¬l•¹]†ªn—»k”¸aŠ®\…©]†ªX¥]†ª]†ªi’¶j“·p™½d±g´tÁY‚¦vŸÃz£Çx¡ÅtÁm–º_ˆ¬aŠ®n—»j“·cŒ°cŒ°vŸÃ[„¨eŽ²o˜¼j“·r›¿Zƒ§eŽ²[„¨eŽ²b‹¯g´tÁW€¤aŠ®h‘µb‹¯Y‚¦cŒ°{¤ÈX¥y¢Æd±qš¾užÂg´l•¹f³tÁm–ºY‚¦d±]†ª`‰­g´Zƒ§k”¸r›¿{¤Èl•¹d±w ÄW€¤eŽ²r›¿h‘µg´r›¿z£Çm–ºk”¸h‘µw Äz£ÇužÂi’¶sœÀ`‰­eŽ²d±aŠ®\…©aŠ®^‡«^‡«qš¾[„¨y¢ÆY‚¦vŸÃm–ºqš¾^‡«\…©w Äp™½z£Çk”¸tÁsœÀk”¸{¤ÈcŒ°k”¸p™½j“·l•¹X¥eŽ²w Äg´]†ªx¡Åk”¸r›¿j“·eŽ²`‰­{¤ÈaŠ®p™½w ÄW€¤Y‚¦k”¸l•¹\…©l•¹`‰­^‡«y¢Æ\…©W€¤k”¸h‘µb‹¯d±]†ªZƒ§z£Çd±cŒ°h‘µw Äp™½]†ªo˜¼vŸÃeŽ²Zƒ§X¥g´z£Ç_ˆ¬w ÄcŒ°{¤Èh‘µj“·d±Zƒ§y¢ÆeŽ²Zƒ§cŒ°`‰­eŽ²^‡«y¢Æ{¤ÈZƒ§cŒ°p™½^‡«[„¨l•¹užÂsœÀp™½z£Çg´_ˆ¬p™½y¢Æw Ä_ˆ¬eŽ²qš¾tÁ{¤È^‡«eŽ²{¤ÈX¥y¢Æd±qš¾užÂg´Y‚¦g´qš¾f³y¢Æz£ÇužÂZƒ§p™½W€¤z£Çqš¾k”¸eŽ²i’¶vŸÃn—»k”¸r›¿W€¤Y‚¦užÂ_ˆ¬Zƒ§sœÀW€¤p™½n—»{¤Èb‹¯w Äd±{¤Èx¡Åy¢Æ_ˆ¬w Äx¡Åb‹¯\…©W€¤x¡ÅY‚¦i’¶k”¸d±_ˆ¬f³f³`‰­sœÀo˜¼tÁi’¶^‡«]†ªaŠ®{¤Èm–ºY‚¦qš¾m–ºl•¹h‘µx¡Åk”¸r›¿j“·eŽ²`‰­{¤ÈaŠ®p™½w ÄW€¤Y‚¦k”¸l•¹\…©l•¹`‰­^‡«y¢Æ\…©W€¤k”¸h‘µf³tÁqš¾tÁ^‡«X¥užÂvŸÃcŒ°z£Çi’¶užÂk”¸aŠ®vŸÃz£Çr›¿l•¹aŠ®qš¾užÂp™½i’¶qš¾qš¾tÁz£Çf³r›¿i’¶X¥cŒ°sœÀW€¤m–ºz£Ç`‰­y¢ÆaŠ®x¡ÅvŸÃz£Çqš¾h‘µg´užÂi’¶b‹¯^‡«[„¨qš¾{¤ÈtÁr›¿Y‚¦užÂcŒ°eŽ²cŒ°eŽ²W€¤`‰­Y‚¦sœÀw ÄW€¤y¢Æm–ºg´tÁy¢Æz£Çm–º{¤ÈtÁužÂk”¸b‹¯`‰­Y‚¦Y‚¦qš¾W€¤d±eŽ²Zƒ§\…©X¥_ˆ¬f³l•¹tÁ]†ª_ˆ¬aŠ®z£Çp™½x¡Å`‰­tÁn—»k”¸r›¿m–ºw Äm–ºo˜¼{¤ÈcŒ°y¢ÆvŸÃz£Ç{¤ÈcŒ°eŽ²f³vŸÃh‘µ_ˆ¬k”¸p™½aŠ®[„¨sœÀf³užÂ_ˆ¬`‰­n—»sœÀ`‰­sœÀužÂr›¿W€¤d±eŽ²vŸÃl•¹\…©z£Çx¡Åz£Çm–º{¤È`‰­i’¶r›¿vŸÃm–ºužÂaŠ®m–ºcŒ°k”¸f³tÁ^‡«[„¨r›¿sœÀh‘µw ÄW€¤y¢ÆY‚¦r›¿j“·eŽ²qš¾{¤ÈtÁr›¿Y‚¦užÂcŒ°eŽ²cŒ°eŽ²W€¤`‰­Y‚¦sœÀw ÄW€¤y¢Æm–ºg´tÁy¢Æz£Çm–ºZƒ§Zƒ§Zƒ§[„¨x¡Åy¢Æj“·Zƒ§_ˆ¬Zƒ§j“·i’¶[„¨Zƒ§y¢Æh‘µ^‡«l•¹{¤Èj“·\…©Zƒ§tÁZƒ§f³{¤Èn—»\…©o˜¼qš¾x¡Åj“·h‘µi’¶o˜¼x¡Åi’¶f³b‹¯x¡ÅsœÀo˜¼cŒ°eŽ²sœÀW€¤^‡«sœÀ\…©_ˆ¬[„¨j“·qš¾p™½w Ä^‡«^‡«p™½o˜¼z£Çf³]†ªj“·Zƒ§X¥z£ÇvŸÃi’¶]†ªf³užÂd±cŒ°vŸÃi’¶k”¸n—»f³[„¨j“·{¤Èf³d±W€¤b‹¯W€¤Zƒ§\…©z£ÇeŽ²sœÀ`‰­cŒ°vŸÃj“·`‰­_ˆ¬z£Çj“·]†ªeŽ²x¡ÅvŸÃz£ÇeŽ²n—»eŽ²n—»\…©^‡«[„¨qš¾f³j“·b‹¯\…©p™½m–ºj“·k”¸r›¿l•¹aŠ®\…©g´h‘µf³x¡Åp™½_ˆ¬r›¿eŽ²cŒ°k”¸sœÀcŒ°n—»tÁ^‡«[„¨r›¿sœÀh‘µw ÄW€¤y¢ÆY‚¦r›¿j“·eŽ²r›¿g´h‘µx¡Åj“·b‹¯g´b‹¯z£ÇužÂ]†ªaŠ®Y‚¦^‡«p™½aŠ®i’¶`‰­qš¾o˜¼eŽ²qš¾\…©g´b‹¯Zƒ§g´o˜¼b‹¯d±]†ªZƒ§z£Çd±cŒ°h‘µw Äp™½]†ªo˜¼vŸÃeŽ²Zƒ§X¥g´z£Ç_ˆ¬w ÄcŒ°{¤Èh‘µz£Çk”¸j“·o˜¼sœÀ_ˆ¬y¢Æg´w Äz£Çh‘µtÁm–ºp™½l•¹qš¾i’¶p™½m–ºaŠ®tÁ{¤ÈW€¤užÂb‹¯k”¸sœÀsœÀsœÀb‹¯f³j“·k”¸p™½]†ªtÁ{¤ÈtÁ_ˆ¬z£ÇY‚¦`‰­l•¹[„¨qš¾Zƒ§w Ä]†ªd±[„¨j“·Zƒ§vŸÃtÁcŒ°l•¹sœÀg´\…©r›¿f³o˜¼i’¶_ˆ¬užÂvŸÃb‹¯\…©g´eŽ²tÁY‚¦g´aŠ®z£Çm–ºtÁd±f³y¢Æo˜¼`‰­`‰­l•¹z£Ç{¤Èy¢Æ\…©r›¿Y‚¦{¤ÈaŠ®qš¾z£ÇX¥]†ªf³\…©p™½p™½p™½w ÄZƒ§w Äh‘µcŒ°r›¿m–ºvŸÃb‹¯aŠ®z£Çr›¿_ˆ¬k”¸j“·j“·m–ºn—»eŽ²cŒ°i’¶Zƒ§y¢Æx¡ÅtÁw Äl•¹g´o˜¼l•¹aŠ®tÁ\…©\…©h‘µp™½]†ªz£ÇužÂvŸÃb‹¯\…©g´eŽ²tÁY‚¦g´aŠ®z£Çm–ºtÁd±f³y¢Æo˜¼`‰­`‰­l•¹z£Çk”¸w Äp™½k”¸p™½užÂy¢ÆcŒ°z£Çf³n—»qš¾p™½m–ºqš¾{¤È`‰­_ˆ¬p™½^‡«\…©h‘µeŽ²eŽ²Zƒ§p™½d±f³]†ªw ÄsœÀo˜¼cŒ°p™½^‡«[„¨l•¹užÂsœÀp™½z£Çg´_ˆ¬p™½y¢Æw Ä_ˆ¬eŽ²qš¾tÁ{¤È^‡«eŽ²{¤ÈX¥y¢Æd±qš¾užÂg´l•¹f³tÁm–ºvŸÃy¢Æh‘µh‘µ{¤Èk”¸z£Çi’¶užÂk”¸aŠ®vŸÃz£Çr›¿l•¹aŠ®qš¾užÂp™½i’¶qš¾qš¾tÁz£Çf³r›¿i’¶X¥cŒ°sœÀW€¤m–ºZƒ§p™½X¥i’¶_ˆ¬n—»vŸÃaŠ®k”¸cŒ°Y‚¦qš¾y¢Æd±\…©_ˆ¬[„¨z£Çj“·tÁo˜¼w Äm–ºo˜¼{¤ÈcŒ°y¢ÆvŸÃz£Ç{¤ÈcŒ°eŽ²W€¤y¢Æm–ºg´tÁy¢Æz£Çm–ºZƒ§Zƒ§Zƒ§[„¨x¡Åy¢Æj“·Zƒ§_ˆ¬tÁw Äp™½p™½eŽ²b‹¯r›¿l•¹`‰­b‹¯^‡«_ˆ¬i’¶sœÀh‘µm–ºg´_ˆ¬eŽ²{¤ÈX¥užÂvŸÃj“·aŠ®X¥]†ªužÂm–ºg´r›¿eŽ²eŽ²_ˆ¬\…©z£Çn—»Y‚¦f³tÁl•¹n—»qš¾]†ªqš¾X¥j“·h‘µm–ºcŒ°cŒ°x¡Å`‰­g´cŒ°Zƒ§w Äg´sœÀb‹¯h‘µz£ÇW€¤tÁb‹¯d±r›¿aŠ®i’¶o˜¼_ˆ¬[„¨tÁz£ÇcŒ°i’¶Y‚¦d±i’¶m–ºz£Çl•¹`‰­y¢ÆY‚¦vŸÃeŽ²Zƒ§x¡Ål•¹k”¸f³eŽ²tÁ{¤Èf³_ˆ¬eŽ²n—»vŸÃw ÄaŠ®]†ª^‡«x¡Åg´h‘µg´]†ªy¢ÆeŽ²_ˆ¬vŸÃ\…©k”¸eŽ²x¡Å^‡«^‡«k”¸\…©tÁr›¿x¡Å_ˆ¬o˜»sœÀcŒ°m–º{¤Èm–ºp™½r›¿h‘µm–ºcŒ°aŠ®cŒ°Zƒ§l•¹W€¤cŒ°cŒ°i’¶d±užÂvŸÃ^‡«`‰­k”¸y¢Æw Ä[„¨k‘³d±\x<O`Pfz(-2b†¥Y‚¦o˜¼w Äb‹¯cŒ°d±vŸÃw Än—»Y‚¦l•¹p™½_ˆ¬[„¨g´sœÀb‹¯tÁ[„¨j“·r›¿[„¨r›¿y¢Æ^‡«CZm1<E###"%''''4CP\…©qš¾]†ª[„¨i’¶r›¿g´k”¸sœÀqš¾qš¾Y‚¦{¤Èk”¸w Äb‹¯_ˆ¬`‰­X¥cŒ°h‘µh‘µl•¹[„¨j“·(-0 333HHHFFF(((!!!EEECDDAAAn—»W€¤X¥[„¨g´h‘µW€¤W€¤qš¾l•¹r›¿g´k”¸\…©cŒ°W€¤X¥z£Çg´^‡«X¥cŒ°DXjBBB]]]AAA999IIIKJJGHHMMMX¥cŒ°j“·^‡«l•¹x¡Åx¡Å^‡«[„¨d±qš¾m–º_ˆ¬aŠ®n—»j“·cŒ°[„¨j“·W€¤X¥III>>>GGGUUU999(((POPTSSSTSSTSMMMh‘µr›¿`‰­i’¶X¥X¥vŸÃeŽ²w Ä\…©y¢Æ]†ª{¤ÈvŸÃg´qš¾X¥cŒ°n—»MMMSTS'''&&&===GGG***!!!abb^^]^^^STTSTSMMMn—ºW€¤Ps‘[„¨b‹¯x¡ÅeŽ²cŒ°tÁtÁ_ˆ¬{¤Èr›¿W€¤i’¶W€¤X¥MMMSTSSTT^^^///DDD:::///kklmmm^^^^^^STTEEEFFF9L\$&(CWh^‡«Y‚¦d±m–º{¤Èw ÄužÂo˜¼X¥\…©{¤Èn—»MMMSTSSTT^^^^^^AAA!!!777'''222zyzzzymmmVVV^^^)))*** `‰­Y‚¦j“·sœÀi’¶r›¿o˜¼k”¸[„¨p™½aŠ®AABHHHSTT^^^^^^mmmzzy555 ---Š‰‰†……zzy<<<'''(((888GGG777c‡§h‘µy¢Æx¡Åz£Çg´vŸÃf³f³w Äm–ºDCCKJKSTT^^^mmmzzyŠ‰‰rrr))) ]]]•••feeEEE"""555888[[[RRROOONdwd±_ˆ¬l•¹[„¨užÂvŸÃ^‡«p™½x¡Åw ÄEEE@@@VVV\\[mmmyyzŠ‰‰•••kkk ZZZ000333KKK@@@XXX???JJJ%%%%'*eŽ²X¥`‰­l•¹l•¹j“·r›¿r›¿[{—Tn…###(((###9:9'''WWW+++kjk+++ """888%%%333///...).2h‘µužÂd±eŽ²f³qš¾[„¨n—»*29---***999&&&999&&& +++zyz888UUU-,-333***$$$&&&TqŠPj‚]†ªm–º`‰­sœÀ`‰­l•¹b‹¯y¢Æ7BL!!!DDDBBB[[[BBBIII:::%%%ggg''' RRR•••Š‰‰vwwnnmVVVWWW>>>EEEl•¹k”¸_ˆ¬_ˆ¬g´z£Ç]†ªk”¸`‰­i’¶cƒŸFFFYYYWWW>>>222&&&NNNVVV•••vvv !!!```Š‰‰zzymmm^^^SSSKKJDDCW€¤l•¹Y‚¦tÁi’¶qš¾W€¤\…©f³eŽ²užÂ000GGG222---+++444zzy„ƒƒŠ‰‰444zzymmm^^^^^^STSGHHAABf³W€¤o˜¼b‹¯h‘µ]†ªy¢ÆcŒ°\…©eŽ²`‰­%'(((("""$%%ZZZTTTmmmzzyzyzKKK###999$$$777^^^^^^STTSTSMMMn—»m–ºf³w ÄužÂz£Çx¡Åj“·f³g´y¢Æqš¾Zu%'(@Xl@@@BCBSTT^^^^^^mmmnmm333333CCC888[[[STTSTSMMMX¥n—»b‹¯m–ºj“·n—»p™½i’¶d±m–º{¤ÈaŠ®k”¸r›¿gŽ°[„¨@@@MMMSTSSTT^^^^]^abb)))$$$HHH???+++###QRQMMM@@@X¥W€¤o˜¼b‹¯Y‚¦p™½[„¨^‡«]†ªeŽ²aŠ®i’¶Zƒ§y¢Æ`‰­r›¿@@@@@@MMMSTSSTSTTSVWV111666LLLPPPDDD>>>@@@@@@cŒ°X¥n—»o˜¼aŠ®j“·k”¸Y‚¦r›¿[„¨vŸÃw Ä[„¨r›¿^‡«j“·@@@@@@@@@MMMHHGJJKMMM 000>>>ccc@@@$$$5?G@@@@@@j“·[„¨m–ºn—»qš¾vŸÃf³h‘µZƒ§\…©sœÀaŠ®f³eŽ²h‘µ[„¨@@@@@@@@@@@@ABBCCCEEE)))###EEEFFF777!!! !!@@@@@@^‡«h‘µo˜¼m–ºr›¿`‰­{¤ÈsœÀvŸÃX¥W€¤\…©aŠ®[„¨sœÀi’¶@@@@@@@@@@@@@@@@@@@@@555###"""!!!***...@@@@@@Y‚¦{¤Èi’¶o˜¼z£ÇW€¤o˜¼b‹¯vŸÃtÁp™½^‡«aŠ®[„¨sœÀi’¶@@@@@@@@@@@@@@@@@@@@@>>>'''...+++888@@@===@@@@@@Y‚¦{¤Èi’¶r›¿k”¸Y‚¦o˜¼y¢Æk”¸\…©aŠ®^‡«b‹¯vŸÃužÂ`‰­@@@@@@@@@@@@@@@@@@@@@@@@@@@===@@@@@@@@@@@@@@@@@@eŽ²i’¶b‹¯sœÀ^‡«^‡«l•¹cŒ°p™½k”¸w Äqš¾eŽ²Zƒ§_ˆ¬X¥@@@@@@@@@@@@@@@@@@@@@°µ°°µ°@@@@@@@@@@@@@@@@@@@@@qš¾cŒ°z£Çj“·W€¤qš¾f³^‡«b‹¯h‘µ]†ª\…©W€¤eŽ²m–ºd±@@@@@@@@@@@@• ¥  ¥ °µ°°µ° ¥  ¥ •@@@@@@@@@@@@l•¹j“·\…©m–ºužÂf³vŸÃj“·l•¹f³p™½j“·n—»užÂk”¸{¤È@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@r›¿f³vŸÃ_ˆ¬^‡«aŠ®vŸÃl•¹_ˆ¬{¤Èr›¿W€¤i’¶n—»_ˆ¬f³@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@m–º]†ªo˜¼Y‚¦d±m–º{¤ÈaŠ®p™½X¥f³r›¿x¡Ån—»w Äd±@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@qš¾vŸÃcŒ°`‰­p™½o˜¼]†ª[„¨^‡«]†ªm–º^‡«qš¾užÂ^‡«k”¸@@@@@@pup€…€• ¥  ¥ °µ°°µ° ¥  ¥ •€…€pup@@@@@@l•¹]†ªcŒ°aŠ®o˜¼p™½\…©g´`‰­sœÀo˜¼tÁi’¶^‡«]†ªaŠ®{¤Èm–ºY‚¦qš¾m–ºl•¹h‘µk”¸Zƒ§\…©h‘µn—»b‹¯b‹¯y¢ÆY‚¦i’¶]†ªo˜¼tÁx¡Åk”¸`‰­r›¿w ÄužÂW€¤n—»]†ªw Äh‘µd±i’¶o˜¼n—»aŠ®n—»y¢Æy¢Æx¡Åf³užÂl•¹]†ªY‚¦p™½_ˆ¬k”¸p™½j“·l•¹X¥eŽ²w Äg´]†ªp™½cŒ°W€¤i’¶d±f³n—»W€¤y¢Æb‹¯Zƒ§n—»r›¿X¥tÁg´{¤Èb‹¯\…©l•¹r›¿\…©b‹¯\…©w ÄZƒ§m–ºo˜¼tÁo˜¼^‡«w ÄcŒ°w Ä{¤Èi’¶Zƒ§o˜¼z£ÇcŒ°qš¾h‘µd±tÁk”¸`‰­d±w Äg´y¢Æ{¤Èw Äo˜¼l•¹z£ÇY‚¦tÁo˜¼W€¤n—»vŸÃX¥z£ÇvŸÃužÂqš¾y¢Æ_ˆ¬j“·W€¤k”¸Y‚¦m–ºvŸÃj“·d±n—»eŽ²W€¤qš¾n—»x¡Åqš¾d±p™½cŒ°W€¤i’¶d±f³n—»W€¤y¢Æb‹¯Zƒ§n—»Zƒ§tÁ^‡«W€¤h‘µ^‡«k”¸n—»l•¹]†ª{¤Èl•¹z£ÇtÁy¢ÆcŒ°{¤È`‰­`‰­j“·g´j“·`‰­k”¸vŸÃ[„¨Y‚¦x¡Åb‹¯h‘µX¥qš¾_ˆ¬cŒ°_ˆ¬f³sœÀužÂj“·^‡«[„¨]†ªo˜¼y¢Æf³i’¶r›¿_ˆ¬qš¾Y‚¦l•¹p™½tÁvŸÃh‘µn—»{¤Èx¡Åg´y¢Æm–ºX¥W€¤cŒ°k”¸Y‚¦eŽ²y¢Æd±cŒ°Y‚¦qš¾]†ªg´]†ªZƒ§i’¶b‹¯qš¾Y‚¦cŒ°k”¸Zƒ§^‡«l•¹sœÀz£Çm–ºcŒ°j“·`‰­\…©y¢Æ^‡«o˜¼X¥y¢Æ^‡«_ˆ¬h‘µy¢Æi’¶o˜¼eŽ²\…©l•¹^‡«sœÀh‘µsœÀaŠ®sœÀeŽ²b‹¯m–ºd±n—»Y‚¦n—»o˜¼`‰­i’¶cŒ°\…©w ÄužÂW€¤n—»z£Çr›¿_ˆ¬k”¸j“·j“·m–ºn—»eŽ²cŒ°i’¶Zƒ§y¢Æx¡ÅtÁw Äl•¹d±]†ª`‰­W€¤]†ª`‰­d±eŽ²w Äi’¶o˜¼]†ªcŒ°Y‚¦aŠ®Y‚¦X¥l•¹m–º^‡«užÂk”¸sœÀg´g´h‘µ[„¨f³i’¶l•¹w Ä{¤ÈaŠ®eŽ²h‘µz£Çx¡ÅcŒ°f³sœÀX¥užÂqš¾y¢Æ_ˆ¬j“·W€¤aŠ®m–ºcŒ°k”¸f³tÁ^‡«[„¨r›¿sœÀh‘µw ÄW€¤y¢ÆY‚¦r›¿j“·eŽ²r›¿g´h‘µx¡Åj“·b‹¯g´b‹¯z£ÇužÂ]†ªaŠ®Y‚¦^‡«]†ªb‹¯l•¹{¤ÈX¥\…©vŸÃp™½p™½_ˆ¬`‰­X¥k”¸tÁz£Ço˜¼vŸÃm–ºg´_ˆ¬z£Çh‘µqš¾g´n—»k”¸Y‚¦^‡«o˜¼^‡«Y‚¦sœÀl•¹sœÀk”¸\…©i’¶_ˆ¬z£Çj“·vŸÃw Äm–ºw ÄvŸÃw Ä\…©[„¨W€¤eŽ²sœÀX¥užÂZƒ§d±qš¾w ÄW€¤z£ÇW€¤k”¸f³`‰­z£ÇW€¤j“·g´d±h‘µtÁužÂg´Zƒ§užÂk”¸i’¶d±h‘µr›¿{¤Èx¡Åh‘µaŠ®_ˆ¬k”¸y¢Æ]†ªn—»tÁcŒ°aŠ®eŽ²n—»Y‚¦qš¾{¤È`‰­i’¶[„¨qš¾aŠ®r›¿d±Zƒ§o˜¼qš¾n—»tÁZƒ§n—»f³f³tÁw ÄY‚¦užÂz£ÇaŠ®x¡Åf³h‘µh‘µg´]†ªk”¸h‘µtÁh‘µ_ˆ¬W€¤b‹¯h‘µh‘µY‚¦cŒ°d±i’¶^‡«]†ªn—»o˜¼p™½z£Ç`‰­Y‚¦z£ÇsœÀl•¹vŸÃb‹¯n—»X¥l•¹sœÀW€¤k”¸sœÀZƒ§z£Çb‹¯n—»W€¤eŽ²r›¿tÁ]†ªZƒ§z£Çqš¾h‘µg´užÂi’¶b‹¯^‡«[„¨qš¾{¤ÈtÁr›¿Y‚¦užÂcŒ°eŽ²cŒ°eŽ²W€¤`‰­Y‚¦sœÀw ÄW€¤y¢Æi’¶[„¨^‡«vŸÃ\…©W€¤Y‚¦i’¶Zƒ§]†ªužÂqš¾aŠ®p™½b‹¯X¥m–ºužÂZƒ§{¤ÈtÁn—»d±cŒ°j“·[„¨vŸÃx¡ÅaŠ®r›¿r›¿W€¤o˜¼w Äk”¸užÂeŽ²r›¿[„¨tÁ]†ªZƒ§r›¿z£Çi’¶z£Ço˜¼`‰­[„¨d±b‹¯p™½l•¹j“·]†ª]†ªx¡Åx¡Åp™½vŸÃo˜¼`‰­n—»užÂb‹¯k”¸sœÀsœÀsœÀb‹¯f³j“·f³aŠ®g´i’¶r›¿b‹¯tÁj“·b‹¯z£ÇW€¤vŸÃg´cŒ°sœÀ^‡«cŒ°Y‚¦m–ºeŽ²]†ªeŽ²z£Çm–ºY‚¦užÂW€¤Y‚¦Y‚¦b‹¯b‹¯n—»Zƒ§cŒ°sœÀx¡ÅtÁz£Çj“·\…©_ˆ¬Y‚¦n—»n—»m–ºvŸÃy¢Æh‘µh‘µ{¤Èk”¸z£Çi’¶užÂk”¸[„¨Y‚¦x¡Åb‹¯h‘µX¥qš¾m–ºd±\…©[„¨\…©x¡ÅtÁZƒ§vŸÃk”¸sœÀf³m–º[„¨r›¿^‡«eŽ²Zƒ§f³x¡Åb‹¯[„¨z£Çh‘µo˜¼i’¶w Äi’¶vŸÃn—»cŒ°p™½X¥W€¤cŒ°k”¸Y‚¦eŽ²y¢Æd±cŒ°Y‚¦qš¾]†ªg´]†ªZƒ§i’¶b‹¯qš¾Y‚¦cŒ°k”¸Zƒ§^‡«l•¹sœÀd±x¡Å^‡«y¢Æ{¤ÈZƒ§cŒ°p™½^‡«[„¨l•¹užÂsœÀp™½z£Çg´_ˆ¬p™½y¢Æw Ä_ˆ¬eŽ²qš¾tÁ{¤È^‡«eŽ²{¤ÈX¥y¢Æd±qš¾`‰­\…©Y‚¦b‹¯g´W€¤p™½g´X¥b‹¯užÂd±]†ªY‚¦^‡«m–ºužÂaŠ®užÂf³o˜¼W€¤Zƒ§j“·i’¶[„¨Zƒ§y¢Æh‘µ^‡«l•¹{¤È`‰­eŽ²j“·_ˆ¬^‡«x¡Å[„¨užÂn—»w Ä]†ªr›¿Zƒ§`‰­z£ÇvŸÃj“·`‰­z£Çd±tÁ]†ªd±x¡ÅZƒ§g´j“·qš¾`‰­_ˆ¬i’¶r›¿x¡Åk”¸r›¿j“·eŽ²`‰­{¤ÈaŠ®p™½w ÄW€¤Y‚¦k”¸l•¹\…©l•¹`‰­^‡«y¢Æ\…©W€¤k”¸h‘µf³tÁqš¾tÁ^‡«X¥užÂvŸÃcŒ°x¡Åw Äh‘µW€¤x¡Åo˜¼p™½{¤È\…©tÁvŸÃl•¹\…©z£Çx¡Åz£Çm–º{¤È`‰­i’¶r›¿vŸÃm–ºužÂaŠ®m–ºcŒ°k”¸f³tÁ^‡«[„¨tÁn—»z£ÇY‚¦qš¾g´{¤ÈaŠ®[„¨užÂX¥Zƒ§g´]†ªužÂcŒ°Y‚¦g´f³k”¸i’¶f³b‹¯b‹¯{¤È{¤Èi’¶i’¶p™½n—»`‰­X¥i’¶b‹¯\…©n—»{¤Èb‹¯w ÄaŠ®cŒ°n—»m–º[„¨j“·užÂm–ºW€¤x¡Åx¡Åy¢Æd±o˜¼tÁb‹¯j“·h‘µy¢ÆužÂ]†ªn—»x¡ÅtÁy¢Æh‘µw Äz£ÇužÂi’¶sœÀ`‰­eŽ²d±aŠ®\…©aŠ®^‡«^‡«qš¾[„¨y¢ÆY‚¦vŸÃm–ºqš¾^‡«\…©w Äp™½z£Çk”¸tÁsœÀk”¸{¤ÈcŒ°k”¸p™½j“·l•¹X¥eŽ²w Äg´]†ªx¡Åk”¸r›¿j“·eŽ²`‰­{¤ÈaŠ®p™½w ÄW€¤Y‚¦k”¸l•¹\…©l•¹`‰­^‡«y¢Æ\…©W€¤k”¸h‘µb‹¯d±]†ªZƒ§z£Çd±cŒ°h‘µw Äp™½]†ªo˜¼vŸÃeŽ²Zƒ§X¥g´z£Ç_ˆ¬w ÄcŒ°{¤Èh‘µj“·d±Zƒ§y¢ÆeŽ²Zƒ§cŒ°`‰­eŽ²^‡«y¢Æ{¤ÈZƒ§cŒ°p™½^‡«[„¨l•¹užÂsœÀp™½z£Çg´_ˆ¬p™½y¢Æw Ä_ˆ¬eŽ²qš¾tÁ{¤È^‡«eŽ²{¤ÈX¥y¢Æd±qš¾užÂg´Y‚¦g´qš¾f³y¢Æz£ÇužÂZƒ§p™½W€¤z£Çqš¾k”¸eŽ²i’¶vŸÃn—»k”¸r›¿W€¤Y‚¦užÂ_ˆ¬Zƒ§sœÀW€¤p™½n—»{¤Èb‹¯w Äd±{¤Èx¡Åy¢Æ_ˆ¬w Äx¡Åb‹¯\…©W€¤x¡ÅY‚¦i’¶k”¸d±_ˆ¬f³f³`‰­sœÀo˜¼tÁi’¶^‡«]†ªaŠ®{¤Èm–ºY‚¦qš¾m–ºl•¹h‘µx¡Åk”¸r›¿j“·eŽ²`‰­{¤ÈaŠ®p™½w ÄW€¤Y‚¦k”¸l•¹\…©l•¹`‰­^‡«y¢Æ\…©W€¤k”¸h‘µf³tÁqš¾tÁ^‡«X¥užÂvŸÃcŒ°z£Çi’¶užÂk”¸aŠ®vŸÃz£Çr›¿l•¹aŠ®qš¾užÂp™½i’¶qš¾qš¾tÁz£Çf³r›¿i’¶X¥cŒ°sœÀW€¤m–ºz£Ç`‰­y¢ÆaŠ®x¡ÅvŸÃz£Çqš¾h‘µg´užÂi’¶b‹¯^‡«[„¨qš¾{¤ÈtÁr›¿Y‚¦užÂcŒ°eŽ²cŒ°eŽ²W€¤`‰­Y‚¦sœÀw ÄW€¤y¢Æm–ºg´tÁy¢Æz£Çm–º{¤ÈtÁužÂk”¸b‹¯`‰­Y‚¦Y‚¦qš¾W€¤d±eŽ²Zƒ§\…©X¥_ˆ¬f³l•¹tÁ]†ª_ˆ¬aŠ®z£Çp™½x¡Å`‰­tÁn—»k”¸r›¿m–ºw Äm–ºo˜¼{¤ÈcŒ°y¢ÆvŸÃz£Ç{¤ÈcŒ°eŽ²f³vŸÃh‘µ_ˆ¬k”¸p™½aŠ®[„¨sœÀf³užÂ_ˆ¬`‰­n—»sœÀ`‰­sœÀužÂr›¿W€¤d±eŽ²vŸÃl•¹\…©z£Çx¡Åz£Çm–º{¤È`‰­i’¶r›¿vŸÃm–ºužÂaŠ®m–ºcŒ°k”¸f³tÁ^‡«[„¨r›¿sœÀh‘µw ÄW€¤y¢ÆY‚¦r›¿j“·eŽ²qš¾{¤ÈtÁr›¿Y‚¦užÂcŒ°eŽ²cŒ°eŽ²W€¤`‰­Y‚¦sœÀw ÄW€¤y¢Æm–ºg´tÁy¢Æz£Çm–ºZƒ§Zƒ§Zƒ§[„¨x¡Åy¢Æj“·Zƒ§_ˆ¬Zƒ§j“·i’¶[„¨Zƒ§y¢Æh‘µ^‡«l•¹{¤Èj“·\…©Zƒ§tÁZƒ§f³{¤Èn—»\…©o˜¼qš¾x¡Åj“·h‘µi’¶o˜¼x¡Åi’¶f³b‹¯x¡ÅsœÀo˜¼cŒ°eŽ²sœÀW€¤^‡«sœÀ\…©_ˆ¬[„¨j“·qš¾p™½w Ä^‡«^‡«p™½o˜¼z£Çf³]†ªj“·Zƒ§X¥z£ÇvŸÃi’¶]†ªf³užÂd±cŒ°vŸÃi’¶k”¸n—»f³[„¨j“·{¤Èf³d±W€¤b‹¯W€¤Zƒ§\…©z£ÇeŽ²sœÀ`‰­cŒ°vŸÃj“·`‰­_ˆ¬z£Çj“·]†ªeŽ²x¡ÅvŸÃz£ÇeŽ²n—»eŽ²n—»\…©^‡«[„¨qš¾f³j“·b‹¯\…©p™½m–ºj“·k”¸r›¿l•¹aŠ®\…©g´h‘µf³x¡Åp™½_ˆ¬r›¿eŽ²cŒ°k”¸sœÀcŒ°n—»tÁ^‡«[„¨r›¿sœÀh‘µw ÄW€¤y¢ÆY‚¦r›¿j“·eŽ²r›¿g´h‘µx¡Åj“·b‹¯g´b‹¯z£ÇužÂ]†ªaŠ®Y‚¦^‡«p™½aŠ®i’¶`‰­qš¾o˜¼eŽ²qš¾\…©g´b‹¯Zƒ§g´o˜¼b‹¯d±]†ªZƒ§z£Çd±cŒ°h‘µw Äp™½]†ªo˜¼vŸÃeŽ²Zƒ§X¥g´z£Ç_ˆ¬w ÄcŒ°{¤Èh‘µz£Çk”¸j“·o˜¼sœÀ_ˆ¬y¢Æg´w Äz£Çh‘µtÁm–ºp™½l•¹qš¾i’¶p™½m–ºaŠ®tÁ{¤ÈW€¤užÂb‹¯k”¸sœÀsœÀsœÀb‹¯f³j“·k”¸p™½]†ªtÁ{¤ÈtÁ_ˆ¬z£ÇY‚¦`‰­l•¹[„¨qš¾Zƒ§w Ä]†ªd±[„¨j“·Zƒ§vŸÃtÁcŒ°l•¹sœÀg´\…©r›¿f³o˜¼i’¶_ˆ¬užÂvŸÃb‹¯\…©g´eŽ²tÁY‚¦g´aŠ®z£Çm–ºtÁd±f³y¢Æo˜¼`‰­`‰­l•¹z£Ç{¤Èy¢Æ\…©r›¿Y‚¦{¤ÈaŠ®qš¾z£ÇX¥]†ªf³\…©p™½p™½p™½w ÄZƒ§w Äh‘µcŒ°r›¿m–ºvŸÃb‹¯aŠ®z£Çr›¿_ˆ¬k”¸j“·j“·m–ºn—»eŽ²cŒ°i’¶Zƒ§y¢Æx¡ÅtÁw Äl•¹g´o˜¼l•¹aŠ®tÁ\…©\…©h‘µp™½]†ªz£ÇužÂvŸÃb‹¯\…©g´eŽ²tÁY‚¦g´aŠ®z£Çm–ºtÁd±f³y¢Æo˜¼`‰­`‰­l•¹z£Çk”¸w Äp™½k”¸p™½užÂy¢ÆcŒ°z£Çf³n—»qš¾p™½m–ºqš¾{¤È`‰­_ˆ¬p™½^‡«\…©h‘µeŽ²eŽ²Zƒ§p™½d±f³]†ªw ÄsœÀo˜¼cŒ°p™½^‡«[„¨l•¹užÂsœÀp™½z£Çg´_ˆ¬p™½y¢Æw Ä_ˆ¬eŽ²qš¾tÁ{¤È^‡«eŽ²{¤ÈX¥y¢Æd±qš¾užÂg´l•¹f³tÁm–ºvŸÃy¢Æh‘µh‘µ{¤Èk”¸z£Çi’¶užÂk”¸aŠ®vŸÃz£Çr›¿l•¹aŠ®qš¾užÂp™½i’¶qš¾qš¾tÁz£Çf³r›¿i’¶X¥cŒ°sœÀW€¤m–ºZƒ§p™½X¥i’¶_ˆ¬n—»vŸÃaŠ®k”¸cŒ°Y‚¦qš¾y¢Æd±\…©_ˆ¬[„¨z£Çj“·tÁo˜¼w Äm–ºo˜¼{¤ÈcŒ°y¢ÆvŸÃz£Ç{¤ÈcŒ°eŽ²W€¤y¢Æm–ºg´tÁy¢Æz£Çm–ºZƒ§Zƒ§Zƒ§[„¨x¡Åy¢Æj“·Zƒ§_ˆ¬tÁw Äp™½p™½eŽ²b‹¯r›¿l•¹`‰­b‹¯^‡«_ˆ¬i’¶sœÀh‘µm–ºg´_ˆ¬eŽ²{¤ÈX¥užÂvŸÃj“·aŠ®X¥]†ªužÂm–ºg´r›¿eŽ²eŽ²_ˆ¬\…©z£Çn—»Y‚¦f³tÁl•¹n—»qš¾]†ªqš¾X¥j“·h‘µm–ºcŒ°cŒ°x¡Å`‰­g´cŒ°Zƒ§w Äg´sœÀb‹¯h‘µz£ÇW€¤tÁb‹¯d±r›¿aŠ®i’¶o˜¼_ˆ¬[„¨tÁz£ÇcŒ°i’¶Y‚¦d±i’¶m–ºz£Çl•¹`‰­y¢ÆY‚¦vŸÃeŽ²Zƒ§x¡Ål•¹k”¸f³eŽ²tÁ{¤Èf³_ˆ¬eŽ²n—»vŸÃw ÄaŠ®]†ª^‡«x¡Åg´h‘µg´]†ªy¢ÆeŽ²
/programs/games/tetris/trunk/tetris.asm
220,7 → 220,7
jmp still
 
end_program:
mov eax,-1 ; close this program
or eax,-1 ; close this program
int 0x40
 
go_new_game: