From 3a8383042cd1f62907348ae2cd1388a42b832519 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B3=D0=BE=D1=80=D1=8C=20=D0=A4=D0=B5=D0=B4=D0=BE?= =?UTF-8?q?=D1=81=D0=B5=D0=B5=D0=B2?= Date: Wed, 30 Sep 2026 20:12:53 +0300 Subject: [PATCH] feat(2.5d): implement native in-engine Coin, Dice, and Skulls minigames --- build/graphics/casino3d.inc | 1291 ++++++++++++++++++++++++++++++++++- build/graphics/poker.exe | Bin 202752 -> 210432 bytes casino3d.inc | 1291 ++++++++++++++++++++++++++++++++++- poker.exe | Bin 202752 -> 210432 bytes 4 files changed, 2576 insertions(+), 6 deletions(-) diff --git a/build/graphics/casino3d.inc b/build/graphics/casino3d.inc index e3d7728..96f7064 100644 --- a/build/graphics/casino3d.inc +++ b/build/graphics/casino3d.inc @@ -112,6 +112,9 @@ MODE_BLACKJACK equ 2 MODE_ROULETTE equ 3 MODE_SHOP equ 4 MODE_ATM equ 5 +MODE_COIN equ 6 +MODE_DICE equ 7 +MODE_SKULLS equ 8 WS_OVERLAPPEDWINDOW equ 00CF0000h SW_SHOW equ 5 @@ -276,6 +279,75 @@ roulWinningNum dd 0 roulPayout dd 0 roulOutcomeMsg db 64 dup(0) +; --- Native 2.5D Coin Flip Game --- +coin3d_bet dd 50 +coin3d_side dd 1 ; 1 = Îð¸ë, 2 = Ðåøêà +coin3d_state dd 0 ; 0 = Idle, 1 = Flipping, 2 = Result +coin3d_timer dd 0 +coin3d_result dd 1 ; 1 = Îð¸ë, 2 = Ðåøêà +coin3d_streak dd 0 +coin3d_win dd 0 + +coinRxAnimTable db 22, 18, 12, 4, 12, 18, 22, 18, 12, 4 + +textCoinTitle db "ÌÎÍÅÒÊÀ (ÎÐ¨Ë / ÐÅØÊÀ)",0 +textCoinHeads db "ÎШË",0 +textCoinTails db "ÐÅØÊÀ",0 +textCoinStreak db "ÑÅÐÈß: ",0 +textCoinSide1 db "[1] ÎШË",0 +textCoinSide2 db "[2] ÐÅØÊÀ",0 +textCoinFlipping db "ÌÎÍÅÒÀ  ÂÎÇÄÓÕÅ...",0 +textCoinWin db "ÂÛÈÃÐÛØ! +$",0 +textCoinLose db "ÏÐÎÈÃÐÛØ!",0 +textCoinControls1 db "[1/2] ÑÒÎÐÎÍÀ [ÏÐÎÁÅË] ÁÐÎÑÎÊ",0 +textCoinControls2 db "[ÂÂÅÐÕ/ÂÍÈÇ] ÑÒÀÂÊÀ [ESC] ÂÛÕÎÄ",0 + +; --- Native 2.5D Dice Game --- +dice3d_bet dd 50 +dice3d_choice dd 1 ; 1 = ׸ò, 2 = Íå÷åò +dice3d_state dd 0 ; 0 = Idle, 1 = Rolling, 2 = Result +dice3d_timer dd 0 +dice3d_val1 dd 3 +dice3d_val2 dd 4 +dice3d_sum dd 7 +dice3d_win dd 0 + +textDiceTitle db "ÊÎÑÒÈ (CRAPS) - ×¨Ò / ÍÅ×ÅÒ",0 +textDiceEven db "[1] רÒ",0 +textDiceOdd db "[2] ÍÅ×ÅÒ",0 +textDiceTally db "ÊÎÑÒÈ: ",0 +textDicePlus db " + ",0 +textDiceEqual db " = ",0 +textDiceEvenResult db " (רÒ)",0 +textDiceOddResult db " (ÍÅ×ÅÒ)",0 +textDiceRolling db "ÁÐÎÑÎÊ ÊÎÑÒÅÉ...",0 +textDiceWin db "ÂÛÈÃÐÛØ! +$",0 +textDiceLose db "ÏÐÎÈÃÐÛØ!",0 +textDiceControls1 db "[1] ×¨Ò [2] ÍÅ×ÅÒ [ÏÐÎÁÅË] ÁÐÎÑÎÊ",0 +textDiceControls2 db "[ÂÂÅÐÕ/ÂÍÈÇ] ÑÒÀÂÊÀ [ESC] ÂÛÕÎÄ",0 + +; --- Native 2.5D Skulls Game --- +skulls3d_bet dd 50 +skulls3d_state dd 0 ; 0 = Idle, 1 = Show ball, 2 = Shuffle, 3 = Pick, 4 = Reveal +skulls3d_timer dd 0 +skulls3d_ballPos dd 0 ; 0, 1, 2 +skulls3d_choice dd 0 ; 0, 1, 2 +skulls3d_win dd 0 +skulls3d_swapPair0 dd 0 +skulls3d_swapPair1 dd 1 +skulls3d_swapPair2 dd 2 + +textSkullsTitle db "ÍÀϨÐÑÒÊÈ (×ÅÐÅÏÀ È ÊÓÁÊÈ)",0 +textSkullsPhase0 db "ÂÛÁÅÐÈÒÅ ÑÒÀÂÊÓ È ÍÀÆÌÈÒÅ [ÏÐÎÁÅË]",0 +textSkullsPhase1 db "ÇÀÏÎÌÍÈÒÅ, ÃÄÅ ØÀÐÈÊ!",0 +textSkullsPhase2 db "ÊÐÓ×Ó, ÂÅÐ×Ó, ÇÀÏÓÒÀÒÜ ÕÎ×Ó...",0 +textSkullsPhase3 db "ÃÄÅ ØÀÐÈÊ? ÍÀÆÌÈÒÅ [1], [2] ÈËÈ [3]!",0 +textSkullsWin db "ÂÛ ÓÃÀÄÀËÈ! ÄÆÅÊÏÎÒ x3! +$",0 +textSkullsLose db "ÍÅ ÓÃÀÄÀËÈ! ØÀÐÈÊ ÁÛË ÍÅ ÇÄÅÑÜ!",0 +textSkullsAgain db "[ÏÐÎÁÅË] - ÑÛÃÐÀÒÜ ÅÙ¨ ÐÀÇ",0 +textSkullsControls1 db "[1/2/3] ÂÛÁÎÐ ÊÓÁÊÀ [ÏÐÎÁÅË] ÑÒÀÐÒ",0 +textSkullsControls2 db "[ÂÂÅÐÕ/ÂÍÈÇ] ÑÒÀÂÊÀ [ESC] ÂÛÕÎÄ",0 + shopMsg db 128 dup(0) atmMsg db 128 dup(0) @@ -2558,6 +2630,1188 @@ RenderATMGame PROC ret RenderATMGame ENDP +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: COIN FLIP (ÌÎÍÅÒÊÀ) +; ============================================================================== +DrawCoinEllipse PROC uses ebx esi edi cxVal:DWORD, cyVal:DWORD, rxVal:DWORD, ryVal:DWORD, outerColor:DWORD, innerColor:DWORD + local curDY:DWORD, curDX:DWORD, rxSq:DWORD, rySq:DWORD, rxRySq:DWORD, threshSq:DWORD + cmp rxVal, 0 + jle ellipse_done + cmp ryVal, 0 + jle ellipse_done + + mov eax, rxVal + imul eax, eax + mov rxSq, eax + + mov eax, ryVal + imul eax, eax + mov rySq, eax + + mov eax, rxSq + imul eax, rySq + mov rxRySq, eax + + mov eax, rxRySq + shr eax, 2 + imul eax, 3 + mov threshSq, eax + + mov eax, ryVal + neg eax + mov curDY, eax + +ellipse_y_loop: + mov eax, curDY + cmp eax, ryVal + jg ellipse_done + + mov eax, rxVal + neg eax + mov curDX, eax + +ellipse_x_loop: + mov eax, curDX + cmp eax, rxVal + jg next_ellipse_y + + mov eax, curDX + imul eax, eax + imul eax, rySq + mov ebx, curDY + imul ebx, ebx + imul ebx, rxSq + add eax, ebx + cmp eax, rxRySq + jg next_ellipse_x + + mov ecx, innerColor + cmp eax, threshSq + jb @F + mov ecx, outerColor +@@: + mov eax, cxVal + add eax, curDX + mov edx, cyVal + add edx, curDY + invoke DrawPixel, eax, edx, ecx + +next_ellipse_x: + inc curDX + jmp ellipse_x_loop + +next_ellipse_y: + inc curDY + jmp ellipse_y_loop + +ellipse_done: + ret +DrawCoinEllipse ENDP + +InitCoinGame PROC + mov coin3d_state, 0 + mov coin3d_timer, 0 + mov coin3d_win, 0 + cmp coin3d_bet, 10 + jge @F + mov coin3d_bet, 50 +@@: + ret +InitCoinGame ENDP + +HandleCoinInput PROC + cmp coin3d_state, 1 + je coin_input_done + + invoke Pressed3D, 20h ; SPACE + test eax, eax + jz check_coin_side + mov eax, bankroll + cmp eax, coin3d_bet + jl coin_no_cash + sub eax, coin3d_bet + mov bankroll, eax + mov coin3d_state, 1 + mov coin3d_timer, 0 + mov coin3d_win, 0 + invoke PlaySoundA, OFFSET soundClick, 0, 1 + jmp coin_input_done +coin_no_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + jmp coin_input_done + +check_coin_side: + invoke Pressed3D, 31h ; '1' + test eax, eax + jz @F + mov coin3d_side, 1 +@@: + invoke Pressed3D, 32h ; '2' + test eax, eax + jz check_coin_bet_adjust + mov coin3d_side, 2 + +check_coin_bet_adjust: + invoke Pressed3D, 26h ; UP + test eax, eax + jnz coin_inc_bet + invoke Pressed3D, 57h ; W + test eax, eax + jz check_coin_bet_down +coin_inc_bet: + cmp coin3d_bet, 500 + jge coin_input_done + cmp coin3d_bet, 250 + jge coin_set_500 + cmp coin3d_bet, 100 + jge coin_set_250 + cmp coin3d_bet, 50 + jge coin_set_100 + cmp coin3d_bet, 25 + jge coin_set_50 + jmp coin_set_25 + +check_coin_bet_down: + invoke Pressed3D, 28h ; DOWN + test eax, eax + jnz coin_dec_bet + invoke Pressed3D, 53h ; S + test eax, eax + jz coin_input_done +coin_dec_bet: + cmp coin3d_bet, 25 + jle coin_set_10 + cmp coin3d_bet, 50 + jle coin_set_25 + cmp coin3d_bet, 100 + jle coin_set_50 + cmp coin3d_bet, 250 + jle coin_set_100 + jmp coin_set_250 + +coin_set_500: + mov coin3d_bet, 500 + jmp coin_input_done +coin_set_250: + mov coin3d_bet, 250 + jmp coin_input_done +coin_set_100: + mov coin3d_bet, 100 + jmp coin_input_done +coin_set_50: + mov coin3d_bet, 50 + jmp coin_input_done +coin_set_25: + mov coin3d_bet, 25 + jmp coin_input_done +coin_set_10: + mov coin3d_bet, 10 + jmp coin_input_done + +coin_input_done: + ret +HandleCoinInput ENDP + +RenderCoinGame PROC uses ebx esi edi + local cyVal:DWORD, rxVal:DWORD + + ; Background & Bezel + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00140D18h + invoke DrawBoxBorder, 10, 10, 300, 220, 0022142Ah, 0000D7FFh, 3 + + ; Illuminated Marquee Header + invoke DrawBoxBorder, 25, 18, 270, 26, 000D0812h, 0000FFFFh, 2 + invoke DrawString8x8, 72, 27, OFFSET textCoinTitle, 0000D7FFh + + ; Streak Display + invoke DrawString8x8, 28, 50, OFFSET textCoinStreak, 0000D7FFh + invoke FormatNumber, coin3d_streak, OFFSET hudNumBuffer + invoke DrawString8x8, 84, 50, OFFSET hudNumBuffer, 0050FF50h + + ; Side Panel: [1] ÎÐ¨Ë + mov eax, 00120D16h + mov edx, 00505050h + mov ecx, 00808080h + cmp coin3d_side, 1 + jne @F + mov eax, 001E3520h + mov edx, 0000FFFFh + mov ecx, 0000FFFFh +@@: + push ecx + invoke DrawBoxBorder, 24, 70, 68, 38, eax, edx, 2 + pop ecx + invoke DrawString8x8, 28, 85, OFFSET textCoinSide1, ecx + + ; Side Panel: [2] ÐÅØÊÀ + mov eax, 00120D16h + mov edx, 00505050h + mov ecx, 00808080h + cmp coin3d_side, 2 + jne @F + mov eax, 001E3520h + mov edx, 0000FFFFh + mov ecx, 0000FFFFh +@@: + push ecx + invoke DrawBoxBorder, 228, 70, 68, 38, eax, edx, 2 + pop ecx + invoke DrawString8x8, 232, 85, OFFSET textCoinSide2, ecx + + ; Center coin pedestal arena + invoke DrawBoxBorder, 102, 54, 116, 84, 000F0A12h, 00504030h, 1 + + ; Flipping animation logic + cmp coin3d_state, 1 + jne coin_at_rest + + inc coin3d_timer + + ; Parabolic toss: cy = 96 - (t * (40 - t)) / 16 + mov eax, coin3d_timer + mov ecx, 40 + sub ecx, eax + imul eax, ecx + shr eax, 4 + mov edx, 96 + sub edx, eax + mov cyVal, edx + + ; Width rx from lookup table: (t % 10) + mov eax, coin3d_timer + xor edx, edx + mov ecx, 10 + div ecx + movzx eax, BYTE PTR [coinRxAnimTable + edx] + mov rxVal, eax + + invoke DrawCoinEllipse, 160, cyVal, rxVal, 22, 0000D7FFh, 0000B0E0h + invoke DrawString8x8, 84, 142, OFFSET textCoinFlipping, 0000FFFFh + + cmp coin3d_timer, 40 + jl coin_draw_controls + + ; Flip complete! + mov coin3d_state, 2 + invoke RandomRange3D, 2 + inc eax + mov coin3d_result, eax + + mov eax, coin3d_result + cmp eax, coin3d_side + jne coin_flip_lost + + ; Won! + mov eax, coin3d_bet + shl eax, 1 + mov coin3d_win, eax + add bankroll, eax + inc coin3d_streak + cmp coin3d_streak, 3 + jl @F + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + jmp coin_draw_controls +@@: + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp coin_draw_controls + +coin_flip_lost: + mov coin3d_streak, 0 + mov coin3d_win, 0 + invoke PlaySoundA, OFFSET soundClick, 0, 1 + jmp coin_draw_controls + +coin_at_rest: + ; Draw coin resting at (160, 96) + invoke DrawCoinEllipse, 160, 96, 24, 24, 0000D7FFh, 0000B0E0h + invoke DrawCoinEllipse, 160, 96, 20, 20, 0000FFFFh, 000090D0h + + ; Draw side text inside coin + cmp coin3d_state, 2 + jne coin_show_picked_side + cmp coin3d_result, 1 + jne @F + invoke DrawString8x8, 144, 92, OFFSET textCoinHeads, 00000030h + jmp coin_show_splash +@@: + invoke DrawString8x8, 140, 92, OFFSET textCoinTails, 00000030h + jmp coin_show_splash + +coin_show_picked_side: + cmp coin3d_side, 1 + jne @F + invoke DrawString8x8, 144, 92, OFFSET textCoinHeads, 00000030h + jmp coin_draw_controls +@@: + invoke DrawString8x8, 140, 92, OFFSET textCoinTails, 00000030h + jmp coin_draw_controls + +coin_show_splash: + cmp coin3d_win, 0 + je coin_show_loss + invoke DrawString8x8, 90, 142, OFFSET textCoinWin, 0000FFFFh + invoke FormatNumber, coin3d_win, OFFSET hudNumBuffer + invoke DrawString8x8, 178, 142, OFFSET hudNumBuffer, 0000FFFFh + jmp coin_draw_controls + +coin_show_loss: + invoke DrawString8x8, 126, 142, OFFSET textCoinLose, 000000FFh + +coin_draw_controls: + ; Bottom Control Panel + invoke DrawBoxBorder, 20, 165, 280, 58, 00151515h, 0000D7FFh, 1 + invoke DrawString8x8, 28, 170, OFFSET textBank3D, 0000D7FFh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 88, 170, OFFSET hudNumBuffer, 0000FFFFh + + invoke DrawString8x8, 180, 170, OFFSET textBet3D, 0000D7FFh + invoke FormatNumber, coin3d_bet, OFFSET hudNumBuffer + invoke DrawString8x8, 236, 170, OFFSET hudNumBuffer, 0050FF50h + + invoke DrawString8x8, 28, 186, OFFSET textCoinControls1, 00FFFFFFh + invoke DrawString8x8, 28, 202, OFFSET textCoinControls2, 00A0A0A0h + ret +RenderCoinGame ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: DICE / CRAPS (ÊÎÑÒÈ) +; ============================================================================== +DrawDieCube PROC uses ebx esi edi x:DWORD, y:DWORD, cubeSize:DWORD, valNum:DWORD + local pipColor:DWORD + mov pipColor, 001515C0h + + invoke DrawBoxBorder, x, y, cubeSize, cubeSize, 00F4F6F8h, 00303038h, 2 + + mov eax, x + add eax, cubeSize + mov edx, y + add edx, 2 + invoke DrawBox, eax, edx, 2, cubeSize, 0008140Ah + mov eax, x + add eax, 2 + mov edx, y + add edx, cubeSize + invoke DrawBox, eax, edx, cubeSize, 2, 0008140Ah + + cmp valNum, 1 + je draw_die_center + cmp valNum, 3 + je draw_die_center + cmp valNum, 5 + je draw_die_center + jmp check_die_corners +draw_die_center: + mov eax, x + add eax, 18 + mov edx, y + add edx, 18 + invoke DrawCircle, eax, edx, 2, pipColor + +check_die_corners: + cmp valNum, 2 + jl die_render_done + mov eax, x + add eax, 9 + mov edx, y + add edx, 9 + invoke DrawCircle, eax, edx, 2, pipColor + mov eax, x + add eax, 27 + mov edx, y + add edx, 27 + invoke DrawCircle, eax, edx, 2, pipColor + + cmp valNum, 4 + jl die_render_done + mov eax, x + add eax, 27 + mov edx, y + add edx, 9 + invoke DrawCircle, eax, edx, 2, pipColor + mov eax, x + add eax, 9 + mov edx, y + add edx, 27 + invoke DrawCircle, eax, edx, 2, pipColor + + cmp valNum, 6 + jl die_render_done + mov eax, x + add eax, 9 + mov edx, y + add edx, 18 + invoke DrawCircle, eax, edx, 2, pipColor + mov eax, x + add eax, 27 + mov edx, y + add edx, 18 + invoke DrawCircle, eax, edx, 2, pipColor + +die_render_done: + ret +DrawDieCube ENDP + +InitDiceGame PROC + mov dice3d_state, 0 + mov dice3d_timer, 0 + mov dice3d_win, 0 + cmp dice3d_bet, 10 + jge @F + mov dice3d_bet, 50 +@@: + ret +InitDiceGame ENDP + +HandleDiceInput PROC + cmp dice3d_state, 1 + je dice_input_done + + invoke Pressed3D, 20h ; SPACE + test eax, eax + jz check_dice_choice + mov eax, bankroll + cmp eax, dice3d_bet + jl dice_no_cash + sub eax, dice3d_bet + mov bankroll, eax + mov dice3d_state, 1 + mov dice3d_timer, 0 + mov dice3d_win, 0 + invoke PlaySoundA, OFFSET soundClick, 0, 1 + jmp dice_input_done +dice_no_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + jmp dice_input_done + +check_dice_choice: + invoke Pressed3D, 31h ; '1' + test eax, eax + jz @F + mov dice3d_choice, 1 +@@: + invoke Pressed3D, 32h ; '2' + test eax, eax + jz check_dice_bet_adjust + mov dice3d_choice, 2 + +check_dice_bet_adjust: + invoke Pressed3D, 26h ; UP + test eax, eax + jnz dice_inc_bet + invoke Pressed3D, 57h ; W + test eax, eax + jz check_dice_bet_down +dice_inc_bet: + cmp dice3d_bet, 500 + jge dice_input_done + cmp dice3d_bet, 250 + jge dice_set_500 + cmp dice3d_bet, 100 + jge dice_set_250 + cmp dice3d_bet, 50 + jge dice_set_100 + cmp dice3d_bet, 25 + jge dice_set_50 + jmp dice_set_25 + +check_dice_bet_down: + invoke Pressed3D, 28h ; DOWN + test eax, eax + jnz dice_dec_bet + invoke Pressed3D, 53h ; S + test eax, eax + jz dice_input_done +dice_dec_bet: + cmp dice3d_bet, 25 + jle dice_set_10 + cmp dice3d_bet, 50 + jle dice_set_25 + cmp dice3d_bet, 100 + jle dice_set_50 + cmp dice3d_bet, 250 + jle dice_set_100 + jmp dice_set_250 + +dice_set_500: + mov dice3d_bet, 500 + jmp dice_input_done +dice_set_250: + mov dice3d_bet, 250 + jmp dice_input_done +dice_set_100: + mov dice3d_bet, 100 + jmp dice_input_done +dice_set_50: + mov dice3d_bet, 50 + jmp dice_input_done +dice_set_25: + mov dice3d_bet, 25 + jmp dice_input_done +dice_set_10: + mov dice3d_bet, 10 + jmp dice_input_done + +dice_input_done: + ret +HandleDiceInput ENDP + +RenderDiceGame PROC uses ebx esi edi + local d1X:DWORD, d1Y:DWORD, d2X:DWORD, d2Y:DWORD + + ; Background & Bezel + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 000C2612h + invoke DrawBoxBorder, 10, 10, 300, 220, 0014381Ah, 0000D7FFh, 3 + + ; Illuminated Marquee Header + invoke DrawBoxBorder, 25, 18, 270, 26, 000A1F0Eh, 0000FFFFh, 2 + invoke DrawString8x8, 52, 27, OFFSET textDiceTitle, 0000D7FFh + + ; Choice Panels + mov eax, 000E2614h + mov edx, 00505050h + mov ecx, 00808080h + cmp dice3d_choice, 1 + jne @F + mov eax, 001C4824h + mov edx, 0000FFFFh + mov ecx, 0000FFFFh +@@: + push ecx + invoke DrawBoxBorder, 24, 55, 76, 36, eax, edx, 2 + pop ecx + invoke DrawString8x8, 34, 68, OFFSET textDiceEven, ecx + + mov eax, 000E2614h + mov edx, 00505050h + mov ecx, 00808080h + cmp dice3d_choice, 2 + jne @F + mov eax, 001C4824h + mov edx, 0000FFFFh + mov ecx, 0000FFFFh +@@: + push ecx + invoke DrawBoxBorder, 220, 55, 76, 36, eax, edx, 2 + pop ecx + invoke DrawString8x8, 226, 68, OFFSET textDiceOdd, ecx + + ; Dice Table Box + invoke DrawBoxBorder, 104, 52, 112, 54, 0009200Dh, 00305030h, 1 + + ; Rolling animation logic + cmp dice3d_state, 1 + jne dice_at_rest + + inc dice3d_timer + + ; Tumbling jitter offsets + mov eax, dice3d_timer + and eax, 3 + sub eax, 1 + + mov edx, 112 + add edx, eax + mov d1X, edx + + mov edx, 60 + sub edx, eax + mov d1Y, edx + + mov edx, 172 + sub edx, eax + mov d2X, edx + + mov edx, 62 + add edx, eax + mov d2Y, edx + + test dice3d_timer, 1 + jz @F + invoke RandomRange3D, 6 + inc eax + mov dice3d_val1, eax + invoke RandomRange3D, 6 + inc eax + mov dice3d_val2, eax +@@: + invoke DrawDieCube, d1X, d1Y, 36, dice3d_val1 + invoke DrawDieCube, d2X, d2Y, 36, dice3d_val2 + + invoke DrawString8x8, 96, 132, OFFSET textDiceRolling, 0000FFFFh + + cmp dice3d_timer, 36 + jl dice_draw_controls + + ; Roll completed! + mov dice3d_state, 2 + invoke RandomRange3D, 6 + inc eax + mov dice3d_val1, eax + invoke RandomRange3D, 6 + inc eax + mov dice3d_val2, eax + + mov eax, dice3d_val1 + add eax, dice3d_val2 + mov dice3d_sum, eax + + test eax, 1 + jz dice_sum_is_even + mov ecx, 2 ; Odd + jmp check_dice_win +dice_sum_is_even: + mov ecx, 1 ; Even + +check_dice_win: + cmp ecx, dice3d_choice + jne dice_roll_lost + + mov eax, dice3d_bet + shl eax, 1 + mov dice3d_win, eax + add bankroll, eax + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp dice_draw_controls + +dice_roll_lost: + mov dice3d_win, 0 + invoke PlaySoundA, OFFSET soundClick, 0, 1 + jmp dice_draw_controls + +dice_at_rest: + invoke DrawDieCube, 112, 60, 36, dice3d_val1 + invoke DrawDieCube, 172, 60, 36, dice3d_val2 + + cmp dice3d_state, 2 + jne dice_draw_controls + + ; Score Tally + invoke DrawString8x8, 80, 112, OFFSET textDiceTally, 0000D7FFh + invoke FormatNumber, dice3d_val1, OFFSET hudNumBuffer + invoke DrawString8x8, 136, 112, OFFSET hudNumBuffer, 00FFFFFFh + invoke DrawString8x8, 146, 112, OFFSET textDicePlus, 0000D7FFh + invoke FormatNumber, dice3d_val2, OFFSET hudNumBuffer + invoke DrawString8x8, 170, 112, OFFSET hudNumBuffer, 00FFFFFFh + invoke DrawString8x8, 180, 112, OFFSET textDiceEqual, 0000D7FFh + invoke FormatNumber, dice3d_sum, OFFSET hudNumBuffer + invoke DrawString8x8, 204, 112, OFFSET hudNumBuffer, 0000FFFFh + + mov eax, dice3d_sum + test eax, 1 + jz @F + invoke DrawString8x8, 222, 112, OFFSET textDiceOddResult, 00FF8080h + jmp dice_show_outcome +@@: + invoke DrawString8x8, 222, 112, OFFSET textDiceEvenResult, 0080FF80h + +dice_show_outcome: + cmp dice3d_win, 0 + je dice_show_loss + invoke DrawString8x8, 90, 132, OFFSET textDiceWin, 0000FFFFh + invoke FormatNumber, dice3d_win, OFFSET hudNumBuffer + invoke DrawString8x8, 178, 132, OFFSET hudNumBuffer, 0000FFFFh + jmp dice_draw_controls +dice_show_loss: + invoke DrawString8x8, 126, 132, OFFSET textDiceLose, 000000FFh + +dice_draw_controls: + invoke DrawBoxBorder, 20, 165, 280, 58, 00151515h, 0000D7FFh, 1 + invoke DrawString8x8, 28, 170, OFFSET textBank3D, 0000D7FFh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 88, 170, OFFSET hudNumBuffer, 0000FFFFh + + invoke DrawString8x8, 180, 170, OFFSET textBet3D, 0000D7FFh + invoke FormatNumber, dice3d_bet, OFFSET hudNumBuffer + invoke DrawString8x8, 236, 170, OFFSET hudNumBuffer, 0050FF50h + + invoke DrawString8x8, 28, 186, OFFSET textDiceControls1, 00FFFFFFh + invoke DrawString8x8, 28, 202, OFFSET textDiceControls2, 00A0A0A0h + ret +RenderDiceGame ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: SKULLS & CUPS (ÍÀϨÐÑÒÊÈ) +; ============================================================================== +DrawCup PROC uses ebx esi edi x:DWORD, y:DWORD, cupNumChar:DWORD + invoke DrawBox, x + 14, y, 16, 4, 0000C8E8h + invoke DrawBoxBorder, x + 8, y + 4, 28, 12, 00221A30h, 0000D7FFh, 2 + invoke DrawBoxBorder, x + 4, y + 16, 36, 16, 00221A30h, 0000D7FFh, 2 + invoke DrawBoxBorder, x + 2, y + 32, 40, 8, 002A2038h, 0000FFFFh, 2 + + mov eax, x + add eax, 18 + mov edx, y + add edx, 18 + invoke DrawChar8x8, eax, edx, cupNumChar, 0000FFFFh + ret +DrawCup ENDP + +DrawGoldenBall PROC uses ebx esi edi x:DWORD, y:DWORD + invoke DrawCircle, x, y, 7, 0000A5D8h + invoke DrawCircle, x, y, 6, 0000D7FFh + invoke DrawCircle, x, y, 4, 0000FFFFh + mov eax, x + sub eax, 2 + mov edx, y + sub edx, 2 + invoke DrawCircle, eax, edx, 1, 00FFFFFFh + ret +DrawGoldenBall ENDP + +InitSkullsGame PROC + mov skulls3d_state, 0 + mov skulls3d_timer, 0 + mov skulls3d_win, 0 + cmp skulls3d_bet, 10 + jge @F + mov skulls3d_bet, 50 +@@: + ret +InitSkullsGame ENDP + +FinalizeSkullsGuess PROC + mov skulls3d_state, 4 + mov eax, skulls3d_choice + cmp eax, skulls3d_ballPos + jne skulls_guess_lost + + mov eax, skulls3d_bet + imul eax, 3 + mov skulls3d_win, eax + add bankroll, eax + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + ret + +skulls_guess_lost: + mov skulls3d_win, 0 + invoke PlaySoundA, OFFSET soundClick, 0, 1 + ret +FinalizeSkullsGuess ENDP + +HandleSkullsInput PROC + cmp skulls3d_state, 1 + je skulls_input_done + cmp skulls3d_state, 2 + je skulls_input_done + + cmp skulls3d_state, 0 + jne check_skulls_in_phase3 + + ; Phase 0: Idle / betting + invoke Pressed3D, 20h ; SPACE + test eax, eax + jz check_skulls_bet_adjust + + mov eax, bankroll + cmp eax, skulls3d_bet + jl skulls_no_cash + sub eax, skulls3d_bet + mov bankroll, eax + + invoke RandomRange3D, 3 + mov skulls3d_ballPos, eax + mov skulls3d_state, 1 + mov skulls3d_timer, 0 + mov skulls3d_win, 0 + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp skulls_input_done + +skulls_no_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + jmp skulls_input_done + +check_skulls_in_phase3: + cmp skulls3d_state, 3 + jne check_skulls_in_phase4 + + ; Phase 3: Pick cup + invoke Pressed3D, 31h ; '1' + test eax, eax + jz @F + mov skulls3d_choice, 0 + call FinalizeSkullsGuess + jmp skulls_input_done +@@: + invoke Pressed3D, 32h ; '2' + test eax, eax + jz @F + mov skulls3d_choice, 1 + call FinalizeSkullsGuess + jmp skulls_input_done +@@: + invoke Pressed3D, 33h ; '3' + test eax, eax + jz skulls_input_done + mov skulls3d_choice, 2 + call FinalizeSkullsGuess + jmp skulls_input_done + +check_skulls_in_phase4: + ; Phase 4: Play again or adjust bet + invoke Pressed3D, 20h ; SPACE + test eax, eax + jz check_skulls_bet_adjust + mov skulls3d_state, 0 + jmp skulls_input_done + +check_skulls_bet_adjust: + invoke Pressed3D, 26h ; UP + test eax, eax + jnz skulls_inc_bet + invoke Pressed3D, 57h ; W + test eax, eax + jz check_skulls_bet_down +skulls_inc_bet: + cmp skulls3d_bet, 500 + jge skulls_input_done + cmp skulls3d_bet, 250 + jge skulls_set_500 + cmp skulls3d_bet, 100 + jge skulls_set_250 + cmp skulls3d_bet, 50 + jge skulls_set_100 + cmp skulls3d_bet, 25 + jge skulls_set_50 + jmp skulls_set_25 + +check_skulls_bet_down: + invoke Pressed3D, 28h ; DOWN + test eax, eax + jnz skulls_dec_bet + invoke Pressed3D, 53h ; S + test eax, eax + jz skulls_input_done +skulls_dec_bet: + cmp skulls3d_bet, 25 + jle skulls_set_10 + cmp skulls3d_bet, 50 + jle skulls_set_25 + cmp skulls3d_bet, 100 + jle skulls_set_50 + cmp skulls3d_bet, 250 + jle skulls_set_100 + jmp skulls_set_250 + +skulls_set_500: + mov skulls3d_bet, 500 + jmp skulls_input_done +skulls_set_250: + mov skulls3d_bet, 250 + jmp skulls_input_done +skulls_set_100: + mov skulls3d_bet, 100 + jmp skulls_input_done +skulls_set_50: + mov skulls3d_bet, 50 + jmp skulls_input_done +skulls_set_25: + mov skulls3d_bet, 25 + jmp skulls_input_done +skulls_set_10: + mov skulls3d_bet, 10 + jmp skulls_input_done + +skulls_input_done: + ret +HandleSkullsInput ENDP + +RenderSkullsGame PROC uses ebx esi edi + local passTick:DWORD, curPair:DWORD, swapSlotA:DWORD, swapSlotB:DWORD + local xA:DWORD, xB:DWORD, curXA:DWORD, curXB:DWORD, curYA:DWORD, curYB:DWORD + local distX:DWORD, dxVal:DWORD, archY:DWORD + + ; Background & Bezel + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00100E18h + invoke DrawBoxBorder, 10, 10, 300, 220, 001A1828h, 0000D7FFh, 3 + + ; Illuminated Marquee Header + invoke DrawBoxBorder, 25, 18, 270, 26, 000C0A14h, 0000FFFFh, 2 + invoke DrawString8x8, 56, 27, OFFSET textSkullsTitle, 0000D7FFh + + ; Dispatch based on phase + cmp skulls3d_state, 1 + je skulls_render_phase1 + cmp skulls3d_state, 2 + je skulls_render_phase2 + cmp skulls3d_state, 3 + je skulls_render_phase3 + cmp skulls3d_state, 4 + je skulls_render_phase4 + + ; Phase 0: Idle / Betting + invoke DrawCup, 50, 105, '1' + invoke DrawCup, 138, 105, '2' + invoke DrawCup, 226, 105, '3' + invoke DrawString8x8, 24, 48, OFFSET textSkullsPhase0, 0000D7FFh + jmp skulls_draw_controls + +skulls_render_phase1: + inc skulls3d_timer + + ; Draw golden ball under starting cup + mov eax, skulls3d_ballPos + cmp eax, 0 + je p1_ball_0 + cmp eax, 1 + je p1_ball_1 + invoke DrawGoldenBall, 248, 120 + jmp p1_draw_cups +p1_ball_0: + invoke DrawGoldenBall, 72, 120 + jmp p1_draw_cups +p1_ball_1: + invoke DrawGoldenBall, 160, 120 + +p1_draw_cups: + mov edx, 105 + cmp skulls3d_ballPos, 0 + jne @F + mov edx, 70 +@@: + invoke DrawCup, 50, edx, '1' + + mov edx, 105 + cmp skulls3d_ballPos, 1 + jne @F + mov edx, 70 +@@: + invoke DrawCup, 138, edx, '2' + + mov edx, 105 + cmp skulls3d_ballPos, 2 + jne @F + mov edx, 70 +@@: + invoke DrawCup, 226, edx, '3' + + invoke DrawString8x8, 76, 48, OFFSET textSkullsPhase1, 0000FFFFh + + cmp skulls3d_timer, 40 + jl skulls_draw_controls + + ; Start Phase 2 (Shuffle) + mov skulls3d_state, 2 + mov skulls3d_timer, 0 + invoke RandomRange3D, 3 + mov skulls3d_swapPair0, eax + invoke RandomRange3D, 3 + mov skulls3d_swapPair1, eax + invoke RandomRange3D, 3 + mov skulls3d_swapPair2, eax + jmp skulls_draw_controls + +skulls_render_phase2: + inc skulls3d_timer + + mov eax, skulls3d_timer + cmp eax, 20 + jbe pass_0 + cmp eax, 40 + jbe pass_1 + sub eax, 41 + mov passTick, eax + mov eax, skulls3d_swapPair2 + mov curPair, eax + jmp setup_pass_pair + +pass_0: + dec eax + mov passTick, eax + mov eax, skulls3d_swapPair0 + mov curPair, eax + jmp setup_pass_pair + +pass_1: + sub eax, 21 + mov passTick, eax + mov eax, skulls3d_swapPair1 + mov curPair, eax + +setup_pass_pair: + cmp curPair, 1 + je pair_1 + cmp curPair, 2 + je pair_2 + mov swapSlotA, 0 + mov swapSlotB, 1 + mov xA, 50 + mov xB, 138 + jmp calc_swap_coords +pair_1: + mov swapSlotA, 1 + mov swapSlotB, 2 + mov xA, 138 + mov xB, 226 + jmp calc_swap_coords +pair_2: + mov swapSlotA, 0 + mov swapSlotB, 2 + mov xA, 50 + mov xB, 226 + +calc_swap_coords: + mov eax, xB + sub eax, xA + mov distX, eax + + mov eax, distX + imul eax, passTick + xor edx, edx + mov ecx, 20 + div ecx + mov dxVal, eax + + mov eax, xA + add eax, dxVal + mov curXA, eax + + mov eax, xB + sub eax, dxVal + mov curXB, eax + + mov eax, passTick + mov ecx, 20 + sub ecx, eax + imul eax, ecx + xor edx, edx + mov ecx, 25 + div ecx + mov archY, eax + + mov eax, 105 + sub eax, archY + mov curYA, eax + + mov eax, 105 + add eax, archY + mov curYB, eax + + cmp passTick, 19 + jne @F + mov eax, skulls3d_ballPos + cmp eax, swapSlotA + jne check_ball_b + mov eax, swapSlotB + mov skulls3d_ballPos, eax + jmp ball_swap_done +check_ball_b: + cmp eax, swapSlotB + jne ball_swap_done + mov eax, swapSlotA + mov skulls3d_ballPos, eax +ball_swap_done: + invoke PlaySoundA, OFFSET soundClick, 0, 1 +@@: + cmp curPair, 1 + je draw_stat_0 + cmp curPair, 2 + je draw_stat_1 + invoke DrawCup, 226, 105, '3' + jmp draw_moving_cups +draw_stat_0: + invoke DrawCup, 50, 105, '1' + jmp draw_moving_cups +draw_stat_1: + invoke DrawCup, 138, 105, '2' + +draw_moving_cups: + mov edx, '1' + add edx, swapSlotA + invoke DrawCup, curXA, curYA, edx + + mov edx, '1' + add edx, swapSlotB + invoke DrawCup, curXB, curYB, edx + + invoke DrawString8x8, 40, 48, OFFSET textSkullsPhase2, 0000FFFFh + + cmp skulls3d_timer, 60 + jl skulls_draw_controls + mov skulls3d_state, 3 + mov skulls3d_timer, 0 + jmp skulls_draw_controls + +skulls_render_phase3: + invoke DrawCup, 50, 105, '1' + invoke DrawCup, 138, 105, '2' + invoke DrawCup, 226, 105, '3' + invoke DrawString8x8, 16, 48, OFFSET textSkullsPhase3, 0000FFFFh + jmp skulls_draw_controls + +skulls_render_phase4: + mov eax, skulls3d_ballPos + cmp eax, 0 + je p4_ball_0 + cmp eax, 1 + je p4_ball_1 + invoke DrawGoldenBall, 248, 120 + jmp p4_draw_cups +p4_ball_0: + invoke DrawGoldenBall, 72, 120 + jmp p4_draw_cups +p4_ball_1: + invoke DrawGoldenBall, 160, 120 + +p4_draw_cups: + mov edx, 105 + cmp skulls3d_choice, 0 + je @F + cmp skulls3d_ballPos, 0 + jne draw_cup0 +@@: + mov edx, 70 +draw_cup0: + invoke DrawCup, 50, edx, '1' + + mov edx, 105 + cmp skulls3d_choice, 1 + je @F + cmp skulls3d_ballPos, 1 + jne draw_cup1 +@@: + mov edx, 70 +draw_cup1: + invoke DrawCup, 138, edx, '2' + + mov edx, 105 + cmp skulls3d_choice, 2 + je @F + cmp skulls3d_ballPos, 2 + jne draw_cup2 +@@: + mov edx, 70 +draw_cup2: + invoke DrawCup, 226, edx, '3' + + cmp skulls3d_win, 0 + je p4_splash_lose + invoke DrawString8x8, 24, 48, OFFSET textSkullsWin, 0000FFFFh + invoke FormatNumber, skulls3d_win, OFFSET hudNumBuffer + invoke DrawString8x8, 236, 48, OFFSET hudNumBuffer, 0000FFFFh + jmp p4_again_hint +p4_splash_lose: + invoke DrawString8x8, 36, 48, OFFSET textSkullsLose, 000000FFh +p4_again_hint: + invoke DrawString8x8, 56, 138, OFFSET textSkullsAgain, 0000D7FFh + +skulls_draw_controls: + invoke DrawBoxBorder, 20, 165, 280, 58, 00151515h, 0000D7FFh, 1 + invoke DrawString8x8, 28, 170, OFFSET textBank3D, 0000D7FFh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 88, 170, OFFSET hudNumBuffer, 0000FFFFh + + invoke DrawString8x8, 180, 170, OFFSET textBet3D, 0000D7FFh + invoke FormatNumber, skulls3d_bet, OFFSET hudNumBuffer + invoke DrawString8x8, 236, 170, OFFSET hudNumBuffer, 0050FF50h + + invoke DrawString8x8, 24, 186, OFFSET textSkullsControls1, 00FFFFFFh + invoke DrawString8x8, 24, 202, OFFSET textSkullsControls2, 00A0A0A0h + ret +RenderSkullsGame ENDP + ; --- Player Input & Movement Physics --- HandlePlayerInput PROC uses ebx esi edi local speed:DWORD @@ -2974,19 +4228,22 @@ check_target_roulette: check_target_dice: cmp eax, INTERACT_DICE jne check_target_skulls - invoke LaunchClassicGame, OFFSET GameDice, 7, OFFSET szTitleDice + call InitDiceGame + mov engineMode, MODE_DICE ret check_target_skulls: cmp eax, INTERACT_SKULLS jne check_target_coin - invoke LaunchClassicGame, OFFSET GameSkulls, 5, OFFSET szTitleSkulls + call InitSkullsGame + mov engineMode, MODE_SKULLS ret check_target_coin: cmp eax, INTERACT_COIN jne check_target_skill - invoke LaunchClassicGame, OFFSET GameCoin, 6, OFFSET szTitleCoin + call InitCoinGame + mov engineMode, MODE_COIN ret check_target_skill: @@ -3382,6 +4639,14 @@ leave_table: je engine_tick cmp roulState, 1 je engine_tick + cmp coin3d_state, 1 + je engine_tick + cmp dice3d_state, 1 + je engine_tick + cmp skulls3d_state, 1 + je engine_tick + cmp skulls3d_state, 2 + je engine_tick mov engineMode, MODE_WALK engine_tick: cmp paused3D, 0 @@ -3425,9 +4690,29 @@ check_shop_mode: call RenderShopGame jmp present_frame check_atm_mode: + cmp engineMode, MODE_ATM + jne check_coin_mode call HandleATMInput call RenderATMGame jmp present_frame +check_coin_mode: + cmp engineMode, MODE_COIN + jne check_dice_mode + call HandleCoinInput + call RenderCoinGame + jmp present_frame +check_dice_mode: + cmp engineMode, MODE_DICE + jne check_skulls_mode + call HandleDiceInput + call RenderDiceGame + jmp present_frame +check_skulls_mode: + cmp engineMode, MODE_SKULLS + jne present_frame + call HandleSkullsInput + call RenderSkullsGame + jmp present_frame draw_pause: invoke DrawBoxBorder, 65, 75, 190, 85, 00151C21h, 00D8BC6Ah, 2 invoke DrawString8x8, 86, 88, OFFSET textPause3D, 00FFFFFFh diff --git a/build/graphics/poker.exe b/build/graphics/poker.exe index b874ad9e7692d444b0802da0f377fcee7ab23c83..dbed6aa374ae73d8ab0a5d3bc82fbef0c064ee33 100644 GIT binary patch delta 69580 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 delta 62063 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 z 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]fRXwhgnx-T(E1 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 IhcZ(if$wU+XdLT_WqyT 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 diff --git a/casino3d.inc b/casino3d.inc index e3d7728..96f7064 100644 --- a/casino3d.inc +++ b/casino3d.inc @@ -112,6 +112,9 @@ MODE_BLACKJACK equ 2 MODE_ROULETTE equ 3 MODE_SHOP equ 4 MODE_ATM equ 5 +MODE_COIN equ 6 +MODE_DICE equ 7 +MODE_SKULLS equ 8 WS_OVERLAPPEDWINDOW equ 00CF0000h SW_SHOW equ 5 @@ -276,6 +279,75 @@ roulWinningNum dd 0 roulPayout dd 0 roulOutcomeMsg db 64 dup(0) +; --- Native 2.5D Coin Flip Game --- +coin3d_bet dd 50 +coin3d_side dd 1 ; 1 = Îð¸ë, 2 = Ðåøêà +coin3d_state dd 0 ; 0 = Idle, 1 = Flipping, 2 = Result +coin3d_timer dd 0 +coin3d_result dd 1 ; 1 = Îð¸ë, 2 = Ðåøêà +coin3d_streak dd 0 +coin3d_win dd 0 + +coinRxAnimTable db 22, 18, 12, 4, 12, 18, 22, 18, 12, 4 + +textCoinTitle db "ÌÎÍÅÒÊÀ (ÎÐ¨Ë / ÐÅØÊÀ)",0 +textCoinHeads db "ÎШË",0 +textCoinTails db "ÐÅØÊÀ",0 +textCoinStreak db "ÑÅÐÈß: ",0 +textCoinSide1 db "[1] ÎШË",0 +textCoinSide2 db "[2] ÐÅØÊÀ",0 +textCoinFlipping db "ÌÎÍÅÒÀ  ÂÎÇÄÓÕÅ...",0 +textCoinWin db "ÂÛÈÃÐÛØ! +$",0 +textCoinLose db "ÏÐÎÈÃÐÛØ!",0 +textCoinControls1 db "[1/2] ÑÒÎÐÎÍÀ [ÏÐÎÁÅË] ÁÐÎÑÎÊ",0 +textCoinControls2 db "[ÂÂÅÐÕ/ÂÍÈÇ] ÑÒÀÂÊÀ [ESC] ÂÛÕÎÄ",0 + +; --- Native 2.5D Dice Game --- +dice3d_bet dd 50 +dice3d_choice dd 1 ; 1 = ׸ò, 2 = Íå÷åò +dice3d_state dd 0 ; 0 = Idle, 1 = Rolling, 2 = Result +dice3d_timer dd 0 +dice3d_val1 dd 3 +dice3d_val2 dd 4 +dice3d_sum dd 7 +dice3d_win dd 0 + +textDiceTitle db "ÊÎÑÒÈ (CRAPS) - ×¨Ò / ÍÅ×ÅÒ",0 +textDiceEven db "[1] רÒ",0 +textDiceOdd db "[2] ÍÅ×ÅÒ",0 +textDiceTally db "ÊÎÑÒÈ: ",0 +textDicePlus db " + ",0 +textDiceEqual db " = ",0 +textDiceEvenResult db " (רÒ)",0 +textDiceOddResult db " (ÍÅ×ÅÒ)",0 +textDiceRolling db "ÁÐÎÑÎÊ ÊÎÑÒÅÉ...",0 +textDiceWin db "ÂÛÈÃÐÛØ! +$",0 +textDiceLose db "ÏÐÎÈÃÐÛØ!",0 +textDiceControls1 db "[1] ×¨Ò [2] ÍÅ×ÅÒ [ÏÐÎÁÅË] ÁÐÎÑÎÊ",0 +textDiceControls2 db "[ÂÂÅÐÕ/ÂÍÈÇ] ÑÒÀÂÊÀ [ESC] ÂÛÕÎÄ",0 + +; --- Native 2.5D Skulls Game --- +skulls3d_bet dd 50 +skulls3d_state dd 0 ; 0 = Idle, 1 = Show ball, 2 = Shuffle, 3 = Pick, 4 = Reveal +skulls3d_timer dd 0 +skulls3d_ballPos dd 0 ; 0, 1, 2 +skulls3d_choice dd 0 ; 0, 1, 2 +skulls3d_win dd 0 +skulls3d_swapPair0 dd 0 +skulls3d_swapPair1 dd 1 +skulls3d_swapPair2 dd 2 + +textSkullsTitle db "ÍÀϨÐÑÒÊÈ (×ÅÐÅÏÀ È ÊÓÁÊÈ)",0 +textSkullsPhase0 db "ÂÛÁÅÐÈÒÅ ÑÒÀÂÊÓ È ÍÀÆÌÈÒÅ [ÏÐÎÁÅË]",0 +textSkullsPhase1 db "ÇÀÏÎÌÍÈÒÅ, ÃÄÅ ØÀÐÈÊ!",0 +textSkullsPhase2 db "ÊÐÓ×Ó, ÂÅÐ×Ó, ÇÀÏÓÒÀÒÜ ÕÎ×Ó...",0 +textSkullsPhase3 db "ÃÄÅ ØÀÐÈÊ? ÍÀÆÌÈÒÅ [1], [2] ÈËÈ [3]!",0 +textSkullsWin db "ÂÛ ÓÃÀÄÀËÈ! ÄÆÅÊÏÎÒ x3! +$",0 +textSkullsLose db "ÍÅ ÓÃÀÄÀËÈ! ØÀÐÈÊ ÁÛË ÍÅ ÇÄÅÑÜ!",0 +textSkullsAgain db "[ÏÐÎÁÅË] - ÑÛÃÐÀÒÜ ÅÙ¨ ÐÀÇ",0 +textSkullsControls1 db "[1/2/3] ÂÛÁÎÐ ÊÓÁÊÀ [ÏÐÎÁÅË] ÑÒÀÐÒ",0 +textSkullsControls2 db "[ÂÂÅÐÕ/ÂÍÈÇ] ÑÒÀÂÊÀ [ESC] ÂÛÕÎÄ",0 + shopMsg db 128 dup(0) atmMsg db 128 dup(0) @@ -2558,6 +2630,1188 @@ RenderATMGame PROC ret RenderATMGame ENDP +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: COIN FLIP (ÌÎÍÅÒÊÀ) +; ============================================================================== +DrawCoinEllipse PROC uses ebx esi edi cxVal:DWORD, cyVal:DWORD, rxVal:DWORD, ryVal:DWORD, outerColor:DWORD, innerColor:DWORD + local curDY:DWORD, curDX:DWORD, rxSq:DWORD, rySq:DWORD, rxRySq:DWORD, threshSq:DWORD + cmp rxVal, 0 + jle ellipse_done + cmp ryVal, 0 + jle ellipse_done + + mov eax, rxVal + imul eax, eax + mov rxSq, eax + + mov eax, ryVal + imul eax, eax + mov rySq, eax + + mov eax, rxSq + imul eax, rySq + mov rxRySq, eax + + mov eax, rxRySq + shr eax, 2 + imul eax, 3 + mov threshSq, eax + + mov eax, ryVal + neg eax + mov curDY, eax + +ellipse_y_loop: + mov eax, curDY + cmp eax, ryVal + jg ellipse_done + + mov eax, rxVal + neg eax + mov curDX, eax + +ellipse_x_loop: + mov eax, curDX + cmp eax, rxVal + jg next_ellipse_y + + mov eax, curDX + imul eax, eax + imul eax, rySq + mov ebx, curDY + imul ebx, ebx + imul ebx, rxSq + add eax, ebx + cmp eax, rxRySq + jg next_ellipse_x + + mov ecx, innerColor + cmp eax, threshSq + jb @F + mov ecx, outerColor +@@: + mov eax, cxVal + add eax, curDX + mov edx, cyVal + add edx, curDY + invoke DrawPixel, eax, edx, ecx + +next_ellipse_x: + inc curDX + jmp ellipse_x_loop + +next_ellipse_y: + inc curDY + jmp ellipse_y_loop + +ellipse_done: + ret +DrawCoinEllipse ENDP + +InitCoinGame PROC + mov coin3d_state, 0 + mov coin3d_timer, 0 + mov coin3d_win, 0 + cmp coin3d_bet, 10 + jge @F + mov coin3d_bet, 50 +@@: + ret +InitCoinGame ENDP + +HandleCoinInput PROC + cmp coin3d_state, 1 + je coin_input_done + + invoke Pressed3D, 20h ; SPACE + test eax, eax + jz check_coin_side + mov eax, bankroll + cmp eax, coin3d_bet + jl coin_no_cash + sub eax, coin3d_bet + mov bankroll, eax + mov coin3d_state, 1 + mov coin3d_timer, 0 + mov coin3d_win, 0 + invoke PlaySoundA, OFFSET soundClick, 0, 1 + jmp coin_input_done +coin_no_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + jmp coin_input_done + +check_coin_side: + invoke Pressed3D, 31h ; '1' + test eax, eax + jz @F + mov coin3d_side, 1 +@@: + invoke Pressed3D, 32h ; '2' + test eax, eax + jz check_coin_bet_adjust + mov coin3d_side, 2 + +check_coin_bet_adjust: + invoke Pressed3D, 26h ; UP + test eax, eax + jnz coin_inc_bet + invoke Pressed3D, 57h ; W + test eax, eax + jz check_coin_bet_down +coin_inc_bet: + cmp coin3d_bet, 500 + jge coin_input_done + cmp coin3d_bet, 250 + jge coin_set_500 + cmp coin3d_bet, 100 + jge coin_set_250 + cmp coin3d_bet, 50 + jge coin_set_100 + cmp coin3d_bet, 25 + jge coin_set_50 + jmp coin_set_25 + +check_coin_bet_down: + invoke Pressed3D, 28h ; DOWN + test eax, eax + jnz coin_dec_bet + invoke Pressed3D, 53h ; S + test eax, eax + jz coin_input_done +coin_dec_bet: + cmp coin3d_bet, 25 + jle coin_set_10 + cmp coin3d_bet, 50 + jle coin_set_25 + cmp coin3d_bet, 100 + jle coin_set_50 + cmp coin3d_bet, 250 + jle coin_set_100 + jmp coin_set_250 + +coin_set_500: + mov coin3d_bet, 500 + jmp coin_input_done +coin_set_250: + mov coin3d_bet, 250 + jmp coin_input_done +coin_set_100: + mov coin3d_bet, 100 + jmp coin_input_done +coin_set_50: + mov coin3d_bet, 50 + jmp coin_input_done +coin_set_25: + mov coin3d_bet, 25 + jmp coin_input_done +coin_set_10: + mov coin3d_bet, 10 + jmp coin_input_done + +coin_input_done: + ret +HandleCoinInput ENDP + +RenderCoinGame PROC uses ebx esi edi + local cyVal:DWORD, rxVal:DWORD + + ; Background & Bezel + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00140D18h + invoke DrawBoxBorder, 10, 10, 300, 220, 0022142Ah, 0000D7FFh, 3 + + ; Illuminated Marquee Header + invoke DrawBoxBorder, 25, 18, 270, 26, 000D0812h, 0000FFFFh, 2 + invoke DrawString8x8, 72, 27, OFFSET textCoinTitle, 0000D7FFh + + ; Streak Display + invoke DrawString8x8, 28, 50, OFFSET textCoinStreak, 0000D7FFh + invoke FormatNumber, coin3d_streak, OFFSET hudNumBuffer + invoke DrawString8x8, 84, 50, OFFSET hudNumBuffer, 0050FF50h + + ; Side Panel: [1] ÎÐ¨Ë + mov eax, 00120D16h + mov edx, 00505050h + mov ecx, 00808080h + cmp coin3d_side, 1 + jne @F + mov eax, 001E3520h + mov edx, 0000FFFFh + mov ecx, 0000FFFFh +@@: + push ecx + invoke DrawBoxBorder, 24, 70, 68, 38, eax, edx, 2 + pop ecx + invoke DrawString8x8, 28, 85, OFFSET textCoinSide1, ecx + + ; Side Panel: [2] ÐÅØÊÀ + mov eax, 00120D16h + mov edx, 00505050h + mov ecx, 00808080h + cmp coin3d_side, 2 + jne @F + mov eax, 001E3520h + mov edx, 0000FFFFh + mov ecx, 0000FFFFh +@@: + push ecx + invoke DrawBoxBorder, 228, 70, 68, 38, eax, edx, 2 + pop ecx + invoke DrawString8x8, 232, 85, OFFSET textCoinSide2, ecx + + ; Center coin pedestal arena + invoke DrawBoxBorder, 102, 54, 116, 84, 000F0A12h, 00504030h, 1 + + ; Flipping animation logic + cmp coin3d_state, 1 + jne coin_at_rest + + inc coin3d_timer + + ; Parabolic toss: cy = 96 - (t * (40 - t)) / 16 + mov eax, coin3d_timer + mov ecx, 40 + sub ecx, eax + imul eax, ecx + shr eax, 4 + mov edx, 96 + sub edx, eax + mov cyVal, edx + + ; Width rx from lookup table: (t % 10) + mov eax, coin3d_timer + xor edx, edx + mov ecx, 10 + div ecx + movzx eax, BYTE PTR [coinRxAnimTable + edx] + mov rxVal, eax + + invoke DrawCoinEllipse, 160, cyVal, rxVal, 22, 0000D7FFh, 0000B0E0h + invoke DrawString8x8, 84, 142, OFFSET textCoinFlipping, 0000FFFFh + + cmp coin3d_timer, 40 + jl coin_draw_controls + + ; Flip complete! + mov coin3d_state, 2 + invoke RandomRange3D, 2 + inc eax + mov coin3d_result, eax + + mov eax, coin3d_result + cmp eax, coin3d_side + jne coin_flip_lost + + ; Won! + mov eax, coin3d_bet + shl eax, 1 + mov coin3d_win, eax + add bankroll, eax + inc coin3d_streak + cmp coin3d_streak, 3 + jl @F + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + jmp coin_draw_controls +@@: + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp coin_draw_controls + +coin_flip_lost: + mov coin3d_streak, 0 + mov coin3d_win, 0 + invoke PlaySoundA, OFFSET soundClick, 0, 1 + jmp coin_draw_controls + +coin_at_rest: + ; Draw coin resting at (160, 96) + invoke DrawCoinEllipse, 160, 96, 24, 24, 0000D7FFh, 0000B0E0h + invoke DrawCoinEllipse, 160, 96, 20, 20, 0000FFFFh, 000090D0h + + ; Draw side text inside coin + cmp coin3d_state, 2 + jne coin_show_picked_side + cmp coin3d_result, 1 + jne @F + invoke DrawString8x8, 144, 92, OFFSET textCoinHeads, 00000030h + jmp coin_show_splash +@@: + invoke DrawString8x8, 140, 92, OFFSET textCoinTails, 00000030h + jmp coin_show_splash + +coin_show_picked_side: + cmp coin3d_side, 1 + jne @F + invoke DrawString8x8, 144, 92, OFFSET textCoinHeads, 00000030h + jmp coin_draw_controls +@@: + invoke DrawString8x8, 140, 92, OFFSET textCoinTails, 00000030h + jmp coin_draw_controls + +coin_show_splash: + cmp coin3d_win, 0 + je coin_show_loss + invoke DrawString8x8, 90, 142, OFFSET textCoinWin, 0000FFFFh + invoke FormatNumber, coin3d_win, OFFSET hudNumBuffer + invoke DrawString8x8, 178, 142, OFFSET hudNumBuffer, 0000FFFFh + jmp coin_draw_controls + +coin_show_loss: + invoke DrawString8x8, 126, 142, OFFSET textCoinLose, 000000FFh + +coin_draw_controls: + ; Bottom Control Panel + invoke DrawBoxBorder, 20, 165, 280, 58, 00151515h, 0000D7FFh, 1 + invoke DrawString8x8, 28, 170, OFFSET textBank3D, 0000D7FFh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 88, 170, OFFSET hudNumBuffer, 0000FFFFh + + invoke DrawString8x8, 180, 170, OFFSET textBet3D, 0000D7FFh + invoke FormatNumber, coin3d_bet, OFFSET hudNumBuffer + invoke DrawString8x8, 236, 170, OFFSET hudNumBuffer, 0050FF50h + + invoke DrawString8x8, 28, 186, OFFSET textCoinControls1, 00FFFFFFh + invoke DrawString8x8, 28, 202, OFFSET textCoinControls2, 00A0A0A0h + ret +RenderCoinGame ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: DICE / CRAPS (ÊÎÑÒÈ) +; ============================================================================== +DrawDieCube PROC uses ebx esi edi x:DWORD, y:DWORD, cubeSize:DWORD, valNum:DWORD + local pipColor:DWORD + mov pipColor, 001515C0h + + invoke DrawBoxBorder, x, y, cubeSize, cubeSize, 00F4F6F8h, 00303038h, 2 + + mov eax, x + add eax, cubeSize + mov edx, y + add edx, 2 + invoke DrawBox, eax, edx, 2, cubeSize, 0008140Ah + mov eax, x + add eax, 2 + mov edx, y + add edx, cubeSize + invoke DrawBox, eax, edx, cubeSize, 2, 0008140Ah + + cmp valNum, 1 + je draw_die_center + cmp valNum, 3 + je draw_die_center + cmp valNum, 5 + je draw_die_center + jmp check_die_corners +draw_die_center: + mov eax, x + add eax, 18 + mov edx, y + add edx, 18 + invoke DrawCircle, eax, edx, 2, pipColor + +check_die_corners: + cmp valNum, 2 + jl die_render_done + mov eax, x + add eax, 9 + mov edx, y + add edx, 9 + invoke DrawCircle, eax, edx, 2, pipColor + mov eax, x + add eax, 27 + mov edx, y + add edx, 27 + invoke DrawCircle, eax, edx, 2, pipColor + + cmp valNum, 4 + jl die_render_done + mov eax, x + add eax, 27 + mov edx, y + add edx, 9 + invoke DrawCircle, eax, edx, 2, pipColor + mov eax, x + add eax, 9 + mov edx, y + add edx, 27 + invoke DrawCircle, eax, edx, 2, pipColor + + cmp valNum, 6 + jl die_render_done + mov eax, x + add eax, 9 + mov edx, y + add edx, 18 + invoke DrawCircle, eax, edx, 2, pipColor + mov eax, x + add eax, 27 + mov edx, y + add edx, 18 + invoke DrawCircle, eax, edx, 2, pipColor + +die_render_done: + ret +DrawDieCube ENDP + +InitDiceGame PROC + mov dice3d_state, 0 + mov dice3d_timer, 0 + mov dice3d_win, 0 + cmp dice3d_bet, 10 + jge @F + mov dice3d_bet, 50 +@@: + ret +InitDiceGame ENDP + +HandleDiceInput PROC + cmp dice3d_state, 1 + je dice_input_done + + invoke Pressed3D, 20h ; SPACE + test eax, eax + jz check_dice_choice + mov eax, bankroll + cmp eax, dice3d_bet + jl dice_no_cash + sub eax, dice3d_bet + mov bankroll, eax + mov dice3d_state, 1 + mov dice3d_timer, 0 + mov dice3d_win, 0 + invoke PlaySoundA, OFFSET soundClick, 0, 1 + jmp dice_input_done +dice_no_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + jmp dice_input_done + +check_dice_choice: + invoke Pressed3D, 31h ; '1' + test eax, eax + jz @F + mov dice3d_choice, 1 +@@: + invoke Pressed3D, 32h ; '2' + test eax, eax + jz check_dice_bet_adjust + mov dice3d_choice, 2 + +check_dice_bet_adjust: + invoke Pressed3D, 26h ; UP + test eax, eax + jnz dice_inc_bet + invoke Pressed3D, 57h ; W + test eax, eax + jz check_dice_bet_down +dice_inc_bet: + cmp dice3d_bet, 500 + jge dice_input_done + cmp dice3d_bet, 250 + jge dice_set_500 + cmp dice3d_bet, 100 + jge dice_set_250 + cmp dice3d_bet, 50 + jge dice_set_100 + cmp dice3d_bet, 25 + jge dice_set_50 + jmp dice_set_25 + +check_dice_bet_down: + invoke Pressed3D, 28h ; DOWN + test eax, eax + jnz dice_dec_bet + invoke Pressed3D, 53h ; S + test eax, eax + jz dice_input_done +dice_dec_bet: + cmp dice3d_bet, 25 + jle dice_set_10 + cmp dice3d_bet, 50 + jle dice_set_25 + cmp dice3d_bet, 100 + jle dice_set_50 + cmp dice3d_bet, 250 + jle dice_set_100 + jmp dice_set_250 + +dice_set_500: + mov dice3d_bet, 500 + jmp dice_input_done +dice_set_250: + mov dice3d_bet, 250 + jmp dice_input_done +dice_set_100: + mov dice3d_bet, 100 + jmp dice_input_done +dice_set_50: + mov dice3d_bet, 50 + jmp dice_input_done +dice_set_25: + mov dice3d_bet, 25 + jmp dice_input_done +dice_set_10: + mov dice3d_bet, 10 + jmp dice_input_done + +dice_input_done: + ret +HandleDiceInput ENDP + +RenderDiceGame PROC uses ebx esi edi + local d1X:DWORD, d1Y:DWORD, d2X:DWORD, d2Y:DWORD + + ; Background & Bezel + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 000C2612h + invoke DrawBoxBorder, 10, 10, 300, 220, 0014381Ah, 0000D7FFh, 3 + + ; Illuminated Marquee Header + invoke DrawBoxBorder, 25, 18, 270, 26, 000A1F0Eh, 0000FFFFh, 2 + invoke DrawString8x8, 52, 27, OFFSET textDiceTitle, 0000D7FFh + + ; Choice Panels + mov eax, 000E2614h + mov edx, 00505050h + mov ecx, 00808080h + cmp dice3d_choice, 1 + jne @F + mov eax, 001C4824h + mov edx, 0000FFFFh + mov ecx, 0000FFFFh +@@: + push ecx + invoke DrawBoxBorder, 24, 55, 76, 36, eax, edx, 2 + pop ecx + invoke DrawString8x8, 34, 68, OFFSET textDiceEven, ecx + + mov eax, 000E2614h + mov edx, 00505050h + mov ecx, 00808080h + cmp dice3d_choice, 2 + jne @F + mov eax, 001C4824h + mov edx, 0000FFFFh + mov ecx, 0000FFFFh +@@: + push ecx + invoke DrawBoxBorder, 220, 55, 76, 36, eax, edx, 2 + pop ecx + invoke DrawString8x8, 226, 68, OFFSET textDiceOdd, ecx + + ; Dice Table Box + invoke DrawBoxBorder, 104, 52, 112, 54, 0009200Dh, 00305030h, 1 + + ; Rolling animation logic + cmp dice3d_state, 1 + jne dice_at_rest + + inc dice3d_timer + + ; Tumbling jitter offsets + mov eax, dice3d_timer + and eax, 3 + sub eax, 1 + + mov edx, 112 + add edx, eax + mov d1X, edx + + mov edx, 60 + sub edx, eax + mov d1Y, edx + + mov edx, 172 + sub edx, eax + mov d2X, edx + + mov edx, 62 + add edx, eax + mov d2Y, edx + + test dice3d_timer, 1 + jz @F + invoke RandomRange3D, 6 + inc eax + mov dice3d_val1, eax + invoke RandomRange3D, 6 + inc eax + mov dice3d_val2, eax +@@: + invoke DrawDieCube, d1X, d1Y, 36, dice3d_val1 + invoke DrawDieCube, d2X, d2Y, 36, dice3d_val2 + + invoke DrawString8x8, 96, 132, OFFSET textDiceRolling, 0000FFFFh + + cmp dice3d_timer, 36 + jl dice_draw_controls + + ; Roll completed! + mov dice3d_state, 2 + invoke RandomRange3D, 6 + inc eax + mov dice3d_val1, eax + invoke RandomRange3D, 6 + inc eax + mov dice3d_val2, eax + + mov eax, dice3d_val1 + add eax, dice3d_val2 + mov dice3d_sum, eax + + test eax, 1 + jz dice_sum_is_even + mov ecx, 2 ; Odd + jmp check_dice_win +dice_sum_is_even: + mov ecx, 1 ; Even + +check_dice_win: + cmp ecx, dice3d_choice + jne dice_roll_lost + + mov eax, dice3d_bet + shl eax, 1 + mov dice3d_win, eax + add bankroll, eax + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp dice_draw_controls + +dice_roll_lost: + mov dice3d_win, 0 + invoke PlaySoundA, OFFSET soundClick, 0, 1 + jmp dice_draw_controls + +dice_at_rest: + invoke DrawDieCube, 112, 60, 36, dice3d_val1 + invoke DrawDieCube, 172, 60, 36, dice3d_val2 + + cmp dice3d_state, 2 + jne dice_draw_controls + + ; Score Tally + invoke DrawString8x8, 80, 112, OFFSET textDiceTally, 0000D7FFh + invoke FormatNumber, dice3d_val1, OFFSET hudNumBuffer + invoke DrawString8x8, 136, 112, OFFSET hudNumBuffer, 00FFFFFFh + invoke DrawString8x8, 146, 112, OFFSET textDicePlus, 0000D7FFh + invoke FormatNumber, dice3d_val2, OFFSET hudNumBuffer + invoke DrawString8x8, 170, 112, OFFSET hudNumBuffer, 00FFFFFFh + invoke DrawString8x8, 180, 112, OFFSET textDiceEqual, 0000D7FFh + invoke FormatNumber, dice3d_sum, OFFSET hudNumBuffer + invoke DrawString8x8, 204, 112, OFFSET hudNumBuffer, 0000FFFFh + + mov eax, dice3d_sum + test eax, 1 + jz @F + invoke DrawString8x8, 222, 112, OFFSET textDiceOddResult, 00FF8080h + jmp dice_show_outcome +@@: + invoke DrawString8x8, 222, 112, OFFSET textDiceEvenResult, 0080FF80h + +dice_show_outcome: + cmp dice3d_win, 0 + je dice_show_loss + invoke DrawString8x8, 90, 132, OFFSET textDiceWin, 0000FFFFh + invoke FormatNumber, dice3d_win, OFFSET hudNumBuffer + invoke DrawString8x8, 178, 132, OFFSET hudNumBuffer, 0000FFFFh + jmp dice_draw_controls +dice_show_loss: + invoke DrawString8x8, 126, 132, OFFSET textDiceLose, 000000FFh + +dice_draw_controls: + invoke DrawBoxBorder, 20, 165, 280, 58, 00151515h, 0000D7FFh, 1 + invoke DrawString8x8, 28, 170, OFFSET textBank3D, 0000D7FFh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 88, 170, OFFSET hudNumBuffer, 0000FFFFh + + invoke DrawString8x8, 180, 170, OFFSET textBet3D, 0000D7FFh + invoke FormatNumber, dice3d_bet, OFFSET hudNumBuffer + invoke DrawString8x8, 236, 170, OFFSET hudNumBuffer, 0050FF50h + + invoke DrawString8x8, 28, 186, OFFSET textDiceControls1, 00FFFFFFh + invoke DrawString8x8, 28, 202, OFFSET textDiceControls2, 00A0A0A0h + ret +RenderDiceGame ENDP + +; ============================================================================== +; IN-ENGINE 2.5D MINI-GAME: SKULLS & CUPS (ÍÀϨÐÑÒÊÈ) +; ============================================================================== +DrawCup PROC uses ebx esi edi x:DWORD, y:DWORD, cupNumChar:DWORD + invoke DrawBox, x + 14, y, 16, 4, 0000C8E8h + invoke DrawBoxBorder, x + 8, y + 4, 28, 12, 00221A30h, 0000D7FFh, 2 + invoke DrawBoxBorder, x + 4, y + 16, 36, 16, 00221A30h, 0000D7FFh, 2 + invoke DrawBoxBorder, x + 2, y + 32, 40, 8, 002A2038h, 0000FFFFh, 2 + + mov eax, x + add eax, 18 + mov edx, y + add edx, 18 + invoke DrawChar8x8, eax, edx, cupNumChar, 0000FFFFh + ret +DrawCup ENDP + +DrawGoldenBall PROC uses ebx esi edi x:DWORD, y:DWORD + invoke DrawCircle, x, y, 7, 0000A5D8h + invoke DrawCircle, x, y, 6, 0000D7FFh + invoke DrawCircle, x, y, 4, 0000FFFFh + mov eax, x + sub eax, 2 + mov edx, y + sub edx, 2 + invoke DrawCircle, eax, edx, 1, 00FFFFFFh + ret +DrawGoldenBall ENDP + +InitSkullsGame PROC + mov skulls3d_state, 0 + mov skulls3d_timer, 0 + mov skulls3d_win, 0 + cmp skulls3d_bet, 10 + jge @F + mov skulls3d_bet, 50 +@@: + ret +InitSkullsGame ENDP + +FinalizeSkullsGuess PROC + mov skulls3d_state, 4 + mov eax, skulls3d_choice + cmp eax, skulls3d_ballPos + jne skulls_guess_lost + + mov eax, skulls3d_bet + imul eax, 3 + mov skulls3d_win, eax + add bankroll, eax + invoke PlaySoundA, OFFSET soundJackpot, 0, 1 + ret + +skulls_guess_lost: + mov skulls3d_win, 0 + invoke PlaySoundA, OFFSET soundClick, 0, 1 + ret +FinalizeSkullsGuess ENDP + +HandleSkullsInput PROC + cmp skulls3d_state, 1 + je skulls_input_done + cmp skulls3d_state, 2 + je skulls_input_done + + cmp skulls3d_state, 0 + jne check_skulls_in_phase3 + + ; Phase 0: Idle / betting + invoke Pressed3D, 20h ; SPACE + test eax, eax + jz check_skulls_bet_adjust + + mov eax, bankroll + cmp eax, skulls3d_bet + jl skulls_no_cash + sub eax, skulls3d_bet + mov bankroll, eax + + invoke RandomRange3D, 3 + mov skulls3d_ballPos, eax + mov skulls3d_state, 1 + mov skulls3d_timer, 0 + mov skulls3d_win, 0 + invoke PlaySoundA, OFFSET soundCoin, 0, 1 + jmp skulls_input_done + +skulls_no_cash: + invoke CopyString3D, OFFSET msgNeedMoney, OFFSET flashMessage + mov flashTimer, 60 + jmp skulls_input_done + +check_skulls_in_phase3: + cmp skulls3d_state, 3 + jne check_skulls_in_phase4 + + ; Phase 3: Pick cup + invoke Pressed3D, 31h ; '1' + test eax, eax + jz @F + mov skulls3d_choice, 0 + call FinalizeSkullsGuess + jmp skulls_input_done +@@: + invoke Pressed3D, 32h ; '2' + test eax, eax + jz @F + mov skulls3d_choice, 1 + call FinalizeSkullsGuess + jmp skulls_input_done +@@: + invoke Pressed3D, 33h ; '3' + test eax, eax + jz skulls_input_done + mov skulls3d_choice, 2 + call FinalizeSkullsGuess + jmp skulls_input_done + +check_skulls_in_phase4: + ; Phase 4: Play again or adjust bet + invoke Pressed3D, 20h ; SPACE + test eax, eax + jz check_skulls_bet_adjust + mov skulls3d_state, 0 + jmp skulls_input_done + +check_skulls_bet_adjust: + invoke Pressed3D, 26h ; UP + test eax, eax + jnz skulls_inc_bet + invoke Pressed3D, 57h ; W + test eax, eax + jz check_skulls_bet_down +skulls_inc_bet: + cmp skulls3d_bet, 500 + jge skulls_input_done + cmp skulls3d_bet, 250 + jge skulls_set_500 + cmp skulls3d_bet, 100 + jge skulls_set_250 + cmp skulls3d_bet, 50 + jge skulls_set_100 + cmp skulls3d_bet, 25 + jge skulls_set_50 + jmp skulls_set_25 + +check_skulls_bet_down: + invoke Pressed3D, 28h ; DOWN + test eax, eax + jnz skulls_dec_bet + invoke Pressed3D, 53h ; S + test eax, eax + jz skulls_input_done +skulls_dec_bet: + cmp skulls3d_bet, 25 + jle skulls_set_10 + cmp skulls3d_bet, 50 + jle skulls_set_25 + cmp skulls3d_bet, 100 + jle skulls_set_50 + cmp skulls3d_bet, 250 + jle skulls_set_100 + jmp skulls_set_250 + +skulls_set_500: + mov skulls3d_bet, 500 + jmp skulls_input_done +skulls_set_250: + mov skulls3d_bet, 250 + jmp skulls_input_done +skulls_set_100: + mov skulls3d_bet, 100 + jmp skulls_input_done +skulls_set_50: + mov skulls3d_bet, 50 + jmp skulls_input_done +skulls_set_25: + mov skulls3d_bet, 25 + jmp skulls_input_done +skulls_set_10: + mov skulls3d_bet, 10 + jmp skulls_input_done + +skulls_input_done: + ret +HandleSkullsInput ENDP + +RenderSkullsGame PROC uses ebx esi edi + local passTick:DWORD, curPair:DWORD, swapSlotA:DWORD, swapSlotB:DWORD + local xA:DWORD, xB:DWORD, curXA:DWORD, curXB:DWORD, curYA:DWORD, curYB:DWORD + local distX:DWORD, dxVal:DWORD, archY:DWORD + + ; Background & Bezel + invoke DrawBox, 0, 0, SCREEN_W, SCREEN_H, 00100E18h + invoke DrawBoxBorder, 10, 10, 300, 220, 001A1828h, 0000D7FFh, 3 + + ; Illuminated Marquee Header + invoke DrawBoxBorder, 25, 18, 270, 26, 000C0A14h, 0000FFFFh, 2 + invoke DrawString8x8, 56, 27, OFFSET textSkullsTitle, 0000D7FFh + + ; Dispatch based on phase + cmp skulls3d_state, 1 + je skulls_render_phase1 + cmp skulls3d_state, 2 + je skulls_render_phase2 + cmp skulls3d_state, 3 + je skulls_render_phase3 + cmp skulls3d_state, 4 + je skulls_render_phase4 + + ; Phase 0: Idle / Betting + invoke DrawCup, 50, 105, '1' + invoke DrawCup, 138, 105, '2' + invoke DrawCup, 226, 105, '3' + invoke DrawString8x8, 24, 48, OFFSET textSkullsPhase0, 0000D7FFh + jmp skulls_draw_controls + +skulls_render_phase1: + inc skulls3d_timer + + ; Draw golden ball under starting cup + mov eax, skulls3d_ballPos + cmp eax, 0 + je p1_ball_0 + cmp eax, 1 + je p1_ball_1 + invoke DrawGoldenBall, 248, 120 + jmp p1_draw_cups +p1_ball_0: + invoke DrawGoldenBall, 72, 120 + jmp p1_draw_cups +p1_ball_1: + invoke DrawGoldenBall, 160, 120 + +p1_draw_cups: + mov edx, 105 + cmp skulls3d_ballPos, 0 + jne @F + mov edx, 70 +@@: + invoke DrawCup, 50, edx, '1' + + mov edx, 105 + cmp skulls3d_ballPos, 1 + jne @F + mov edx, 70 +@@: + invoke DrawCup, 138, edx, '2' + + mov edx, 105 + cmp skulls3d_ballPos, 2 + jne @F + mov edx, 70 +@@: + invoke DrawCup, 226, edx, '3' + + invoke DrawString8x8, 76, 48, OFFSET textSkullsPhase1, 0000FFFFh + + cmp skulls3d_timer, 40 + jl skulls_draw_controls + + ; Start Phase 2 (Shuffle) + mov skulls3d_state, 2 + mov skulls3d_timer, 0 + invoke RandomRange3D, 3 + mov skulls3d_swapPair0, eax + invoke RandomRange3D, 3 + mov skulls3d_swapPair1, eax + invoke RandomRange3D, 3 + mov skulls3d_swapPair2, eax + jmp skulls_draw_controls + +skulls_render_phase2: + inc skulls3d_timer + + mov eax, skulls3d_timer + cmp eax, 20 + jbe pass_0 + cmp eax, 40 + jbe pass_1 + sub eax, 41 + mov passTick, eax + mov eax, skulls3d_swapPair2 + mov curPair, eax + jmp setup_pass_pair + +pass_0: + dec eax + mov passTick, eax + mov eax, skulls3d_swapPair0 + mov curPair, eax + jmp setup_pass_pair + +pass_1: + sub eax, 21 + mov passTick, eax + mov eax, skulls3d_swapPair1 + mov curPair, eax + +setup_pass_pair: + cmp curPair, 1 + je pair_1 + cmp curPair, 2 + je pair_2 + mov swapSlotA, 0 + mov swapSlotB, 1 + mov xA, 50 + mov xB, 138 + jmp calc_swap_coords +pair_1: + mov swapSlotA, 1 + mov swapSlotB, 2 + mov xA, 138 + mov xB, 226 + jmp calc_swap_coords +pair_2: + mov swapSlotA, 0 + mov swapSlotB, 2 + mov xA, 50 + mov xB, 226 + +calc_swap_coords: + mov eax, xB + sub eax, xA + mov distX, eax + + mov eax, distX + imul eax, passTick + xor edx, edx + mov ecx, 20 + div ecx + mov dxVal, eax + + mov eax, xA + add eax, dxVal + mov curXA, eax + + mov eax, xB + sub eax, dxVal + mov curXB, eax + + mov eax, passTick + mov ecx, 20 + sub ecx, eax + imul eax, ecx + xor edx, edx + mov ecx, 25 + div ecx + mov archY, eax + + mov eax, 105 + sub eax, archY + mov curYA, eax + + mov eax, 105 + add eax, archY + mov curYB, eax + + cmp passTick, 19 + jne @F + mov eax, skulls3d_ballPos + cmp eax, swapSlotA + jne check_ball_b + mov eax, swapSlotB + mov skulls3d_ballPos, eax + jmp ball_swap_done +check_ball_b: + cmp eax, swapSlotB + jne ball_swap_done + mov eax, swapSlotA + mov skulls3d_ballPos, eax +ball_swap_done: + invoke PlaySoundA, OFFSET soundClick, 0, 1 +@@: + cmp curPair, 1 + je draw_stat_0 + cmp curPair, 2 + je draw_stat_1 + invoke DrawCup, 226, 105, '3' + jmp draw_moving_cups +draw_stat_0: + invoke DrawCup, 50, 105, '1' + jmp draw_moving_cups +draw_stat_1: + invoke DrawCup, 138, 105, '2' + +draw_moving_cups: + mov edx, '1' + add edx, swapSlotA + invoke DrawCup, curXA, curYA, edx + + mov edx, '1' + add edx, swapSlotB + invoke DrawCup, curXB, curYB, edx + + invoke DrawString8x8, 40, 48, OFFSET textSkullsPhase2, 0000FFFFh + + cmp skulls3d_timer, 60 + jl skulls_draw_controls + mov skulls3d_state, 3 + mov skulls3d_timer, 0 + jmp skulls_draw_controls + +skulls_render_phase3: + invoke DrawCup, 50, 105, '1' + invoke DrawCup, 138, 105, '2' + invoke DrawCup, 226, 105, '3' + invoke DrawString8x8, 16, 48, OFFSET textSkullsPhase3, 0000FFFFh + jmp skulls_draw_controls + +skulls_render_phase4: + mov eax, skulls3d_ballPos + cmp eax, 0 + je p4_ball_0 + cmp eax, 1 + je p4_ball_1 + invoke DrawGoldenBall, 248, 120 + jmp p4_draw_cups +p4_ball_0: + invoke DrawGoldenBall, 72, 120 + jmp p4_draw_cups +p4_ball_1: + invoke DrawGoldenBall, 160, 120 + +p4_draw_cups: + mov edx, 105 + cmp skulls3d_choice, 0 + je @F + cmp skulls3d_ballPos, 0 + jne draw_cup0 +@@: + mov edx, 70 +draw_cup0: + invoke DrawCup, 50, edx, '1' + + mov edx, 105 + cmp skulls3d_choice, 1 + je @F + cmp skulls3d_ballPos, 1 + jne draw_cup1 +@@: + mov edx, 70 +draw_cup1: + invoke DrawCup, 138, edx, '2' + + mov edx, 105 + cmp skulls3d_choice, 2 + je @F + cmp skulls3d_ballPos, 2 + jne draw_cup2 +@@: + mov edx, 70 +draw_cup2: + invoke DrawCup, 226, edx, '3' + + cmp skulls3d_win, 0 + je p4_splash_lose + invoke DrawString8x8, 24, 48, OFFSET textSkullsWin, 0000FFFFh + invoke FormatNumber, skulls3d_win, OFFSET hudNumBuffer + invoke DrawString8x8, 236, 48, OFFSET hudNumBuffer, 0000FFFFh + jmp p4_again_hint +p4_splash_lose: + invoke DrawString8x8, 36, 48, OFFSET textSkullsLose, 000000FFh +p4_again_hint: + invoke DrawString8x8, 56, 138, OFFSET textSkullsAgain, 0000D7FFh + +skulls_draw_controls: + invoke DrawBoxBorder, 20, 165, 280, 58, 00151515h, 0000D7FFh, 1 + invoke DrawString8x8, 28, 170, OFFSET textBank3D, 0000D7FFh + invoke FormatNumber, bankroll, OFFSET hudNumBuffer + invoke DrawString8x8, 88, 170, OFFSET hudNumBuffer, 0000FFFFh + + invoke DrawString8x8, 180, 170, OFFSET textBet3D, 0000D7FFh + invoke FormatNumber, skulls3d_bet, OFFSET hudNumBuffer + invoke DrawString8x8, 236, 170, OFFSET hudNumBuffer, 0050FF50h + + invoke DrawString8x8, 24, 186, OFFSET textSkullsControls1, 00FFFFFFh + invoke DrawString8x8, 24, 202, OFFSET textSkullsControls2, 00A0A0A0h + ret +RenderSkullsGame ENDP + ; --- Player Input & Movement Physics --- HandlePlayerInput PROC uses ebx esi edi local speed:DWORD @@ -2974,19 +4228,22 @@ check_target_roulette: check_target_dice: cmp eax, INTERACT_DICE jne check_target_skulls - invoke LaunchClassicGame, OFFSET GameDice, 7, OFFSET szTitleDice + call InitDiceGame + mov engineMode, MODE_DICE ret check_target_skulls: cmp eax, INTERACT_SKULLS jne check_target_coin - invoke LaunchClassicGame, OFFSET GameSkulls, 5, OFFSET szTitleSkulls + call InitSkullsGame + mov engineMode, MODE_SKULLS ret check_target_coin: cmp eax, INTERACT_COIN jne check_target_skill - invoke LaunchClassicGame, OFFSET GameCoin, 6, OFFSET szTitleCoin + call InitCoinGame + mov engineMode, MODE_COIN ret check_target_skill: @@ -3382,6 +4639,14 @@ leave_table: je engine_tick cmp roulState, 1 je engine_tick + cmp coin3d_state, 1 + je engine_tick + cmp dice3d_state, 1 + je engine_tick + cmp skulls3d_state, 1 + je engine_tick + cmp skulls3d_state, 2 + je engine_tick mov engineMode, MODE_WALK engine_tick: cmp paused3D, 0 @@ -3425,9 +4690,29 @@ check_shop_mode: call RenderShopGame jmp present_frame check_atm_mode: + cmp engineMode, MODE_ATM + jne check_coin_mode call HandleATMInput call RenderATMGame jmp present_frame +check_coin_mode: + cmp engineMode, MODE_COIN + jne check_dice_mode + call HandleCoinInput + call RenderCoinGame + jmp present_frame +check_dice_mode: + cmp engineMode, MODE_DICE + jne check_skulls_mode + call HandleDiceInput + call RenderDiceGame + jmp present_frame +check_skulls_mode: + cmp engineMode, MODE_SKULLS + jne present_frame + call HandleSkullsInput + call RenderSkullsGame + jmp present_frame draw_pause: invoke DrawBoxBorder, 65, 75, 190, 85, 00151C21h, 00D8BC6Ah, 2 invoke DrawString8x8, 86, 88, OFFSET textPause3D, 00FFFFFFh diff --git a/poker.exe b/poker.exe index b874ad9e7692d444b0802da0f377fcee7ab23c83..dbed6aa374ae73d8ab0a5d3bc82fbef0c064ee33 100644 GIT binary patch delta 69580 zcmb5X2Ygf28#kV`O(~@%fL#>2*n5{%!V+Yu6e?S`!li;jn@~V7g;0hS5UwZ=kP!JP zZV?njpb(^hpn#&N;J|fi95^Y0-( zcd@@^U}KA=xR2FRU!NS&%GTRzDYmZ7O4ZA(F|j+^7^>~`)7FO7!L!7{P$&JGHML9c z4X~dJ(nrdp(Z3(B!Hfk3UuSBFOIwMHGsXI)e)cWxhxM(4Ci zfP&cx{C36UTeL5uEEX}LmDS>@v^ekbrGNoyjFci`C|CfB3?=58m`@o?Ce6*JIa3hi zioam+2E$;gVXIZHAt~*gZfUgy>Y2qD&IGe1b7xEa!>H!}?Xa|eKP=GUe*b5OhbS>u z*Z(N1@qaop9@UKjcfy#_M-N6>MwEV!a2X!vf=*(7HG|L#1b?npO9o9=q8ljmFU1p2 zYE&@03bR2={hY0pHBqk~{T#k`MlbK_?`siH{1pt+tQJFTbqGr#Rvf~b5i1B`U5VZC zm%cV8z1If9y+WMP#M*~2jab7FHjh|h2wOp{nzYef5WaBL@Z%X`?}xBm#14nBBgA%v zu(N)>ZA_zXhd?U{(JCoX6vAT2n-RiNh>Z(j%?{}g#5C$jTC)&sAhFaCHkw#m2-ApN zyJC1bkJ!a4G6r7}emlh3Kx}UadxqFcA?!_J-Vk<@n67MedJFK~Aw^utvl>OB>yn60RNM^dlA-!fqq>`=5sQcM$tFggM_@7u%>CNjpNMhlu?zggr%U zLkQbJ?EVmT=q-JGY$L~E&_;!5Ur}OE2>Xp#P6&&lWa|)?KrBO_9GlV0N$}6hhKHSq zeILU55&JZR-A3$W2)l#W!OOBG4iVlM;w&Y$CWJjiY;g#CidbO?+d=G3X`_2WIpE$Q z&imwa2w`6lYZStMBbF4xqRRDCHJVt<^~xI4>lK1?HW&>0^W(IQMBbK2P3`$YeL-Af zYmUA-F3p|T7u_||zGN|m&drk^>|^O}>k697S?rh$Y@zEekE0U^7FYG4trdW=qy1j~ z&#|?m+)cZv6lrS)v1x$sJzWKgP#W%VAfa5TEMq0kvlva%jP5)Uj-=9GiTNAc6rdE*C?$Rm;S` zU^Z#urv?ypkZy5y-%Li2c;}fOvCjIXiS%^wpOtQlrO>}(3Ec}y?*luDVfed+VJnv*qH?}Pq(g&4VOx)b0kb%p1hWZ<&w5xa zK31IK`mmZ=^-#V1QQ~1J__bGv+$>f~WN#0BRn5B1scv7o9EBR;o&gHN?QtY1)@ZOi zj+8|G-I|HfsIG`_+?-_}D z`&!90se%fW+fo3v)F;O$xkrBluXkpu@VDd~$Z6#`hyuiNm{$=~I;{T031i2M8}0W^ z28WhI{8|PC{W}4gtwuTF&tR*O&dS1yYPq-@or6jfX~Sr?nxSSR4b8T<8z$bR7}oRS z#5Ak{a>dKAB$cCc5FDXbaQV*H3@8 zb|d%4P`eF$q@%M_>Dki6C>Zkm88J7a%HEP|7Z z427E26$gR64Dk!#gATP~)IL8#tv0as(JqsH0c@5S?ameFrKrcj5X8D>7CTtc-ma;t z+xB*iEp|)+#$JMDAoOWdSqj?> zWrB)sZ&?mAE>ULOy{zv6*k*^XcYO;eTmPP6`SIdwXieK@DYloahtYpcw6pciL~{-> zlFZqqN{+cLh1Vz9GvX`;fa_CA#VN2#jtzljq8KwuFk5DFO?vK-p|qE998l3@Tr2EA z4Y6hYdH9b?#9p(u9F8BmQ9+k3R;yJdCFie?5#p zO8n_CzK!@J5_ikYOMV-K%@x8>GhVfIx zlZm@!owU9uK&TcL7(x6}J+sD#iGLf$&l3MIj8A_DczGC~NBs3LE{H!J#{VS#2yj_{ zq|VHDL0BFZSVp`kj3=K2K0S;#BR&fF*fHqGW=maT%k&P53F7UDj}^;P|1N$1vA%AL zs1p`aSg-+^T=by~swI z8#cFr__TkBwPjNb4T~ib@AVI{9V9mki#<*}CDr}+m|SDvtzo%OiT_;p?_wj_fFFZw zgrq0&WB(94OY*B>u>-_?Rm3!vf8$un17W!vi7%`or^J@B)$a_8%_2U+5Hmd4N?M<= z%tOT6*VTKaGaba_ohHF=sjMiuVoJhpVA}med#>{tiAvLWzs#H2Y#^bl; zR})j(Su87~WHlu%7PMPKH2u@m+qqR>uAriTh#`rbchtJKul+TfvGRQnE8llZ&!SUb zw^WuYDOFTzgj8Z(@0I$;VWuDF|5v3i6Ijkos-PG{3*vq``*-}LV=$zaVJypKSuaR6 zrIojj&XvZ;--U9UGhej3Bk9 zL47|&olI(?L1nH<*;%Bfb=IFuOKffM)`fU$$m?iO7lx?+BQ>Y9{zY2ijRr3_#5+OW zEe5rFi24z!BMoY!5cMZgCv?`krPpuV34P?HuaR)QzYPXEma)4owh8p4Tt9l)vRFta zb<&`8=j21twp!z|AG zJuLWGDX|H9+FcZ@OXn?gen5lkoTpr^rl1#4b_HdBzy^!HKBKlf-Kf_PvYsT1`#xqt zFxXF_8G25|flfiVCo5pa)Mz;*y9W zk=eQEcF zBN(iP6&EE|X6s|J>UY8z(6Q{-XE9{_5gs%`*Ya}E2-XabY4^&ZM&Fjz$eOFalhv%} zKSsbcRivv9XP#>oX9rKv;)*Ht%S#8p);m}4)S#8S5j=hB3xupawo&}r9^wxH4`$1Z zT4s*hZV>(0;HbQSRP5XxVza1r4QMc%DJaI8vU!vpHmY2<7qhM0MhSMha@&Ch2nl-hUogIoccB6Xj7Cepkfm$zfuq zNzJZ8HHnjx^}ia9bmMZ6AMG5!Qa|Wx(Xx4kI5G~ofi0F+4l)WGYYtE)UwF|fn1m=R zvLRM(YXTlCI@&L`ahP{Vf~$?Pmvjb#LqXSWr45OWC;GwreJyT<-wNC>2@205E-3Xk zW9c8lSR}QjF^O_rp|z!LiAGSj3VsHow_m8mhjOf~a;(8wlrLTfTNxuRxUL9hdl4~B z;ybBbm9U(I++m}3_ePEPvkr%=Sq5DAv)s1GXh%s5P1D!)xU;e09(T9A=8ePlS$8ZV zCVL!<67_S9TXS0u$c^p}}ujgmjU^(1Mf4fO)64~>?9ti$E$-juo=trAma66M9 zarrNVi#jUU9qAKxPWt=CL&8hOHr}vuC3qYxD4{S@jDkNw8!@RE%%-RaR+ky(dfUK% z2aZd-JZ%gee&t*+xQ7Miq*1ZZ-LBN%J6E`VMd>bXb*_a#sULpY=x4523|uXWivZmi zID&m3(Gs((RzmRwoZGTxU}(?cs-w+fIfEfA9>M+smRO<~d~FTM9ZCKHg<-)_kdk9_ zje$~8Egyp;cO~TL>({&tdNm5)1{;Aj;*AEO6037weU1EYKLPY8q4R)*6=r+1cP94e z;Jg(E^j^&x$)VCqG3Jwagpgd|uOjqj1mZp*2HQcRhiSg_OPH#ULd9!n5itUx(gxD? zv8I_^)67k#84Jw}8##R6V$@_e?(A81eOfk3ztF4!TR3mzjqSZ0oP8z0)a<{N5C>M@ zNo_!^RxQXanNr<~= zzEy;{L+D!zXm=|_Vc+@s0Qc_&u{3&RHP7KFj;gyz~K7WLd`5Z#JsmG7;5 zBOr=y%G;V+3PwMT5e;UOESf^f0QUi$h+BTL?_nl@pZs76U_z{gqOleV`j<&2%f@Ob zw%h~+SZcG)cuii4v&9u5|lfK)Rz8isUa>IXKGyKE< zzK}HhKS3pV;ge}!@-P&=tfzySVlP<+e6eIQ0tGjeCay;mMR#Om&Ov+00E#n{d^4C- zm`_{@RVQxFm7F)c%q$;s%*)L3F~_{jEFW{syPgnp%*)L3F~_{jEFW`B`PRt3x`ljZs+alcsf;VK z`5Z)l%g0QEnfBoPvsr<(7FdD%;R z%rq~1iI174#2I({lC>0PukkVS6ekLtf_uH}L7vK3RGz7*SQtAj1(Uq&QWzJ(Vh>X+ ztOG0s{k`mCo=SHFcuZEst3_T5FMFL*WA-W*E?X@Hb}zf3Vlkb?{m7d@=D%eM*2_lD z1dLvl=jF19!?fK~S)(X+VCmVQJ8C0WN4yh|CouE{tIEVGnW&9iD=Cp(|0TkOlM-3~ zUm}y02zQ2pa{U>!y~X&8`B>kJMNq>ntQ;GYcCJn4uIPbLJ9GrVRAQ!!;nbNK(qVc- zhyS#VlQG&vhLh?lKf1}hD{X}dHxKxb@s8%fTHK&+GzFIxj& zZ5aa6VcX64#@4Kim39jd(GMABf89oSMj6-X_Se&f0=esxJ0ksn^8iQsyU793*-~cf ze~*b=QCLJgDu)t^9fPu7eXm`d)taP#-v0SqR2~}$$;c#+gSil4Uy4PEfyCOE;_!&2 zf?4gk5@9c4w^4FXx?mzuI%6RExelpp!ASek7fgP%ed%Tssb*iQn@Eg(=`s_k?p#!{ zl-QLBms=GR>C9I^G#7bvu$ptU0%Dv)6;R!IQy|xK#p)WO@Tm6A&I+bd^ddJ`6k-cTvDSc< zC!R#-C_On`j3fO;suW2&j~nEQ{-Da*B^%Z2GdkyBVLG;D--D0ZcP;h3*=g2x`X|}x z)|UF8*$sQrLhuZD-3gsPf&R4%YXXtYZCn>=M?ni_bGQ{7xaN}!w;dpAOIzyWI=7U2 zA8aiygd&|u+PW?fodp5ER!VS+1Rp0jilAJ9IW{k|S_<3BNvkl;k%{f$!Wx>Z074z4 zyqjQC2`(pCUxGTp+7i5zVDyP#Tu?m6#?2j$wUJ)COGZ||KY5GYKWuo=#+!w5dBlso zwirg8Dc)MRb>1Zzw;^YA$>gfg>Wud|IGjf~W4XT`bIRTe3?s28#+3eZaMabS#&j>f)-NJi9R?FFKl-0A8Hg3bNv|Niob=H|KP9?L8jwp^X`neS1`P|FDA_h-p|)vZ8R^MHyU?Q|pjt{R zeM9$lGkAs7gY1>qk*#U_61qKt+fx>=m?0LYJUiRI6A-7Bnk2*Vuvj z@>;=j(duIb1M%{LfoL2~bL6CO0OQ9a6V2ir?vdlE#W_gk-<~_byYyvg8q=`jY0S2j zLkb&tDmxV3;Hj)z7!hco_IS|zmOzq%BM8STm{T;5GH6>GqgHuG(7m`N#9o@kUfNVY zl2bFEyf)y8{iwEI+fF7X)b|U-7V5K_Owu`ZlOI0M( zPjE(?)>!xUsE6rlZ;!g1m`(}Qsn8}bs*N6MlRebvoN;0`)fTd(NR*T-K0FUxjRl{AQBR z6`#0-T?LLjzc_lirvU%?7bF{YTAKLAARmn@&tdWiDG4GQ{9v{Oj|0T*tBX{d1~`1; zG&fHUUAXIo`;^hV$rxj);g?q}V(NDYj4Mv=x+#uo%0Y=3bd*L465<4%T{0P_`@V(1 zz6TVeM2y%;`tr&8Cq1(!axTo|xczfyK-UgI?q2LycpP$f)ETQi(+%`*K=(MfpvU4; z3y}04McZ*}L;QuWBtU+#2>YFC7w0%f#vxtwalO*AL)QW5JfWRib{;v&BHzU13g}{@ z(Aw>V;VCeTj;X)UE0qbSZiiwy+aLyelc&9J4F8ojEv3$I<$izLX`Y<()RQ3@TR+ zGGSuGiH|~+sQ^Wr&Nlyyylna=UNqUqBr#4>`~LvZ2PW&eed<{!>ofbLuvsicZN*|P zwpwvo?D7-Z{SjK5LA!4gng~dI4~sYkc=Sh$MJ<+ctO;Jjp3r!Y!i6|BC!S55UBz&(UlgzLoWYxW(q3hQPPt$Ttwa zjBb$MTXen(coq+49)O~8%i_V1VeveOnuF{uv^$xHG+UqwelZdtbCi=vCsg0QlzW~s zYzkZxR=NfJA}=gak!6MM66g zA{C*GgqukCrA(^4M1n@b7bJ`on?MN0)3nDiK1=U$W0tj%KH=%qdhu;^LuTU9{ieAMA3%R7Inw4!VNMH- zeayzY`eign&RSg2I0`#voFBuJL~E&Ab_hCds*zEe)+h1RSNpwWO`Zgox9o-Cjx-lf zdC8oA(;_Q#T221{=h|ZacZclRlmTE~e1@0Vdqnj98{aKyAjoGhUi5`c%FYJm4Gzs6}!r1n~n^4%At-moao!%O=Z=BkE zq0vCJISH?&Y$3a0G>jW*1ReN!DgR=Wj ztC;p)gO<=o4NB(VWDYxKYerL0w&uNI^MhHi)hu{2P3%Lb^XL67DfVDz1Zy$V+AcV+ zthI(tuCUUOBo<`3;Yd4j0Ez$yNQo%Qcws%7QDZrZz82|7mb)XH*iZuCMYl4H5A*2G_^Xx;ULp zJHv*1>qBTp*5sVH(y_Dm4<%{SL`9{@RR7i51WbOWF~QF}k|O5%~gJ=bDf4YcHgK!2mDPCNJW z$$rP@X*Lo+tkLi~B09tlVG|%edNo7sS%D+NT9jo+5>R#uZPVI4Ol$bqJSB zEq3E_8%YW(JFuQqO{jgF>`=74zcD{SJ%|BH!i&!RYsGfumYhV)-WTo|sxrK7Yr((%9xUFz}j_nBITiBsAs>BJPlM<6wjuV9oVH&r?V?z+4K|7VF^{8lVf^ZEU(b z227&?rkD*d8@f34eAJ&?o^GD!G_G50gkkA!}M7P61;x}eqtLr4~~mIfK{+v;ZluYuX)*UJ>RA;&1>DJst@e_sl47y zf|@cA7dCK?Zhw|{hnu7MM;sd$u>99w0+dMF3xMRsFUJ>gAEVWf^!1=~lI94dH6m~B zRe0$|bE=ucNkuht+{jB-Ide<|k-M2<23LoxnaT5M@_u&&CcS8!fzcYVeAz8{drJKB z322>28zu!w`;@ePq&ZC5G0@6w99_Ar5wHCYs|V?*jf27}x-}fjA+ZH=xD=>5U~>SI zhnUo8DF@xcdZqPCSgkzK^pDW2U^MkvIXhGx=xKo;!vI4i4RB=66W_oWtDF|981Ojc zOyG*uE^=mZ4}1|0%ZT>`6wD?!m`zI>t%!P8z?YFv2mkuW2meGBTR=-pV?5-IUxH{9?99+^VR%kTxy@}bX^AII!9AeLCB=!~&}N;_NJrKtxSjLyUP#6k&$cx-`-Ej7)Pkf#Fs#C+1@_QAVybjiZm}imf0W zrofH|dk^DRswT5s@gPDLNLJjRo`?OYjU1?QMG+WSeh=o7cL~258dlX@YH>CdnefNQ zrh^AOc=R&#^XrHdO6T(HXI!ab$8R)?*1;5?OG0kmNVywQZac}E;ZtsV--NDfVoznK z!Y=zJVf|IyBiiC>6qJI&Yzm1teq}tk3Wz-GxzZtVZgfyu3=I?$5CrkbFFZBQMwaQi z9rL-DjYUO0W^`w^xpILipddy~LDb_%E(}PvVPWvxUR32b*j4dGTQFon4E6f`qnmJC z;^n{?zsj;f&;47LHK|0yz5FI>(Hwm77!pe*T`JJ)lkUnTqzEQavF~RH{m5L3=KwpC z+JR>Q$!z`t5XTR<%w@5i7G(iP!4Tce0^R_6eF2Z706A7{=X5W}iq%YSIV=qQFf>#w zFljlY$)Q4a11Z;(G!7NR#c)&b1`w+RKgdgBS%F(I#)?mwymG7ve1H(+1R5vD{gbmo ztL@!*?%uNh?yPlV>+zlwKjpR&CN#!`#sfm3Xz0l%bf*c;FrZSL=)5JaG#WRFw8B%B_#bpNT$x57P_IXXE7{|4D=Ne!6?JA*hXl5I9I_^^G>=2Z%9XIIH*Oe3 z%4*5uv)q!!ZVRnC6LyWRM<%fGcK40{Bb&HVr>MfD!AO4FpO`zdP3>1-^hDriB6c<-kP94I5Dji zh>@<5;)XzIEStia?H7#a!iC92Yq1Zp>HHL+Y5Vk#CbsSl<8n40hFwvI)SjSiqELko zLUQo*orFt_m3e_s`mr}RLGL}O(?C$Uyyx>WTDVzfqOGdNbk^liOa&BL$|`Zkb=hEy zUZqDEvNtEyAIReEC3vdXB4dxkVD^&Q!0^0KyYJ)%yuHLqE<<7-tf@GRK!w7C5dz`K zoSck!be-G)-{U4{@Yw>0%YgnGz(q7GYIW99K!mfQG#KcbA1U0pjRDVGw}GU;Jh>hW z9G~2Xw|V4#yxhY_h4F|Gzqx=M1Y7)g9E5Czlf|IBMBU&(mJyB&Be) zRxa}Uzo`$J(txvvd8to!;9;XlREBoO>{ulaqYCdVx7`9Ue*RfLZn}~gS=g&IjmC_{ zl-YL0Z*Ziwx>Ce)_(>UT!kOC#R1L~H1zwU3i|ukTk%DKnceq0RWixj@79&h~;!V)i zMhVV>xv;+Bu2RtUJif&_@QhnCnMz%5oxCd5`%3jiQhjrsZ1x?g&pjvc7RX#1eTM%Y z2UkOhMU9M&s-i5pJj%f`THiD^wKkUW}(J(OTQ6g#eV?ObXW-4aMr z8np`I1HBbkyC5Qv9oqkCrCI4@7s$y|#0MKl6a zuF+qfo>1LvBmKm5C+6(FTFWeMf=@r9-qjJqjUl|NBQBTs1CO9oZO3VSwU(568b&+8 zD0rCRC3^$ezns?hX(_4ifgKTIM@jZHvfI6Rz{9|L^{9qnpDZ3xK* z%Y78kDRNUulTa-aiZvAju|u=Se{G?}hyHU^4ff!heCC=%Dr>y0I8@NIm$M zn-`j6aU)EwDsbK?O6comX7z)kxLp_WEypV@_2=gQIuA-ZcHR5BXbVOJhgOw>wO>r-! zTba@PZ)sd}LEHy%JZgioDpCP))=E1ciq=dHnlX&l;D-?<&lz0VMv5`u`{%2#ZZ zLOO*Wp;{TV#8+4oVi>H8M`E&ibaXaX&(&-t>lX}Mfqi((hY>%7 z5*A_=ZCOZwh1?EHGKN^^v_M&^E8avZ^>buPxo*&2q;Ol1u{C?`6biO$Z;@1=o^1T+ z`uR$?-jgG*vt2c`FMW_YjfnfT(+>b-2KvR_pP;B07Xsh=1Pq)2QM-8&(1#xan7tT9 zi#wS`a%5NxqRj6urrI*7F{|fMb2>F|hfw|qQTKq#Yj?OfZQfcIM9G3j03mL;fw>9L zHbT?BlJ4yrMTJO`pFUW8o*vs_Bl|EnGqb*wu@%=2Fr}(uD z4^Z4#FwosgfqH@Z)ibOEmH|hJz@_%b%Yies@%pC-vG2oRu($6#902kP5Z@OH-YOYi zOT;ZUkW-;J4@k}r3UQP1vw{mH<9CHjBjYk)K6El{6z-1P28yRF%C{55a@#BT=BM1Y z+l2O-&?!K0F}Qy%fKqonb>Ltfn83qmXsno^jnV;J(@>uer+wyeNK-D1h*V=sDQ+;H zvL1)DPxgAC{3s*Acd&S+J5P{yO&b_!~&ce(8ZAlAU2=iSNf z&{9f_^Lr`62-M^>0pa89#}G)jHv24Nkg8WJ5$C6608j)H!ipQC6<_jyoXIWb|q*i$pb0H9?_EtLV&mmV1~& zl_Xw}M5eBIg+vS6@`NNZg~byj#*ny65}C?kxmkt}M6t`n%P zV6JAe$+d=r@JQiDQhIE;O#)~$Z3^eSp)jf@{_1Zq&!thesK;?eYT$IW1gPPlMw+Sd z;qH(Ib6_O8kl2dZ+sAYYc@n3cXN4*rkTb*EgwF#G7Z?qq?562N70Vx-^o8-K)mSHM9J&#lOiR++IDXY*h@0hMY@ z4XuP$U%WqLRio7(IO)7X#(Fa3;&Uh&e36V_yaUtPUWQ<<)N`|0+JWzJ$nnRO?s0H< zw>T4n@dUKG3_MSa!}jJ>GrSt zprS)X9LGhtN=x1pQpu~Jqvv_Xnn_m_ERb2?CNpIq<7+uhV0GGYN7-I z2^%iH>mKm7n@h)t$4$Vgh&7id{SY3;BlRL}g4k7m$PFRVw)Pv}xC(Wnr z)6``}W0DIX6?g-$15D$Dg&6ScIAOF4k0vf*+*{DfrR5M`K~z4g^E?(6STSCGhwF&i zPyq6iL=u5`Nr|)(^wq_e){iE3z(g>cEaBM%Lvp-%5=5MGZ* ze5sVjF&d;G@;;k@I0Dgfo21E3cw2}|Ks+nCk|w#*oXakzNIEfo_->3@&0ywle{e5Upa(*L+BLP!E6mh zip{3Zn;>exkiA{9XOg|xWN!q~OO>3KHnNIR3;4uU3?1o9M;1Xq)C3x6gLBIl;TC3d zeRFY=HRILSi>pVt*S&;MqB3Y-x&rm~-A3~b(E0OgX^d$wTT%)kghtkQt6CB?MHnTH zl*6K|NHUZ74tn}~G4y%7Q_1#KB{*C7WYa5Re-O)Ux7CSJD>UsReSoKWp`YOQ4`0S zTyg3eHv2m?s&Nh59I(3fk9RYP7N_%7l;?06t}?IkJ~alys=DZ%P6c_PJf4ueP|hPH zFO&xnl9%AU2+1pO7N@SjTN092;8}#^C4Dj>X)m4-?4kTfg3{pS3P94}PlTkwuL;RZ z`cDW+gQoy-N5X=CW_@dFKd(Y7WgB(SGFJm@8m^JY!Dw2YX<|EPDS7!Cb06ZMjx!v5 zR&8d8u>lxm6EKLWXz4pCvyRq2UW7!u3n(WF^phdvj3cLvoM8q>6ro051lQtYkv=h3 zGzVI4V`2P=-Y6eeD=y3?vd*CWmlM-r+>NAcicK@Vv@jH<+Jdd-$!0cLD~1QF%{Kh&f`4iU#p=pYb(!T}h|2uQtrJ<92|&wj3;?IZ z>tpf8CE0~;MMleLb%5;k{+v=0t->ClR6fTQs##p9Qul-^rPo^#n zUOTC7 zz|$;LI50OtOVzus%p3q4MlOw#dd`ByvNNy*SAP{L+Tazg+}yn(fVWf8*jyU>=1&;2 zYwh$WS2nT^*AK1i=;ksg9z3~XdXZRgzBzW}idV`|=a)2)ElU6$A@nH(M9v1F>nQ&& z&|r3Tt|xFs7{qMUlYz>Z0m7@`;e{2s;#sLfI(jFbyZRqq@5LhBT6@ZIgGJK_adDz; zA%rHvVw6xJp}P5iW)R9HG?CC!LL&(6Bs7Fj1))BKGVcP^h0rWQtqHwOs3DxYpcoq4O58Xo+h{LBS5RuS3l8j*Zh5z_&mv% zu~UFmqK&aK7KzCcVcw`S23^}r139+%486Rx%0f;5 zp|qoQj-K^EQk?>%0N(#lAA{ZiL|(gpjy~vtdSKr9Kr3s3zV3l`z2?AJ-y+#OIFS52 z&|IGIh}Bk*(+nKEVu4q-S_uisB(TMJYtGv~L$|J~Z=J2Dueu`+xAVl3xrm--pRKQ6 zH9m=ix+FjrQ|TJ0YDu$o>*@~jVZl=_CRiNW`b{wAaZUOG8XJ;bDcSxW5MF?c=m}J8 zM}_mNX{oa@38%}Xz%Vh2SejtR&#$gMM6AA;Oe|JANvxiHcS(K?Ee_7-r;7gM#cA%F zh}M-^A&$~=v^WG$wWBPw8w))~)O$D37C^CeFkGDQS}g5td^#n+v1kjYeXY>|c%6LI zM#jz892kyXCW7NB8|cdh>g$Ft9BOEcmc8_=m-3#n#x30kJ(Z0MB0Zw9uRTaX8^1jc zemCY$F9Ck!>vFxcfkPs5lRcHGbF1gK7USVa;D-E(;x+=YsxJ)$9E_K;4t`r)&y=Ro z(8@IFW)&yLc9aJ%hHF2wemC=iJDbjn=dYsDvf;agi7i0%W@YGKu36xQP>!uJzU?J1 zT9K@`%YE7yczPArVOlK1w;cU6zo8iUvN{>zrDgkT8+xl`v@gwrV#REHUC+V0Qo4~d zGQ`1kyM5_EVB7Eq5HHl$&pjBE19Otq!eo`mm$Be&)5;`9J^K>AI*2E0mSNM^QgIDm zC{E8Q)r%V=Go{CAWy&kH~F;0jr`W(xKeOQHSGE#S(le6dN3tz+46Msy~pgU>o5H3dYSm zoS{^3wP{3dQV4Ry66mgAylK@EXrtg*!gy@~%d0^c8_R^_2%{?y=0Q_CS%gVnW3+Mu1wf?#|`YNJL6t zs~-3`+nN)#if^%YrIe1Sl@qmI!g2b24>f3bJ-<;EeoE>1gdDy*dfoaa6RsC)S4FH* zNKBf)B_&i;T-c!m!=Zx-mb_tJ7B1f;?zv*e!N)k1pf6qDDH>$op*s4$^^Oo|eYkfB z9Pn_)C{&UkJS=2F42`0_Z$b=)qA|Ywh+|xIV#}?bEF7g^_6p)IGKS=}2lTxUr`APN ziJlyYqw*v1qZw9QGiG3DUwlBn_;9NAfL`N~)cTa+fk(*1(t4gqVTzEk5 z^GI?R3h+l>@~cAtuNum?X`drO^CPvp$=X6z&HQ-i)al9Ecj6J#63X_k2*cE*Mz`B>n1vTN|lRqKn6 zfPbT?brZ>P@IFFYihErlGVd_M^BB}6CM!%%QDsy|3~C|PA!(~J!U*+IMkdnscNn!{ zq#A#$WJ#tJpLjqo+mMt(?wjOBz@b>JAG$JR!2EGT(p_Y(CR4^;tHqd;2{L~o%V@4@ zpyiS_l{D3eHAA$aN}bgDAzBV;Mk^snBw4@bQ5BtdGG#Mr#f+?B`ww*UQ1jIflRqO_ zwyS388YUkhS+;;?nH?s-0x}Nh*5JTg%=BD@#i>}}#z=Wf8K0Mk%;#u#+{j)pfgIV# z3rA|1tl|YMHcRC@>@ikwB*+!-f~1};dW%qNitVW?#*rddEaBo%UIA?aGbjrQY}C3_ z`~gz3Pja_Fj5FnmK=nA}P~}P&mG?qlUT8FY7@pT!2+vn=ZL;@1sZ8B^*l`@^7k|A3 zQTeL=n=un;vrskB0>;GDXYe(dhU8uBkJn?o&mcDr+;W?nBOyO{@exkL@gpX|x;77k zx_AN7xQv{KXemAiP|=(GnGt|ik#7~FO+JV?++p%(ksl$tntZe_t{_bQE$hcaAX225 z0-RRF=ZiuGw5EY5!EFrX0H+#xZLaoD;=%VguEKMx3-bv9esr;n$!{NN#| z+<_||k3)`NuG(51w!oj$5t(~21>@%kj-wCpUUAkF`8bF6z!Mqr2-g@$XfK_H>`*}5 zpTK-;P#mDhb+G!ifHoA}PSHk&=&cl$lseaoMpASeMK4d23rq1bmrhAeP=a>@8g!I- zc^=I0qnhRqEqGD0&~Ge6hJItAX6V-yx}i{12ipj!EgLkVpf=uci>Ep{5r|a9MhY41 zNW5H=zpD@uxO`3O-xllwKjg1OjDi~~hi?I-+`vABHW5yW?qt$k(GC!w_|ZS#nARFa z$sa(7%#RkSs2gX{5RET|iw@Jqjn+RMlC1aH)F>enZC4bFwM{TMk%x|1d42w-j06mJ zkyr3ImNQ$u5QR?Y&u>a^Z!#ip44lK0;FLRD4fhmR(iR>>iYI{ghbwa{GxaN*vaAdA zv?nw1n`=Fve7!o@uB4powVC?0CmXn_h0kuTVfJqWR$h(Xs25>N;(_alco03WG;J%0 zo-5IXDX6E^irPpyss?Rj;)&*POBxT&k&cJv&U$(%VLUU`M?G8onViejk2(C`^>_=P z&tU~VgJJ#i&F%XceV}SNz47+SPSQ8QTX;DKoDD+dI%|PLcf}WqBkk!UyqP@n&QDcC zT}?xH#F8C?ZwWR{)iF#NyvM+kIkDH9$=GUru#^)sK=q5ZxV(_RvdDK2)ymaM$p3=; zLF9WJi$RDk#L;y&p=EA0dE6-QEl$Jyoq;8BFz_u@{=s=za-=Qy^~T049bUu!BgFmV z3OnLJ*9cr|t9L@r!38DqS;isQ$s=F>uSWk-ywp_T_p46Q9~AXC362J`jd2T8dv*bL zMO%W!eRNVa=81^ICBeTZ#t=Agh8Mx|rPM!9;ta%A4z=Q^nANm>Jbroxyif~r3RG_F zCsjH23}%OWo_2%N)(QE28ld*ne1bCBtLVssrs8rCwZRlzB-xCDll+GaGj(|IxqN;_H(f!5e7-_U=w3H~7*xs>4br>LmDp!8M z=v)=&sXuNed zW&vs>p^bnzJ(t^lHn?IT+!b$BVxNMooGUgETnkW+aDvM&`8%c;e#1C6Ojg8G8C|$A zM;1`%6h-KZ+DtZMg9+GG7UwW?aA`jdSJ(v(Rq3Mafj%#6?qTmn=!c04&b8RAu8;TI zgQ2ljsyzo>Mv0kV2Xt*a+x|E@qFUiByC0XD3((whhW*Q*w>P7U%nsF5&vVQ520S%8f{l)+<6LaX=mtES2$H}3&m43L;lD; z;4yGbOozS-NgarZ;~2*nk?D-cAR{7uRM(F#?E3f6@E1rKnvCm1qxX6GhJGyi<=aE? z$X|(gv_U+?bEuti2mWK>2tVP-zt>aW@N~M>slWbo7L(S#9Q)H2(+B;#r|UNZxtna> zx$Up_0j1|&LUGMeoVH?t-sYJ!ZXbBrgr#wd&F(Y;Laaj8Kh!V(Ve}5{E7;(kJnMyMTc_S=TPJp(#SV53z6Q*`ygk0fb1>?0$hO8Ci1CyeU9-5* zg0fT2eMUXsVUSx?Ttz@b-E&?@$Rn1c8X@xJiVxXNtKf#_k@++h4*fExu8dnjYa>Y- z56lh4LBF^y%}vQmW1u4!{I4v-?gxI)R1E}mggsn^ zg7lV$RJ42LepDvhsfIP7xWH(4W8hYyB=P8@=rX;1P|&U{#u6w$r>vbnA1;?j0qei;izbv#I{&n&ZsR z5SJ&xmqQrW9Q?(xD%Tu4$^S6|6`4-HRV*<1AmXfp$sa&|gcxh`BeC~j5iSbI+q6v~ z5V~gQ624|Aw_U^w6j3PF~9Tb`YYhZxDX6H)!tx@0oprKEm+DDkY|nXB{uoM`_ci(3!d@5h1s(}l&gaWK-Ah(b%~*R zh^q4O)2USbiK^42>Sj1EvQ5=tAo^R0SfrljqZ?!3hFAf#T)v<}wF}KD=y-xIUTEyz zzl3f11Z>qVtR}4RDe#5y7#Z-Z*MOf=HBYuXVsfUouu%J>82LEsy z%cT+V9Eg70wBY5ad_dS!S-q$hE~aT*?w_ARDEUb0(3j-fQXM=iSa1tc;zcFl>ZA2x zV=jf!#qwEJ9#vAEsMBJpEB8uJT45a2ijl88{gQknjyg+sE4&Fk%+^vo4m#HjefV_EK=o{!hO(4w z1IY5(HZ1b?ilz{)QVl+rtrDp#7|1^!VxeBLA_f z<=J^Rf+d$~;rV{i52)lwc!O82iMKW&be}QJ6EH=ptCC-aF@xn*$v5AFCIhcfvs_B*6>yO{H2m|)`pH*bKRGFV0sIXdF zp2}t7nQO}fWXP9qEQGE+$0~ft95vNxwD%&SKn;D)t2f9!68qAp;754=*EhUce|!o> zANVU&bU5G}5pcD@YHt<|b-cjUEczVw#w)mAE+WmMkANm>hKjDeBe^RFzH>v-aGBy5 z%0beC@HPo{v6}=re7*sKsCG9adiTR1Ug@b%+94l~!NFYhAj*9ZQFZRhLe{@2omM}0 zAgq|_)JdLE6q7T4ZHnm-`{#ow9ZXx_-wUBZ$`+nM**zs>#}1K^%Ft2D3^5I{>sMe% zz&Rh#v==#YT)0(Ms5c2`NH_(8NT0 zZTl4c!JSF5Nor^z`tr`Y1Auab0*X1nf>B3oSOJ~!Sj<;oO@ylPM;CZ6tcr+>A|+QL zk_{2R*MaxFzov~Igc2XP1qA%Ios9wbfs_THh#Ek7mhDG4q+KC-D#^bAnC4JN+C0y%$FpyhFC{t+rj#^*OJDQdGTg27aPnw$m~V(MR-bk)Xfno~O1~D)J zvHcYVYQ2W&8x3wQxnF>YL!>o?pWKN<^b>C+yQ!N=?kgnDp9Hiv&|o%SR4YE82%;RC zuMR}3iP7Bhevj$+J#ZnA_1aVh;ylsG$Z#e74yEO$oc!g3(($!Q{PvO!a2*eN8}E?i zS(c`=SgL#-@DsGq8Yp+&;*6hNklJ_wc{ezNJGkJ}QQ#i!*_a9fV zYs+Nk?2SR<74Q*{GE_+`nWUfGlQow0ih>C=!zz*=W1S;dx(-y8PS?Yp)`O>0C@LNO zZ~#O#pzt%s@RPnF#fQ8(gFlGD%^uz@X9$rN@@_d{4jjB&PB@A%?v@j_5yste!rYza z-EzXX!HBcCcZF*^bur+LvU0^>-3Anun+o4iIn?6pO+mfm-X7Ll^x1opYp`k8vrBFs zqOaTglRWa~!MPc65@WM`C?Y>r`*tYCv8}g2^eN046(8a&zos@N7u4@bT}>*FAL8iE z$E4nPE2#5GeU8*P&4D$Kwwcr^q^>8`uI(f>0>Sj_uCABuGaoQD9 z{~-0qUnsxg3V1MFFcRcpurB!ivWl-s#ry2Wg8CU);t5jUB{fc)G7eP7C{UM?$_Ww{ zJ|V((C~EDApngZ{2c%XfwT4zav2Ra! zfhvkJl7Gb)4F5>she&;v)bsfAiw5^2XEqH0aSp~4F@~M|YA=0HS&P=3BQtIUapq)< zB`=HRP{3>L-(Crkn|gzpN{t9=Ebpz?IpA(ijl#YlmSJ~T&XA%Zr8POL=FjW3MceS_^*G!HZI3dV@>lk9Y^zw0L?8btr!+=N zKExz{SuaNh91@JXA>lw+WCxVLxR+yNLqLN642eaQ;5lC9%l9a@ATzvyey6(ESfemr z^hdWe?q+<4=U~MbP!j7W$aOL7@#EbH06(aSb}CE_{d}j7zqcx8OKtK4AB~o?3*Q=o zH@4Wdzq;yck0iOfLTY>t%D`(w+YU!sMRWsY2q|&E0MB+;N5IsBn!~7j9=*WhklBkj0u+$6 z9a4U6HNmF=s@B*@C`g)4D2kr01cZwzMqxCskz~D`WXs7ppOCMs8|+C^lI^F-mOG4~ zDWRJvw2O9oNEx=ECfkme3`(W}Wlm8h1yHyR!%g^xYy^4xW;v6be>3-lkFhDBDqSjB(2;`E*Pmnqze zI1m3QGaLV>;Y6dW79^(<(Hp#-l06j#Ug(XYhY%|33TVM}K(7Jv*3FVf9`SBI-n787 zB8vg{PS@{wJK0UC`yeIkAj)4>`WcRE>qwtQ`X!<-5*-CJn4Jh~q6se?WDNR(sFji3 zRkB%_sAjSol6{Qqx`e(YWCv7ki-(|mKZuu*r?Pe7q8!`hOq|0Tm}BE}W6owdHY@%Y zH-RX9DkfL@^m}K} zmyvGx^c4ufzq|Ai8p1M?$`_Y;|3Z^-qbAGC#_NsWX_{-_)e=oxZX*l2cm)A~(S9j_p|dDS?jb2Y zm#PMTpxXd)rKFJs^^GjZG_oKCk3^zQ)Z?q<33G`Xf&t369pLQtmW3Gm%3^#>A{>?Q zS6i9JJi-x@72rh5#IY*~a@TWFl^6EI--As_8GDtQ&sXR6lvLk$VyhbB@Jt zsGvBj*vw0~jf5k_Lxf)<93@r|Hh%VHAz|Y(Pu`mNnlhQ<4$_TZ))`GWd?auX(eMqK z?nJxea>=b;{nnCr_?2$;iH6U;#}f^|uH@QGpyAtYKM@UISAI@3d?j{@Xn0HLAknwv zbsBnvc-0MD+=0o;FW#O9)*2V$k;p&eB3@RA4Wv$J4xxAoZ8C)p zQfL>2VnrdT7bzs#L1;eFr)X&-g>(wl6t|LE*aAX+3f)FDCIWZ-#5_o0bm@lrv-gXs zP*5S-j)4;~NTBReR%InsQ;BY52p147#}%;nUq5z8hESTg2c1uC)J4Oh`Z*W?xP|vR zqUYdG2H_!wx)FG1mePtKv%9H<_t;j|T8oH?tQ zfbgj8Y-G1|3%8Qx3k5#1`R}W8eW}KY;Mp*Ooznv4V&d}-h{2$Q`jRlE} z+&1{pn%(oOM3M=)zJRh`rPgdVQVstaYLG|`$`IcEm}W-oYy%h3YqsNqzu^c^*sW`z zS}&{qu)@;#M3#X0j`g3tkooA?(n|F%HN$x?iMbX8^=t?TzbM^!ToX%mgFanC-eqBG zY+-6l@DWI^1N{a$hJGxU^{{eFeAQ@pr`^q+3I~(vVdc#FC(eW?)W|G(GAHbA=AM%W z21T{RXK?QhzZbnKKjx!NX<*2^f6qv~mG#VjFSwpn0R;`6)sP2UML0{~Vn*V%tjes2 zT84^BN43m+aH>&wf|XhSv|ciyMoawuIhK5YzoAJx|aQtzesY`zvpQ%cJ+S*s6&-lY`W}ZBwh9{iKtb8`nCb6-gLPlcV z-Ql-r*4X`LzIHYV6?dM^rdu6yPN$n&ey)*O9URuk1q(X;npje`{NIT{d6%9uV3RPgo* z)42)j;28R2y{xG4miQIn-5Y%}G6paADufrtBHieW?zghomT62ANVAr4oGszq#&)@9(u6q@y87hBP+SHI--lxPWA6NqFFTlo{LX@~$>5S*5E3k(D! z#leuM(#)EE2dFLIE_e8wmS~yz?xjZI`19Q*FKvRqFEy-=A^7)UQeYpPx=nJK2gZ@o zq_7Nt%;vvVr-}o9?bR8B!lsH|lXz>J<%~#th+k>$W=q!VUnTeajunLtycuf6&BDUg z1)GcZ`Y4;6#Sf{1EmwRhEDpMO*fe9jG+b? zZmu&H5dF(_#swkz-IM>f(k=1WS34X;?m(fRxW<2}9B|oxkuIUT(@+qoYpwCY*G6}# zQGuRTHZG{^){}MWjh@g-thCr_+t1MZ1%fC%G8SwXT56XO>2vSDgj&>>LI z>TFX4^{!T8kh%~gGAT$cxyGa*IYt6U4PnLWGo@Fsy+Q`}rS&NX7AtdeqHOmk(>M=5U)>+(yJ--0(t#Op8 zPBb$esgqPERZSfWotj!Vi^e!Kr%E=>d+=j@H1j{v%-3v-na6KP;7JuveKuIt{a>rz zX@i*>9;{O8-&I-?wZo{=uAtrH!8lUzxo0*q8c<4fu!LQN7t{jRXcfaHS$G2CGZ2Z9#DEadny$ zt2m6Zr3bEHSM11UhJ|ycA1mPNSs}*p1G}{qSqdQ z-BG>&K8TYgvW0fplY>aRR?!R&f^{^6s^EtS zeQ9N*r?muELXIs~m@tW+dIowUD9Z+*M)a%_sL;?!a8RDjqK5dF>)aZGb^<~@3VhN7 zBh50ZQ!N~lB;!w^>7*-^-7H{b)DC5Hsf-ap(Q&)z$!0~ZzWZOTh=qp`(-m)pc}d2| z)AczZS~0aHzCQ?n{$&k_Gl}_~2Q8cP{dp*1d)ayyl$i)-f?yjO;7wL21tt7o$A;;) zb~~vJP)`Wwu4wyMIMWL%sbyI7w6|zR+gM5XT_TC+R{~{B>*3YVq@+KHoLHu4X6#!G z-A6NYVl6`Z;C)2D^DZvz0k6eYw$6gi<6C=jun^g2<=`6jMx)2ItPe~^F$cpdH?bDx zdZaxXS_T?T^iyk5kdN<5p`_v@2~$V5=#$enk4DiO?b)<3i8rgo)6RImvE8rJMRKY!|M0#Te;L-aYd=7t#zoUw@ zV<*}^I4#D zLfIw~O`2X1TO;Jq?;IQrwW|BSxF z)77#&QYEmbKLhvazmLpHz$DP*W&U-ic373n%6BQ(SU!;DZ{2N4>k*#X-L`JL)Sf06 zoK_zL3-T~cmG$a*Tr;bUgoa(KyA?sT7-zFvqPG4i)c4g3MT}aDi0-k89s!nkkH|RyCKZ+RhJBp*T#RF(HruLT8U>=e|PWB}!r8;>)V;ao0v4-8i6>g7L_o!*B~j}8mQ=h z_1J-WTzhgxQ0%u346v@91!`N~28aJoBJ>(sod}^KF>CnnH|8kL+CkXB*5eL8I)+7S zV^^OwVf!HtmA=zL^f7&64C0L+qAY!4EFfx&H={(a$w8bZBQcf%*E14t!41BS&`d_+ zwQW{76v&K33&nSjBUpitxT=Y>w6iA_teA~(}%xkP7O2qJ&ay+Dtb-7TM;`{ zGx3`FOh(6eHPIRqk@55GmAQTM2b?hiY6NwVhsQdn4+c&}hnVdBGrrPz8uZjXc1 z8-*QB|8kuvAt)^frR#n`r6xkA6F^cJwiva5>KKE416dx?fHrK(;4G6iq{=Fimrf0W zvYa*eA6+m>$-MM40whxn+Ki9A^qHrhGz71ZVuH4MuRiM%qZ&p-0c9ww3FcE+Cdlhr zgBdclG<^ELcDXW{-IVRpe}%U8HA#tyeeD}gp4i_8+!F`cK$VHF6pVz`5?4g7t5wD( zH#%5hQeQLJX43OEkUYu#nDnHo1#sEI|U&fVN0hMT-51ieTF(4 zE0rnl*qoG<OLfDE!}q%qJ=NFJY>z1~##6jF{gdR2k623sAUb7;X7d(T+g3KuSOgylOoYJF zI~saeYQ+HO{|r!|uOE%@T4l_6K^q`f*hrF+)(AqPiM?C?-6V-hQ~%XOC8RkZU1xWY z(%hcovmk2Eac`?CY6SNz)vKoY9xpV5d_qcxy)h2EcPUyusp-xid#c+N)VP;5iE1&*tBTs% z=QOW8ZcfW>EurQi=Ye(Nzec0hP|?I)BQ|oI1|2k9>QZ~Axhqx$b`NzIZ^Zyh;@{R* z4N%cs5(%+!^Wc67W z|JlQ1R$Xnva{RaceDUai)1L$EE}=iYG!&4A{%rpgk_n%>mc)=ueKxeqp+0G7PpVJ4 zh9)za{-g`0KM7#^lYk=qdATODZc8Jga+-lD(4VZrBqRV^+3Iz1~K-_ zWTrkZQgKjymVKtw6YA5fV&$UHX5=2|4f<2CR$v7-#?~$SlpU&{x3qL2#JunnKa8L%50U&D6!#NO>JW188QC_+>uot^hgmV zf#J&}lypD|jtU3?e9;1R({+23PNO$Q7CLF)Wl@%X4)4?q+dK*cB1i*nh7ZSd;l0hP zF#im^wHZ!1E53f0wWJM}QZ-QA`s@&?veq<+;?{h2(GC}dB16@-HKjEYN~KVwf&ft0 z3sY}deM!&Ijro@X?Vk#Qu-H4Zfzq&QN6#ut52e`b$o4K?a{6R%4MV+UQD+fOqMzLf z8GHFs=z)GRLjr;rPj%!Jp&y}>}>1U#|kvD0k~}eZY|dt%o(wLvY&e~ReOVlDme6WaZ_G2O2<^52bDP^~Dc#oErX+pZ(*9n4s;W11$5 zx7(rz8ckpniz!+8sFh_;Bdvc*oIfoMWBb@9bcP6hi7L>jX@zO{O~VuT4}nkD+2j>z z?DZ(NSGTwI`s4nojM5HX>1Z(RvysB0=9atWZgg?f$-q^b5(0O@K(QgTY+0T#!vE!?voY85Lclz z%BmGCBEIq@G{C#}1N9118x^LOvPz)nNe#`I&sONuQN*-g6g_o8qd5*6C{Uu%wBJ}2 zi*nXopm^{hjc|rRFM(n~%ykTy$XjGFq+ca*S_tlex$rYe81+anR&2E*-5M8yY6l@4 zeF9>tl>kV5lO9K-CdDvmSqT7CXFPJmYN-Z%>uhTL1S2!!cxqkt99t3H$2>fg3UG2t zZK9{rM{Mm2Jc4#5bb$!m6k4MMyyChV>9**pcd2_@nNzP%&>MvEt~dc<>5iBMKxOt;JO3Iw0I_W1B+s<3+k+ z(kU52{}osfvl$}oTCf>t2A;GT==whDlgmvoGZ_eACIbOQCc{oBa0JB2WZ1+&G8tF} zG8tGCG8tm3;UtRL41^-mw#`6SMK(iG3E2z;C!-db3R35Y$VoOCmVKY>*mZHq&P655aWbjyTV{wD~F6GtG zp6iIkurDH_r$$Efnf^S7R;i3Nsp7dy6M z`n`H%YouHC5q!&{N^s>1;@i*_k)o@z=~hL$CUUq=pNPP1ZRFu8nwgt;3*&I)CSE6w z%1yjRdnz~4qNTu_nG%L@hw)5H@7xEM9@Sw415!zKyg}4HNgxNIcEJ2m+6% zPkdM*wJBS9HStzzsf@(yOgt5oQ4_DHMj}MXE+5Oqel@Y)bl;WOeOE8qVE7^B(7&-e zs$nnER(y#r%0AwVop8Mw@dQUi_gh^GQ%@JBUb4K8ao2%6UYL5$stcUG?9(yH*rxTY zH?eB=vTM<^Mq?W7WycCWAv?`0y-*VDoZiIrxa%Wy72<>4xUxI=-0mR8s)i1(R6+Cq z!2t<$FE$5MBrwDQCFllh4ltRhO~EJlh>ML9FSdD6h71jC=o@n@V#qgqv|G^yL zsFI6G)i548#^*rATgcGKEc1!~HK zLkgL#&#>!MZkZ4WH?Dw#?37G!n zIvWNd_RQqOH-jJjdrq31qy@o^xbRy>7b~nQlt{1>4mt?Ib6p)!CTlbMJss}$a+ZuJ#18$B9404=O2LOy^A zG$U~i8HU4X=Wy9E0vq<`3M(&;rYan&Kf4&12xsWX z>7UgPDvBBMQI0HHXPSVTnBVk!k*U4Xb&?0k6U6k!3@CIqMHSn=?M8QXH>b$HB^!LWq8PFYUbg@*kyuTdbBmMd! z;6)o>2K$S??v?9&7UQEIXn=+j$l*7NkdZbr3doZ<54LL-w~?{vtym1G;#bM1K=mxl zArL4HbbUgX@sD~7XtL@|;41+C0^y7KKbZ(TdoepcyaDuUgpTz$oeT5=n@Tj$pAx#F zzs?1q=_hX>QZluoe<#rX1z0Nokh3TmVwV(0g92)RuRHGpx{Hl2ky;vqrulc;qb`Sf zO~81lx9Sq=HMHx+0NsVqW&NGE0Ub+dd%-&)=53Ywp=iPB%+!|6%Ev*b7lcbRYjvt;v0#phxeG#f9`^ZJElOErue>hMJLG%nb4VgYD zg(pH7M3QI&ZUtu|R4-vPsVeWRqS9 z$R@p%>ZMgci{%8dL9YU2ll}^jO?n+5a31PyWc3Kz3dp9M1IVVl6Od_>-bWSFqEIoP zAXLb89syK?kvR^?CU}~a62WsJ=u)WE3PINZ<+J&?MfKQx+#?8s#fu#QJ;NwF%nC)M zivgm4kOUzpDpVQ+2x1hav4ARz+k?Whox5-J@Bh(5Idfdr^56cxk}t5+4!bOsT-o3j8Wu!?g4*`(*PVro1;1T74e zE(S!3CfB(Xkj_Z2V)cmhR}3Qgw+>KER&OI9oAOpxN^Ns&h~(eSP;nk0(suL$$d-<- zjPwy!kw_nB5b^tIKsM=ffNav2SShu&LeRBP>2*Nm80A}lhA_$x0b%`V8XWkUki$Wf zUJQ^u)scW~(ow9GNXLYr*idO4Ap4h$@ql)+MXb&0(NOC#h$uG#WK-q<*^~v76%%Ps z2+~5u%>c!)QMUs078`X3R*xn)i9uBWbpuq3)$0YwCf%2n66FCQC^=N>2UGzqApeE| zJjq6#!Yb0P9>*XeJpqtSIt`FbdMYa=($hoGtWfD3K;_wB<^sCKC@-XXObaX~$Wa|_ zmjWt=`3JZhpiO!eD<<4mA!uEwbR(dWti@J9&tg6{QnP|^K8HDGr1ne0y(P6z?;W*X zhakhx`Cw!^U|y0nNdNuI$x<8%{+MRwq&%ChuflbCyyp;2?6Te{v!Nb<3UaNcM2HMk z{D=s7`aSnp=SGUOWRu;RMJ22Yi|VURGQXpzH2}S!J)B6LQ_vaPslg85ogqAq6|FzvD_iRkbG!088v~6d0{E}?13wp` z`YYsK;Ym^|D29R`a3p7OI9a^%U8sQ*_-#J}{~fX`pM~(nfp2^q_~j>npB=)Nz|lnO zv%qh|Lwf~y2{;jtOdVF5{Op}+<@TVLb$5o~U4y#X`D_Hytw z>}IHQbES0y@}Z%VHc2{u`IerFA6suCzHXS;+4{XSeiVJ>WuOrGI**E1dIGkFV-fIZ z5B3qh*HtJI5Zp@NKpEkYJ1W7yA|DK2^rlT`*`)yIwJQ_$i3ratZ1-gHxxxy@WOR&~ z{C6Q5y*?N?6gdiBx|>J}s99=vOT@qnI+3?FFTQM8wRn`%cSP=CNJRs2S`>oxZ!DbG zwQN{ZJ8ThUlXq-%q}gBfMWmZdHGeE_7pLN1!vexq*Jq1_$aplf_|%+~l3L%?@Qg>T z3vS@8UaY3|G3xoBDTP~@2Z-LgRmvZWdA6qDvj0oAVb302yG7Umr69Zgg#eSRK6V%3 zh56{O4KA{WVJfnZBMXG#2gJC8?9+s~j?7OoAN78tdgp+E0z%GV7V!RaKoJbu2dMO~ z&49ZG=oXTns#z`33{nwby(X+;8o)Hn3iK-=dfgqqc|ILr7=8SFCgD&v2Mh9LbXf1U zm{o*Xv&Z2t6GaZk0f&DSuB=9&oJIJCPP#@wsp0j5kFq8(ObWx?Yk2Pa-5sU=PyUXT*%-0fZ19CixwhCWPhY6~=_sSE*|g^B*MeH)``aMbR<#j0D|Au=Hz` zW{7lm8Ty36c`ug>>lKcB_^w=7)yf#2br|J=7CjMqqFG^Mo%csk;Sv=36CC?c;-{JS zC)AktO!=^9bZR*Og+;QuE@UY{kZVYDV+Ca`LL=ck$3}$ ztc9rE&^ebzSbZ_U)#oD*By>gOgrGu^%4lpfzt&-xKrlr~Mx!qbV22+|8H0d~U0#Q1 zPA57}8V7!QMR4`0M1#>Js8Ae4g(0G5h$v_>qFu8n8u;X6?ZKaY7h^yB&aRBo{~y2k zo;S8am>hO<-j@}^ye5JtG0)Nd_otx;d>@X&9e~pO&k$Gf@DXXr{j}u%jzA%BrsGdn zYdUzks})BTbSj8RZ8=$|qLzFscdDG#9H8#lvp{{lAv>_lN(3VPTy%O~ST;R}o>8W4 zahSX5e@DDtIyyV=wc<0%&?D#gNeOzYjJj4&^pNW;BFPRyvx#aJHP0q;?58u?pcA@* z@E{X8n%Ot-8fefB#Q*0FYz1SRU9DcIfp?Fex{Z*Vb=Mi4-GB^UlcxP!ye)iUeJ3l|dt2ycY4aLr)PFtdqOxeR|R5?ophpEa(&jR`p zkX7>*`oM_Rr{DW0W!@_l!+v4!?fm&D%AQ5pmF*B2_FFVq-(y7Rv@b(ANEZB(P6lp4 z2uBji`sXqTbR33)$)N)B@U1F7;D(2AWU5>J`vUi35NEbvMz(dR1CaCvzsIi&v9`4U z&K1IexA407mw~Gu!a-2rJy+EGoi|ZXEK~r=f)|jD2ktsFm`xNYygP0QaHm5!viT6> zd<#gt#q-IEecl6Z-P5=^S->rR8Yg@V9KBQfiB8@t4&1n>aR*BRm;5wtOfM72q^FVH zmI0>$XAS%dko)P<@!7!DV7Q`}h1eZKu{f+(K1HeH=@u`v1MV6H^DO@zY>cC{Wnq0< z8rHaSb__J3?-{mM5^hHp}a=yb;SemJ2NRuv|lK7S?ITE?Tj?4a+;QJc;GY zS>B7~eOW$$<;g7fvwRrKN3lGG<>OdBf#qo|pUU#-ET6^lIh31q=CX_VEMLfStvTIs zGnThv`BsKs$MTIVk7M|q49;WuK9=XR{0PgBv-~v6&$0Xx%Pp2)W4U>q{kg^Rdn|v* zatG_67|SDB9>ww)mdCO@ht-T{a01I~v%DV58?l^Yxxn&aEKgziD3;9NMd<6 zmiJ=$IF=7!c{0oWERVE@$ns*%ntwAeyknSIsa=?(0a9@!`nSDRm}5WEC8S$OrSRsU z1SAfr8B%Yg5lCZ^(vTJ+ZALnTbPcIg>oCV!v}=OD9gzAW1&}5oy^pjCX){tD(#h6g zrsFDrJ4jK_qa!3YQahvpNTZOJf!K#g@u)K$f9c;j;IAX?qdINT7N41}fy5!TLh6B( zjFf^j0ckqYe56%KIY@_)E+E}&gDeUJ;*pvlHACuwGziIovI+P*6KOuuQlyPYdyvi{ z(Z6>vfW=7bo}bq#Azbp2IB!99Fz&i0=qTltaVfQj zkDxk^W|&6MYBD5wV9LPSBB9byKOTRZj3J!Eu@Ki3p0lrOj~zKIWq2~Ki7wF(;>V94 zpFC(VuIIGC-4ouXNe-yv7I3iP%_1azvxR_V%cnXQ2uD-=EmTCXu|zmWQkWxQKL&1( z$B|GY!jZ72g`>%!*IuLIIM6BjmxkGh!A-RaE*0Uo1E*oITU*lep22^AU<%ivVz(zM z-UqG&D$>A;{t2`(n}xksv*Q1^SN~tys~fOa!wO8Ug+oS4MCyt(2x$z`6r}f&vXM3* z?Lqnt={`~kR|`i)q&i3vQahynNN*s`MfwbB1JZt^-;nMgm2kIkBp`W_IwK818jn@=^LaCNL!G0{m{a36zMe5Wu)s!_mB#aO6TAmTu3cD^l)@Y?C5COri-IR zVh2a7w#^+aUg+hR=UW`^tda*~AE_x4k0c|hNWQ#z{T7Eet_W}<(qyD`q-jWR=WY0O zarmsN6gb$m}weFt4R80D?jh7H^I@z)h~ge`?&kr)f}vGPQvzt?fY|g9zMFO zNs}gy?Wgi~enP3VKNZM*jNOW2mb|KR>T zjy~JB@5(>gbo)jhYcc=6xA$sRqqjLY$XNd==fLv(gNOFuW{&O3-*q4- zAunOi;ca{J>SJ!VVKENvvM1;;3VzDjy^jz@)9J{~Ik11z?u}}itg7!ZMOVK@?5^_m<|Xvu@#xj|QwfK6 z%{Ve{G432Gn(@K5`4J1{rT)pF*~6fqFc?!%Kf+P@ze%^$r2W}!T(qIM`4+x!XKFk zj~&63s$3%1o=fJ2a-+Gi+yrhew}AVU+rWLt?cfe_$GCG`w5y8i8JEZ9b0xakxsqH1 zU4vbtT$5Z=U9(-ExxRI6cjdW`yUx0PbyarnaJT1QO(_3{q+pnO&??it~E z(=*-krDvb#r01N+^4##;_k=5vO0-f@sjW0oG^K;7^iW<^hAD3=i2u zKCP!VP@AB=r!CZ$Y2RvFwcXl5?YMSEyQ1CJ3bitN1>L1fx~7lN-`3~pU+Nom^B4V3 z{h=OaL>kdXU4t`TFa{f=j5mxaMusuh_{3OdtT8qk+l_t36(ic0;A`xYea(ICecgSd zd}+R!z6HL;zOB9;z8`%@e5ZZC`EL2{`@kIu4#zbtYjLhLSB|UC30!mhjHEX=l6!-D zpIgGM<+gK&xC`80^9pZ=*D-6k6?a?rVE60pcifBI>)pHDr`^}w5qt%{0q^BI^8@*D z{B-_Peht5y|C#@t|A&tiY6~8rjgTt5Eqo-b6t-X)j|smDw}rA|ZBY`R7dwloqA9*7 zek?8%zY@2Ld&MK-De-slo>(ZBlWItHBw1=Dwa1bMOlh<Dm z?jaA9hsqP=ba{q6S6(E4EpL>+mw%KG%a`Rphz16%f@AKYd?|AQY?=tT??;-Cw?=5e*T1ib%8>l|Dt!fU$ z`i)ZGQ5UM~)g9_F^;h+8wS-nptFP%=d(E$n(8g&WYD=~6w7po%yIN_zqW-Kd>xue{ z`e1#k{(-(wU!t$pH|VEzrx9h8H>w-Y87+*FhH1>iGA=W|HFAvo#&P3J%(-ppTzVCheeCK_4Xgv`&rSHv`<_2-2 zxKu8Ko5L;SKIb-aIovMp0C$8t!(HV5;BIooTv4uau4=9XR|8j5mly1s2WB1S zdfhd_H684_*tN>F-nG@W!}X)e*}l$<{$D=LM@?@APF6X zF~S7lEn%^+N!Wqi@vBflj2CN)b;X7vCyJt1^ogy+wqhr-t10#p`-y|Z!QwD+v^Z9L zQ%n=5i8IA_#kt}~;vz_b<>G2_t++wlDsB^ZV=Lv0N5zxkSxAQ~;veEoY^s06aH)h; zPO2m|lG;c;rI#eXG(vhqnk~(fvZR&Ldg%x0N9nNii*#8k0huAnZR8i^7v=tPKsHn5 z$@2TyVqZac?kV(?RpOOeic66cRcWRqD(#dcrN5G_1e8?8RHi9& zlm*ISWu>y-RJJI)m3-xAh@ArEo)Yej^49RWz0JMdv2VwD--ggx?)?&CC(nD@d%=6# z`_LPv#;G;bKh#HRgjQ4IG*RoS^}$9>(I#uNwFMABUux^ME!r;afOcN{L;u)VZmc)* zjbDtbhSOKx_l&QRPw{nt9C^uS4ran+hVOmf65mQ}ylXy3Gnft7aFJXb_Y!nM2KNc~ z1-F&UitIPFdPL^dKw8bFEme=Go`D17d^BcD6zsk2EQfhdbcs!m? zo>x2*Jnwn3J!?FBJ->SHdLDU-DKSa{ltz-$M|njVsf<^qD(@&CDcKM<8_GWp%_a5|K@s?IAs&&-Hsz+_6_E(3fZ>yQ=r|Q?Hx<&n2 zJ*{3+@2h3B1g)XgLhGQt1i|x~Hc^`c!LveJt8LbP(DrCYv|qLRT7*u@Bu;Oj3%XBl zt9R31(#PwW`U-uWzE?k}|E6Ep??V(t8&!;YMiWCaS{q%Ae$XwWjXB0bW392%xCo8% zhf!$6_{^G+L#=%6e8YU7_}2Ko^X>PY@LlrVCc%^Ba4aX2iz~%7q23)^0xPO_P*pD>>cfW)B6@% z!xc~--+Od6c_+;sA=_6^0v`Na9 zev*Ec&PtYaL%J^&ldH;g!RKDN6?RBZd6+yFc43B`DKC_l!;07>Zhok7;dAv(cb83j5j75ZyO&NUoz`)uW`gU1<8L8 z{O2!{RVM@GbH!^R4pb`i>FLk3x75JYSNl!qws$z-)3Lw!7VfR;nJbzAh$*P>lH2KT&aQSs8@(lR{`BV7|`5XB=ITxP5 zDOih-;xxC^m*4ZX3h=0^=ioW6S~8wij@|Oj*t`M;U|1*d|`ZJY%+c@ z_85nZ`$m1N?(@E$zQMjXeQ*2b!kS#|+vMBrJLJ0zIdPYkI1O=CEO8k8gILb2$~EC6 zxCrgIZg3I?a6`D)Am1l(Gq_A{5v2SMZV%jrQ`{x)8h4v}z=gR=yDGWjUC+AQu2!x- z@B=5i=D0qFANZAPvumg8fa`?olIsuGJy#iby!$z~%dNRvyF0u4xLR0h(S=0V3!{Yb!WVEq_Cl0c!aXRN5@HNINghh3huBwq1ybY_*p6GEV}2A*h!@1G z;&s@Ik+2mjL(_%KYMO@9(vyOW_!Q&{@~r? zJ%Zh0dH?b{)Uq(%o>OJ@d9{<;&4e*9QcYFMYR@vI(UCcl!?dwln)VhPk1yd!o&on> zH^P|P&=^ib3tvZH5BPs`ec8UXVBCYgpP>h6eIL;J&T%;CH*V#*He5$6X@6*hVa%yt z4klg;$Nn@J_&WEHD-LhLtmbOul3dN;*LQq}^b?Qj#$xURV# zxk|%JP~2Ui2S&M5!QrI&SHol620QPR`>Ol4yCh#8I-v%%f|qXtt&q%*<==#6n8q*S zm+|YdkbC)q{CRkhH~BE3IAQ|vrXUJFp{?+mkO|B0b78me3nBszv7}g5tSD9!n=prR zusB?tfXKistml{FVX?RrD>cOWwL)BA0Cd57@E`xXq^Kf43#+d=e9FP{8}c;y9r+^| z`kUol@&Wm%d{Z_b$W1-1Jv|})7egeR^Aup!qLoIJKCKD`#sfdx@W-q`^5dZdowisUiWYANA4=T zz`uZ)&J_L={u_9E7x)K=0yGv{34P${&48b`LD&z${Sba$1JMw>K!s0)1Gf^s{|T_% zLor6GCe?-#cS)MmQtBl2l3tbqFxAsctls;u@IIIJLyKR5e^y?Omo>RBy#IyrR;d&UxkaJCw`@c+*lmT?;b+UY9`My`cmj^HzV?Mz=cUw_|lri;n@&w>-S9+ur6 z-%;N$zN=W@N5s=#IULPk-<5>KuENzuRL9G;sjtB_e%J1``ib?+rL4FSL2`M8}Tka5nB8O*n3m>5BbI5>RtS0aPvLBqEJnER;Y(v zp$WZ({z3r4*%YS2rCR{CzERkYIKUsmO`(KX8HOG)^b~Qn_@OB-WfJ;FcyiapzhUde z2jhL+q%qQ4*codP?K>`=lbmw2+*tO=E#SXRk(bC@^OS@=SHTkp zC$2vBiWhF&Xo%z8hyWh;oB(6r@HmumN(Th}URM0d80?m}!Q|$mkPmlAxxj3=XT3av zMxDKVyaT-f?^y2?ME(|dSHOnb3`zc@cfa?r_l)-<{D6Dja%wzefD5)UGV>E zcmliO3s~w+wYV0gJ)?PbvODO!{E)O8MBS|;U}zy1@NnJ6B?qp zkB9yz{b2esv6q(l4*QP#E|7=daOA*8fL?fplc5=2#J-u$eZZMpxu3c72p!dMx!~FN zL~M7qYY{fc_lW48cRg?wbJxIr_{jYgr2HAk_$cfHiVOOA6FXoTpDuhLd<7N!8`N*S zD1-Nhi__uReGksRB}Rki6CtAClrj;B*&&^hZc5>D83bXTlO-5$-A#E2EVtPR!F(iV z$t&dzP_bvAV9UW3*F2p)FM4)(4tP!>%154DX{Cx%2O*V7%7+M_%z-Jk(z_ML*dZ8W z78c}@H$sh7t01=56mE8++C%LF`+BrG1@88I^%M0=EY42Y+9%bs>UH%t7RW3O%dDp6 z)?}@X))9{P%kbIW&}M4yGUI!*_M>(SW_JQSwoQ7TzR_^xI~=iK#b$_ibaTJt9tJ%) zmqp7~!rt8q-zcA%G*{i__?mn(m@>Vg2Lp(Qr@`X=1SZW^cu2YYewZ{T_=_fg1!0go z5U5U}v`}7%6RLxW1i=tGz-0yRi`mmE#gwb9U z2O@qp_KE1oH&}oj@T`x)>bWf5fOlP7ib3eLp43!QSn#zwmSwPHj+Q1!=?Iz3mp+xg zfSbKb%9l>UooXw0mHR%}nuz#UCdBj(<%n|Dgo#a2uL|CH zFEO45_q&6)i?_FTP>}gP@-Fp$4U>C^_o(;0w*V2aM_{|Us;DMmefz89u)6c$g0ED+ zSNCIOZy_oc4HsO{RPA{L81(e`V)PXz6C1y zgl_3~^>T2gIKyisA|O8iOg77yZ!86ioi~d68X{af)b|FAuaA6RB3hCQ6@1b6m+zs^ zaSnR|>{S|3v*$P$*9^uNIpe9^6z)ClW4PiQxZPYncNS{+0q1nZx@x*Om)CT)g-8C1 zYb1_S-gbS6`0N^Xm~zck!d=;2pM_+TVRF6Up5#tB;&8II17(%b+K>>j(6s`WgKa^yOdrKY9cV9mVKs z8ZR3XY}%2&Uww}24#y=-VM7+f7!Ma@A)JrmE*{5Dom|6VsGLVwq7od6ZtmXhK{&J+ zj$@0-a40^3L$TU@z6Bgp6s7b1nq;IIY)FDOED z1SZVxuwjxBnMgyt`d#5;Asa5mTH$+PCuG_|;ka-H5v)HE!FnX<;>+R;1fuiA{Rm3j z6iY~Dql+B0Ouo3ou+l*tz??!|#4yPP-!7(nM>Pz%>fdTt6jyY~Y z72&BLEOQuFf-7rs6%lA~BfQv=IiUR!U>pOM$>5f9D-mM+mfOPp$eqA>)gQ24AHw}C z4%Vp+r$vF&(i(Pb65N&mqFHntIRg=`g|6kU)vgT)XB~9?;;QQI0M7ZwUEp?rN80ft z`MKB)ze3_Z12#1BM!e0nP6$-`RcvKS;#36`Iu0&Y!cbFqhv9_tuU^8Ki ze1W5cKcT^5%#K3M3iATTiDr%AAe?IUB5%9LGrfs_Vo7i4uhky9tK7j!i$P(V3h(06o00!#o<&Q zt!e`r(RmGs*6~tH<^Dy444B3wDd=M zci5Xle6RT?AU?3jXD&tT=WE{v-!|V~m|7Sr0e7kNb)~Fm;mut=Sz|qrCgcUzP zMBsDoEAD%+<Ja(LUw}mES!56 zFGD9L@%{MW{3QN;KHJ0r(gqwYo(}S7oKPRf#0C~+0GM*7Fb`(|UkcxW5z9c|)rN21 z76Ig!#W7-rm?bVjWcXVt2d6tnaJq9*x+?u8-IKy#U{D;8mz&9bus}oP5%PG%`)A@T zF)Mh`b3ncbmaOA3TX}{+drbpZ&hu=9{M!R_@jT9O{)P-J2N^gMtF%N}1E=Da66r0& zjuWTCt6$4(!4uwJ5!a(5nMzp z;hX3ClpWLL!Rx=^b0mP3V2qUED#P;=;1#rkPmqjr!s)Q?GP(JP|8D0R;S|txWw@Sk zzlb2rc=rSMmx!uthg|%bH!Ua!^2MXT3<3fxt>BDz5?&Nu6-EnVg~_nr=fN%i5)yG2 zVz#G+Yp~%X#8Ti9kp*i9h@-^U;hMjL!@AGJ^*E;6hok%7z&Ve^GH}yt!%>$cRcbAz zNRy=L%-LHeeT75(oiOb8o6toUa8h$ea>%7{PE$j!g_9aLJiylQ*?Y^$Si5oX1*gcf zE}Qsyfsl}m6b z{|X+{Rf22T0M4c1ZNp5Kz7WBqaMU~%{=$6k5(wf|i2dZS*v}aj`+11y55<40Vy`s8 zNl**5g9#gkBym7ZQ75tB;X-wp`jxs)-3&{0zj_?peoeijIXi}6)~N81n{t?p|L3#qSfkk60c)E2lO1wIFd2QaZoBe-fD57%QN;>ppF delta 62063 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 z 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]fRXwhgnx-T(E1 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 IhcZ(if$wU+XdLT_WqyT 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