noch mal eine verbesserung/änderung.
- items besser zu erkennen.
- Hilfe funktion.
ziel: sammel so viele items wie möglich der beste möge gewinnen.
Kollision schlange mit sich selbst.
Viel spaß.
Code: Alles auswählen
;------------------------------
;GAME PB SNAKE
;VER BETA
;DATE 02.10.2013
;PB 5.20 Final
;
;Orginal von Startgate
;Erweitert von True29
;------------------------------
;TODO
;Schlange collision mit körper.
;körper collision items
Enumeration ;window
#Window
EndEnumeration
Enumeration
#Window
#Sprite_Snake
#Sprite_square_red
#Sprite_square_green
#Sprite_square_purple
#givespeed
#reducespeed
#givenote
#reducenote
#doublespeed
#doublenode
#textbackground
EndEnumeration
;// Game
#Window_Titel = "PBSnake beta"
#Window_Width = 1024
#Window_Height = 800
#Text_Fade_Speed = 1.0
#ItemRespawnRate = 3
;#notestocollect = 30
#ItemsOnScreen = 5
#MaxItemsOnScreen = 10
#MaxTransparenz = 255
;// features setting
#MaxFeatures = 6
#speed_up = 10
#speed_down = 20
#double_speed_up = 40
#double_snake_node = 4
#remove_node = 1
#add_node = 2
;// Snake
Global SnakeLength = 3 ; Schlagenteile
Global SnakeVelocity = 100 ; Geschwindigkeit
#MaxSnakeVelocity = 1500
#MinSnakeVelocity = 50
#MaxSnakeLength = 30
#MinSnakeLength = 2
;- Vector-Include
Structure Vector
X.f : Y.f
EndStructure
Procedure.i V_Set(*Use.Vector, X.f, Y.f)
*Use\X = X
*Use\Y = Y
ProcedureReturn *Use
EndProcedure
Procedure.i V_Copy(*Use.Vector, *Source.Vector)
*Use\X = *Source\X
*Use\Y = *Source\Y
ProcedureReturn *Use
EndProcedure
Procedure.i V_Add(*Use.Vector, *Source.Vector, Factor.f=1.0)
*Use\X + *Source\X*Factor
*Use\Y + *Source\Y*Factor
ProcedureReturn *Use
EndProcedure
Procedure.i V_Multiply(*Use.Vector, Value.f)
*Use\X * Value
*Use\Y * Value
ProcedureReturn *Use
EndProcedure
Procedure.i V_Addition(*Destination.Vector, *Source1.Vector, *Source2.Vector)
*Destination\X = *Source1\X + *Source2\X
*Destination\Y = *Source1\Y + *Source2\Y
ProcedureReturn *Destination
EndProcedure
Procedure.i V_Subtraction(*Destination.Vector, *Source1.Vector, *Source2.Vector)
*Destination\X = *Source1\X - *Source2\X
*Destination\Y = *Source1\Y - *Source2\Y
ProcedureReturn *Destination
EndProcedure
Procedure.f V_Length(*Source.Vector)
ProcedureReturn Sqr(*Source\X * *Source\X + *Source\Y * *Source\Y)
EndProcedure
Procedure.i V_Normalize(*Use.Vector)
Protected Length.f = V_Length(*Use)
If Length
*Use\X / Length
*Use\Y / Length
EndIf
ProcedureReturn *Use
EndProcedure
Procedure V_Orthogonalize(*Use.Vector)
V_Normalize(*Use)
Swap *Use\X, *Use\Y
*Use\X = -*Use\X
EndProcedure
Procedure.i V_SetLength(*Use.Vector, Length.f)
V_Normalize(*Use)
V_Multiply(*Use, Length)
ProcedureReturn *Use
EndProcedure
Structure item
sprite.i
Position.Vector
color.i
feature.i
EndStructure
Structure text
fposition.Vector
text.s
duration.i
durationdone.i
rate.f
fEndTime.f
loop.i
ftransparent.f
Sprite.i
EndStructure
Structure Snake
Sprite.i
Array Node.Vector(2)
Velocity.Vector
EndStructure
Global LevelRate.i
Global ItemsOnScreen.i
Global time_min.i,time_sec.i
Define NewList Texte.text()
Define NewList Items.item()
Global NotesCollected.i
Define Gamerunning.i
Global ftime.f, Time.i = ElapsedMilliseconds()
Procedure MoveSnake(*Snake.Snake, TargetX.f, TargetY.f)
Protected I.i, Last.i = ArraySize(*Snake\Node())
Protected Line.Vector
With *Snake
; Kopf bewegen
V_Set(\Velocity, TargetX-\Node(0)\X, TargetY-\Node(0)\Y)
V_SetLength(\Velocity, 24)
V_Subtraction(Line, \Node(0), \Node(1))
V_Add(\Velocity, Line, 4)
V_SetLength(\Velocity,SnakeVelocity)
; Schlagenteile hinterher ziehen
V_Add(\Node(0), \Velocity,ftime)
For I = 1 To Last
V_Subtraction(Line, \Node(I-1), \Node(I))
V_SetLength(Line, V_Length(Line)-16)
V_Add(\Node(I), Line)
Next
EndWith
EndProcedure
Procedure DisplaySnake(*Snake.Snake)
Protected I.i, Last.i = ArraySize(*Snake\Node())
Protected Line.Vector, Line2.Vector, Orth.Vector, Orth2.Vector
Protected Dim Node.Vector(Last)
With *Snake
CopyArray(\Node(), Node())
For I = 1 To Last-1
V_Normalize(V_Subtraction(Line, Node(I-1), Node(I+1)))
V_Add(Node(I), Line, Sin(I-ElapsedMilliseconds()*0.005)*5)
Next
; Kopf
ClipSprite(\Sprite, 80, 0, 48, 64)
V_Normalize(V_Subtraction(Line, Node(0), Node(1)))
V_Normalize(V_Subtraction(Line2, Node(1), Node(2)))
V_Orthogonalize(V_Copy(Orth, Line))
V_Orthogonalize(V_Addition(Orth2, Line, Line2))
TransformSprite(\Sprite,
Node(1)\X-Orth2\X*16, Node(1)\Y-Orth2\Y*16,
Node(0)\X-Orth\X*16+Line\X*24, Node(0)\Y-Orth\Y*16+Line\Y*24,
Node(0)\X+Orth\X*16+Line\X*24, Node(0)\Y+Orth\Y*16+Line\Y*24,
Node(1)\X+Orth2\X*16, Node(1)\Y+Orth2\Y*16)
DisplayTransparentSprite(\Sprite, 0, 0)
; Schwanz
ClipSprite(\Sprite, 0, 0, 40, 64)
V_Normalize(V_Subtraction(Line, Node(Last-1), Node(Last)))
V_Normalize(V_Subtraction(Line2, Node(Last-2), Node(Last-1)))
V_Orthogonalize(V_Copy(Orth, Line))
V_Orthogonalize(V_Addition(Orth2, Line, Line2))
TransformSprite(\Sprite,
Node(Last)\X-Orth\X*16-Line\X*16, Node(Last)\Y-Orth\Y*16-Line\Y*16,
Node(Last-1)\X-Orth2\X*16, Node(Last-1)\Y-Orth2\Y*16,
Node(Last-1)\X+Orth2\X*16, Node(Last-1)\Y+Orth2\Y*16,
Node(Last)\X+Orth\X*16-Line\X*16, Node(Last)\Y+Orth\Y*16-Line\Y*16)
DisplayTransparentSprite(\Sprite, 0, 0)
; Mittelteil
ClipSprite(\Sprite, 40, 0, 16, 64)
For I = 1 To Last-2
V_Normalize(V_Subtraction(Line, Node(I), Node(I+1)))
V_Normalize(V_Subtraction(Line2, Node(I+1), Node(I+2)))
V_Orthogonalize(V_Addition(Orth, Line, Line2))
V_Normalize(V_Subtraction(Line2, Node(I-1), Node(I)))
V_Orthogonalize(V_Addition(Orth2, Line, Line2))
TransformSprite(\Sprite,
Node(I+1)\X-Orth\X*16, Node(I+1)\Y-Orth\Y*16,
Node(I)\X-Orth2\X*16, Node(I)\Y-Orth2\Y*16,
Node(I)\X+Orth2\X*16, Node(I)\Y+Orth2\Y*16,
Node(I+1)\X+Orth\X*16, Node(I+1)\Y+Orth\Y*16)
DisplayTransparentSprite(\Sprite, 0, 0)
Next
EndWith
EndProcedure
Procedure Additem(List items.item(),color,feature,sprite)
AddElement(items())
items()\Position\X = Random(WindowWidth(#Window)-50,50)
items()\Position\Y = Random(WindowHeight(#Window)-50,50)
items()\color = color
items()\feature = feature
items()\sprite = sprite
EndProcedure
Procedure Displayitem(List items.item())
With items()
ForEach items()
DisplayTransparentSprite(\sprite,\Position\x,\Position\y)
Next
EndWith
EndProcedure
Procedure.s Get_Feature_Text(feature)
Protected text.s
Select feature
Case #givespeed
text = "Speed up"
Case #givenote
text = "Add Node"
Case #reducespeed
text = "Slow Down"
Case #reducenote
text = "Remove Node"
Case #doublespeed
text = "Double Speed"
Case #doublenode
text = "Double Node"
EndSelect
ProcedureReturn text
EndProcedure
Procedure Get_Color_for_sprite(feature)
Protected color.i
Select feature
Case #givespeed,#givenote
color = #Red
Case #reducespeed,#reducenote
color = #Green
Case #doublespeed,#doublenode
color = RGB($CC,$33,$99)
EndSelect
ProcedureReturn color
EndProcedure
Procedure Get_sprite_name(feature)
Protected sprite.i
Select feature
Case #givespeed,#givenote
sprite = #Sprite_square_red
Case #reducespeed,#reducenote
sprite = #Sprite_square_green
Case #doublespeed,#doublenode
sprite = #Sprite_square_purple
EndSelect
ProcedureReturn sprite
EndProcedure
Procedure ADD_Text(List Texte.text(),x,y,text.s,Frontcolor,BackColor,duration.i,fStartTransparent.i,loop.i,EndTime.f)
AddElement(Texte())
Texte()\fPosition\X = x
Texte()\fPosition\Y = y
Texte()\text = text
Texte()\fEndTime = EndTime.f
Texte()\loop = loop.i
Texte()\duration = duration.i
Texte()\ftransparent = fStartTransparent
StartDrawing(ScreenOutput())
Texte()\Sprite = CreateSprite(#PB_Any,TextWidth(text),TextHeight(text),#PB_Sprite_AlphaBlending)
StopDrawing()
StartDrawing(SpriteOutput(Texte()\Sprite))
DrawText(0,0,text,Frontcolor,BackColor)
StopDrawing()
ProcedureReturn sprite
EndProcedure
Procedure Display_text(List Texte.text(),ftime.f)
With Texte()
ForEach Texte()
\Rate = #MaxTransparenz/\fEndTime
\ftransparent + \Rate * ftime.f
;// Max Transparenz 0 setzen
If \ftransparent >= #MaxTransparenz
\ftransparent = 0
\durationdone + 1
EndIf
DisplayTransparentSprite(\sprite,\fposition\x,\fposition\y,\ftransparent)
;// Sprite löschen bei anz durchläufe und loop false
If \loop = #False
If \duration =< \durationdone
durationdone = 0
FreeSprite(\Sprite)
DeleteElement(Texte())
EndIf
EndIf
Next
EndWith
EndProcedure
Procedure Handle_Time(List Items.item())
Static settime.i
Static checktime.f
;add time to leveltime
If settime = 0
checktime = Time
settime = 1
EndIf
If time - checktime > 1000
LevelRate + 1
If time_sec = 60
time_min + 1
time_sec = 0
LevelRate + 2
EndIf
time_sec + 1
settime = 0
;// add purpur item
While LevelRate > 1
LevelRate = 0
Additem(items(),RGB($CC,$33,$99),Random(#doublenode,#doublespeed),Get_sprite_name(9))
Wend
EndIf
EndProcedure
InitSprite()
InitKeyboard()
UsePNGImageDecoder()
OpenWindow(#Window, 0, 0, #Window_Width, #Window_Height, #Window_Titel, #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Window), 0, 0, WindowWidth(#Window), WindowHeight(#Window), 0, 0, 0)
;// Sprites erstellen
SpriteQuality(#PB_Sprite_BilinearFiltering)
CatchSprite(#Sprite_Snake,?Snake, #PB_Sprite_AlphaBlending)
CreateSprite(#Sprite_square_Red,30,30,#PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(#Sprite_square_red))
Circle(15,15,10,#Red)
StopDrawing()
CreateSprite(#Sprite_square_Green,30,30,#PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(#Sprite_square_Green))
Circle(15,15,10,#Green)
StopDrawing()
CreateSprite(#Sprite_square_purple,30,30,#PB_Sprite_PixelCollision)
StartDrawing(SpriteOutput(#Sprite_square_purple))
Circle(15,15,10,RGB($FF,$00,$FF))
StopDrawing()
Define Snake.Snake, I.i
ReDim Snake\Node(SnakeLength)
Snake\Sprite = #Sprite_Snake
For I = 0 To SnakeLength
V_Set(Snake\Node(I), 400-I*16,WindowHeight(#Window)*0.7)
V_Set(Snake\Velocity, 20, 0)
Next
Additem(items(),#Blue,#givespeed,#Sprite_square_red)
ADD_Text(Texte(),WindowWidth(#Window)*0.4, WindowHeight(#Window)*0.5,"Press Space to start",#Black,$E0E0E0,0,0,#True,#Text_Fade_Speed)
Gamerunning = #False
Repeat
ExamineKeyboard()
If KeyboardReleased(#PB_Key_F12)
MessageRequester(#Window_Titel,"Control the Snake With Mouse. Catch the items on screen - Green are good ,Red are bad ,didn't touch the purple one")
EndIf
If KeyboardReleased(#PB_Key_Space)
If Gamerunning = #True
ADD_Text(Texte(),WindowWidth(#Window)*0.4, WindowHeight(#Window)*0.5,"press space to continue",#Black,$E0E0E0,0,0,#True,#Text_Fade_Speed)
Gamerunning = #False
Else
Gamerunning = #True
FreeSprite(Texte()\Sprite)
DeleteElement(Texte())
EndIf
EndIf
Repeat
Select WindowEvent()
Case #PB_Event_CloseWindow
End
Case #Null
Break
EndSelect
ForEver
ftime = (ElapsedMilliseconds()-Time)/1000
Time = ElapsedMilliseconds()
ClearScreen($E0E0E0)
If Gamerunning
Handle_Time(items())
MoveSnake(Snake, WindowMouseX(#Window), WindowMouseY(#Window))
Displayitem(items())
EndIf
DisplaySnake(Snake)
Display_text(Texte(),ftime)
With items()
ForEach items()
;// check collision
For g = 0 To SnakeLength
If SpriteCollision(\sprite,\Position\x,\Position\y,#Sprite_Snake,snake\Node(g)\X,snake\Node(g)\Y)
;// effect auslösen
Select \feature
Case #givespeed
If SnakeVelocity + #speed_up < #MaxSnakeVelocity
SnakeVelocity + #speed_up
EndIf
Case #givenote
If SnakeLength + #add_node < #MaxSnakeLength
SnakeLength + #add_node
ReDim Snake\Node(SnakeLength)
EndIf
Case #reducespeed
If SnakeVelocity - #speed_down > #MinSnakeVelocity
SnakeVelocity - #speed_down
EndIf
Case #reducenote
If SnakeLength - #remove_node > #MinSnakeLength
SnakeLength - #remove_node
ReDim Snake\Node(SnakeLength)
EndIf
Case #doublespeed
If SnakeVelocity + #double_speed_up < #MaxSnakeVelocity
SnakeVelocity + #double_speed_up
EndIf
Case #doublenode
If SnakeLength + #double_snake_node < #MaxSnakeLength
SnakeLength + #double_snake_node
ReDim Snake\Node(SnakeLength)
EndIf
EndSelect
;// Text erzeugen
ADD_Text(Texte(),\Position\x,\Position\y,Get_Feature_Text(\feature),Get_Color_for_sprite(\feature),$E0E0E0,1,0,#False,#Text_Fade_Speed)
;// element löschen
DeleteElement(items())
;// element zählen
ItemsOnScreen - 1
NotesCollected + 1
;// neues element
For i = 0 To Random(#ItemRespawnRate,1)
Define nextitem = Random(4+#MaxFeatures,5)
;// max items reach ?
If ItemsOnScreen + 1 < #ItemsOnScreen
ItemsOnScreen + 1
Additem(items(),Get_Color_for_sprite(nextitem),nextitem,Get_sprite_name(nextitem))
EndIf
Next i
EndIf
Next g
Next
EndWith
;Collision mit rand
If snake\Node(0)\X >= WindowWidth(#Window) Or snake\Node(0)\X <= 0 Or snake\Node(0)\Y >= WindowHeight(#Window) Or snake\Node(0)\Y <= 0
MessageRequester(#Window_Titel,"Verloren !", 0)
End
EndIf
;Finish
;If #notestocollect = NotesCollected
; MessageRequester(#Window_Titel,"Erfolg !", 0)
; End
;EndIf
;// Draw GUI
StartDrawing(ScreenOutput())
DrawingMode(#PB_2DDrawing_Transparent )
;DrawText(0,0,"Eingesammelt: "+Str(NotesCollected) +" noch zu sammeln: "+ Str(#notestocollect - NotesCollected),#Black)
DrawText(0,0,"Eingesammelt: "+Str(NotesCollected),#Black)
DrawText(0,20,"Time: "+Str(time_min)+" : " + Str(time_sec),#Black)
DrawText(WindowWidth(#Window)-TextWidth("F12 - Help"),0,"F12 - Help",#Black)
StopDrawing()
FlipBuffers()
ForEver
DataSection
Snake:
Data.q $0A1A0A0D474E5089,$524448490D000000,$2000000080000000,$7022DA0000000608,$4942730400000025
Data.q $64087C0808080854,$5948700900000088,$1B0000AF1B000073,$00001C911A5E01AF,$6F53745845741900
Data.q $7700657261777466,$63736B6E692E7777,$9B67726F2E657061,$49310E00001A3CEE,$6D5BED9C78544144
Data.q $BF74FA7E95C59590,$C3B0CC0CEE6BF71F,$2446E1289DD1A8CC,$9A5B535B1650AE0B,$FF1258C62823F32C
Data.q $4DC4D64FE4D92668,$36B18A98881A5AC9,$CA8B446D49553465,$540CA4525C4D71AE,$02C9658A4A76B661
Data.q $066218D65D64E085,$3F7AFDCB99981818,$BDCEE6778FECFBBA,$BAA9E1015D9820C0,$7DDDBF774F3BEF35
Data.q $33305A7DD39F774E,$F87C82E21084042E,$3E4D0DF686DAC303,$874A943EBEBE8A8F,$5A14EC308B8C1045
Data.q $309B6D6115D68497,$44C532913EC676A6,$F58A99338654ACE3,$60E0F00EE5CE36FD,$C02030D606050307
Data.q $66015AFFE29843EF,$E85487E6F8032C16,$340032169AED0D43,$5A26A6325C8A3A0A,$C9975A45638A1D5B
Data.q $8C2D662494A94518,$0000B56B0AECC491,$A56FA52C508588A2,$71A575D6355AB6B4,$B2375C65254B6D1C
Data.q $605A8D0D0EC54C99,$1FC228F9F2D6194A,$D3C0553EC2CD00A5,$31D5329D8D000F5A,$EFFF93CB0C332A67
Data.q $24753810BAF5DF7D,$6B49161844E7B7B7,$E38A4B4E9496B487,$D6A5638E4736B492,$2D6A5871D2C3195A
Data.q $0415AC89992C5295,$10ACA44C303EC9D8,$631B5A94B4A31AD6,$98E38831B178E3B4,$E9D19AB5740FDF63
Data.q $C1C19B667A7A67B4,$698056F38452F3A1,$05C052687C094FA1,$A29D530006D4D331,$0091B585098C2075
Data.q $77FE99C66DFC90DA,$8B1CC1236B0F22F1,$966B48D4C617C64C,$94AE31A42EB910C6,$632A52928C632B52
Data.q $244384631D8A22A4,$38C88A4B58E0211C,$040209110404B2D6,$5ADA444B60196B5B,$1B010C94A44599AB
Data.q $8086C002006B210A,$5CE266AD51918D0E,$65AC0B008A2755AE,$CE0149CE1A5D6700,$1D1D1882BEBEF424
Data.q $7142304114EC30A2,$188754DB53A9D3EC,$4F3C2D662218C923,$011B3112D611B312,$B3069E7922B66078
Data.q $CD16FBDE00079E11,$612B3056DEA48107,$44490B5A58A54B0C,$4C18C70910ED18CA,$2E4108E16B5D9B0A
Data.q $5D6AE402EC109EC0,$3E0DADF3E3C30F6B,$9D7A4A5B3367ACC2,$085141B5B49C211C,$DACD4A903A944235
Data.q $52D62A644A3D9445,$AB888550C6CA8899,$E2010615398D5144,$5EF304343D71B6B6,$6BF05A601559C1B3
Data.q $3356A864A95E849B,$FBE57C0832B39732,$9A6FC71CAC71C656,$49F9243B27718CDA,$0D9882CC965AC829
Data.q $60024CC160082949,$FBD4C28015A87491,$92829480AEA48CC5,$4250AD656224B136,$4DC089BB37464DC0
Data.q $47EAA28BAEC78E2A,$8210EE36B2AE0DAD,$69FBE73665D9985B,$64CB6ECCA595042B,$454CCE392247FEAE
Data.q $6A0CA4941C72516B,$7EDF8CA18416D38E,$304A4CECFA01BF7B,$68BF044FC22402A3,$134A951E8B151B51
Data.q $5294A6185409932A,$8E371C211C9295D6,$344DD610AEC44BAD,$F254888AB36A6A7E,$3241274956664A57
Data.q $02529BBA72633243,$F93B26800B3C1120,$5998244416045762,$C70C2ABA5B5A4332,$30E78DAC7B0DAD7B
Data.q $AD9E58029B66169B,$B3A0B7CF9071C714,$513130089C4E0E73,$57307D5B5A04649B,$CD4E8A2881363630
Data.q $F3CF7EF8DFBC896A,$551C731E0086E54A,$3B5AAB8A9594C634,$704A4CF50783C1D1,$681F5F7E12980546
Data.q $2A5426952C84F878,$01E4442794211D25,$C692A6D98A5599F0,$A992F084252807C1,$8F6298DA4D6B5C8D
Data.q $3D01DB0E38AEB531,$A7332C9802DD5ACB,$D6648401C201EB01,$5FBFE4614BD8D53C,$1CBCF0F94A902108
Data.q $161E441F4A424082,$3D52FA9EA7879C2E,$7D1F478DFFDDEEDD,$4BD2F0A5CB9EFEA1,$73B10820894A418F
Data.q $7063AF57EAFC2EE7,$F2F94371C711DFF0,$EDB74E9E3F77EF98,$452A4E23198EDAD5,$9E216F6F612BAD15
Data.q $120149A0951A0BB2,$6D45A2D2CF8033C1,$6CC387DF1C08E474,$2889A53334C36B7D,$66D99652D6B3644B
Data.q $91952AB336619089,$D65D44C60DEA819B,$2F3FB9FFEAC01C9A,$C0C9C70BAEB80852,$05D6F5B87A520718
Data.q $74D735C4EFE7FCF8,$C0C0C51A1D0E0003,$FFD7EB0210E74FDF,$18C60001DABABA2D,$7AB54A943AEF7BDC
Data.q $37C5E2C01EEB759A,$BC15E4FC9FB5F69C,$553631389C46E2F8,$E7BF7DE7B6BCF59A,$75DC78E6519D6B25
Data.q $2560F07851B5B2FD,$420CE0151B667E06,$35C3C3900A152CFA,$B32318C803E12947,$6ADC03C8913C8842
Data.q $FC32A56E7081E52D,$67D38DAC0B6B6B29,$5294142105220AEA,$6D05BE7C832B3598,$8E0F07199728AD6D
Data.q $1F19322421050841,$C2C9696803D6FADF,$FCBC4EEAFABC5D75,$4B9720440B1220F2,$007DA748D586C361
Data.q $E3FC7E2BFD2F4BC0,$6F5BFCEC5CEFF5AD,$777BFAECC747471D,$DFEC3AF1BC6E0777,$F379B19980000EFF
Data.q $5290000FD03031AF,$55DD6EB602D2E962,$C02A33BEDB6DB3CF,$C19F55AAC19F55AA,$26FF5FEBE06F3D9E
Data.q $B417D8E1852A952A,$663BFFCECD94DCAE,$50B6BBEFAD54C6C1,$6F4C42CB5A1A1D80,$9BBFE8C94154D11A
Data.q $D2A72E6E0048050A,$6EE01DB231BCAA52,$8C106F44211AE821,$E2626A7BEE2C51DC,$7C2249727D68D6BF
Data.q $DB85D3D3D0F1C701,$685DC771DC0BFB6E,$969680BE7C805B6B,$BE060629FF4E901B,$5E9FA78FBE1B0D8C
Data.q $73ADAD14799E6787,$8B356A2E440A6520,$745CF77745DF7BBD,$7225FCF73DC6CC74,$6A952801259234B9
Data.q $562BD1BD7B69B4D8,$D4BF7F55366C8ADC,$FDE9A5BFEFE80078,$C18DA78E2176D7B5,$0C763BF13416CB65
Data.q $D58639191F84DAC1,$F7F45EFFBFA1D7AB,$6BABA1D7ABD58BDF,$F79BCC67F96CB62E,$8B179FE131800051
Data.q $55295AE5442CBC6F,$20C0908B15E6B996,$68BF9AF4C04B9635,$98613BEE3F1D1B51,$220EE2279C41054D
Data.q $8B8BAA6311F006EE,$CC3DC8C104D737C5,$DD3A4195286005A6,$FBCAE5618FD6D68D,$1E2789E02F2BCAF0
Data.q $9A9BA6E00F0FC3C1,$D1D18CDFAFD67237,$C562B1F69D200022,$A950DB8DC6FC4DAD,$C356A82E7F059704
Data.q $6BCF26D6082177A6,$1B18EDC1C1853CD6,$B7070638D8D8C71B,$D8BAEB871F87E1E3,$242EEAB558FBE1B0
Data.q $17FDBF8B17B6C783,$A7264CBC70166C63,$D06EA6DC6A0E850A,$8E395C747A3A4186,$036AAEBACEB1C5EB
Data.q $0F3BDAB5D5F009D0,$0EDC6D66BE074A94,$FF07C1E2D7BDBD00,$421DAF3C2F5CB906,$C998C60863B1D838
Data.q $3536D7E3FC7C0ACA,$D3EDC5CC990871C0,$FBD36779BCD8907F,$FE06C8E3862FB7ED,$F66CF84A95E34E3F
Data.q $F3FACEDCEE7715F4,$3AF4FD3C05F2BE57,$185F1F5ABB3C5E24,$9D861502D5ABCA04,$C3FE8F4D5AEB71A2
Data.q $9E91932AD7BFF7E2,$ACE803662D6B3294,$0025C9F1C4578756,$0D7E8FA3C392D2D0,$6FAC8F23C12D96CB
Data.q $7C8072E516D680AA,$D17E2FC0356A833E,$1AFAB2E779DDE53C,$572B894DA706AD59,$0E87F0797326432E
Data.q $7E5F2C29FFD7D68D,$B7D8E3E1F0F9FD73,$EF1C7DDFBBFE666F,$8725A5A3174BA585,$C997D8A8A224F162
Data.q $8EAD5959BAE1D9CC,$2890E04693012D34,$7910248D9B293B16,$17470C35A00322D6,$FCFE6000DB89E187
Data.q $B44802CF0BC2F1EB,$30383E9BB7DEEF73,$B4D800033E7C8FD0,$9AA6CD9B05937B69,$BE5CA3B69B4DC4A6
Data.q $B88D13FE5B2DF97C,$C0D1DDDDD0EBC6F1,$AE7F2A7677A344EF,$D61278B142E9E9E8,$AD2B6389C1123746
Data.q $025F4E077D7D136D,$08054A52497BBD92,$FDD0ED5ADCEA98CF,$D1FA3F1E6B6B4400,$7EB026C7638000D3
Data.q $8BD85C2D0FA6E6FD,$B00952A6A313CBE5,$5B8AC57E26B6E371,$E0D8E3E772FFA3EB,$61068DF13576D7B5
Data.q $FE467BBADD6C1B1C,$6B580003CC28507C,$009AC713C9A662AE,$9853BC866869EAFA,$E1F057A05BA84C3A
Data.q $C652B1CA94015D42,$C39994A1C034631A,$F162E003CFD5F4E9,$60DAD0CBEFBBEE24,$BD853ABFBAD69CCE
Data.q $9351892D96C6DF7B,$BF135972B958F8C9,$1E15C1AB5476D369,$26E2FB7EDC48E380,$7E4F891C7420D1BE
Data.q $E86860F9FC8CD172,$D61083FC9100002D,$69EB06062905B126,$2B687CF9C0A01526,$002A1121D666B495
Data.q $F9CDE78F75AF3C26,$76DC21EEFBBC0025,$97CB05B4DA6C4ADB,$8AF3774F0B8582DF,$A6E5CBCA64800AC5
Data.q $E5F27EECF972E0FD,$FF7FB000741A37C6,$05BF81B46874383B,$E18AE7F2A716A18D,$B5BF77220000C3E1
Data.q $2464F8D10C871D88,$EEF2D684764A0251,$5CE66AA9933807DD,$46001388C64A2D60,$6FF6D38ECDEEA952
Data.q $CFDBFB7C42083800,$7F79BCC7EEBBAEE0,$B26CD908A531F4D2,$66E9FD3E3ED3A5CE,$051F56DF3FE7F83F
Data.q $4ED4FCD0BF0FDA17,$76AEAEC30D1A2360,$13F57ABF3330582C,$3D0F7E9AAFE4B258,$C2EC763BF4A68DF4
Data.q $07E6EB80002593C9,$3BF7C6CA0828A5AD,$CECFA01B06BA636D,$894A472C309AED9E,$1FC2211E01C6600A
Data.q $786EE5CC5FABE9D2,$4787C380011DC892,$01D2A500FE1FC3F0,$D2E9611B5831C104,$9BC66654FC4CA402
Data.q $516C7142A9AEFE6F,$AF78CE5C6E6F34A9,$5AF1A725FEFEC09D,$5795A7232391FC27,$1CFB3ECFCFEB572E
Data.q $11093D26C7D5FABE,$4A9875F7D7BED529,$1286232646F3DAF9,$F760421118892028,$0D401880A16DBBEE
Data.q $B6663805A58E22C8,$BAFE6E5CE5D32935,$60AC8E18737E3A28,$B50D75A0D75A6DB6,$FEBC5BF8DC6C11DA
Data.q $9B21D7F5FD712FFA,$D31083BFBDDEC76D,$3C8E8E8FD03035FA,$5CFE685F87EF0B80,$D05B319A6F374E90
Data.q $F7C0DF3BE77E7764,$0037EFB7D80FF7BE,$FF07C1E3E60B0580,$087C5F8BE114511A,$78E8B9933FF5BD6F
Data.q $08195252FDDD7F3E,$27478787A6A54AC3,$9A0C386800D68523,$050A3774343B0254,$7DF58CA56692A544
Data.q $88422A2001B6B5A9,$77B3FBE138EBCF09,$5A53F870C3DBAD68,$08E38D9D5ACCFED7,$1210A769348C8E47
Data.q $FB9EE7851C703842,$59ACC27FD3FA7E01,$61D378C4C4D061C9,$23A1D0E35785C2D0,$1874DAA952A0C3F5
Data.q $F781E352FB3F3674,$BF135F6DB6DC09DE,$39D9DF0944016974,$67BF1358F93E4F07,$4A84BEE7DCF81BCF
Data.q $1C9D7EF4A4099925,$A4E3B2E8C6A3D906,$6CFB878664BE7CC2,$A1D4C03C5A7811A3,$B8E8F4746D45A2D0
Data.q $8C679A885736DD72,$B5AC9A52D22B5B4C,$319089645848F272,$5C7145B1D146B746,$CCF2601761B598F9
Data.q $3C1C7E25C4B2E0EC,$038196BDDEEC1335,$4E9AA54B69DBDBDC,$B28B32AE8E3910A5,$98A5042F8667C694
Data.q $DB7CEBCF7CA44539,$D6AEC10BE003C9F7,$1EB08847A575AFB1,$D673A10BCE8C6210,$0FA007003EC014DA
Data.q $D144428A23084059,$BAD8BBEB75B3BDB4,$1F094C8406B3D5F5,$2972E7E146EADC48,$013E75D78913E27C
Data.q $4512A8A549F1CC21,$083C1F416F6F51E3,$090AF3DB54D67E06,$AD54574E994356AB,$42BAC88721C71D26
Data.q $225D88971D8E3758,$A0E99C244BB35A38,$2575084290CC5248,$4D6121545C666C24,$A142882801141A09
Data.q $A7AEBA588A342839,$CE76B4AC54A966B4,$1412B8B310D42821,$1F7A25368507317A,$E92D3A44A6D6E161
Data.q $C67E161C25F8584A,$B581E8043179E70C,$317C25C862E57115,$380C3574E7CCC664,$25D86AE5701CBEF5
Data.q $3972BC0B3DEC357B,$CAE0C7FA1CB9F2F4,$02FFF87AE38BF0F5,$3646C3E924DA3596,$444E454900000000
Data.q $00000000826042AE
EndDataSection