Welcome, Guest
You have to register before you can post on our site.

Username/Email:
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 326
» Latest member: hafsahomar
» Forum threads: 1,758
» Forum posts: 17,919

Full Statistics

Latest Threads
MBA Assignment Help in Du...
Forum: General Discussion
Last Post: hafsahomar
06-11-2025, 07:05 AM
» Replies: 0
» Views: 9
лучшие песни медляки слуш...
Forum: Petr
Last Post: WillieTop
06-08-2025, 02:21 AM
» Replies: 0
» Views: 23
пинк слушать онлайн беспл...
Forum: SMcNeill
Last Post: WillieTop
06-08-2025, 02:20 AM
» Replies: 0
» Views: 20
скачать музыку российскую...
Forum: madscijr
Last Post: WillieTop
06-08-2025, 02:18 AM
» Replies: 0
» Views: 22
нежная музыка mp3 скачать
Forum: Keybone
Last Post: WillieTop
06-08-2025, 02:17 AM
» Replies: 0
» Views: 21
лучшая песня слушать онла...
Forum: bplus
Last Post: WillieTop
06-08-2025, 02:16 AM
» Replies: 0
» Views: 23
пикник слушать онлайн луч...
Forum: Spriggsy
Last Post: WillieTop
06-08-2025, 02:15 AM
» Replies: 0
» Views: 21
какая сейчас популярная м...
Forum: RhoSigma
Last Post: WillieTop
06-08-2025, 02:14 AM
» Replies: 0
» Views: 17
хит лета 2019 музыка на т...
Forum: Christmas Code
Last Post: WillieTop
06-08-2025, 02:12 AM
» Replies: 0
» Views: 23
бесплатная музыка mp3 рег...
Forum: Works in Progress
Last Post: WillieTop
06-08-2025, 02:11 AM
» Replies: 0
» Views: 17

 
  Miniture Golf - A 9-Hole Arcade Style Miniture Golf Game [Work in Progress.]
Posted by: Pete - 04-26-2022, 07:34 PM - Forum: TheBOB - No Replies

MiniGolf.bas by Bob Seguin

This is a work in progress. All holes were converted to QB64 successfully except for hole #6.

I'll post more about this contribution next week. Stay tuned.

Pete

Print this item

Heart Sabre
Posted by: bplus - 04-26-2022, 04:06 PM - Forum: bplus - No Replies

Speaking of animating avatars, perhaps you will recognize this one, hint  Heart Big Grin Heart

Code: (Select All)
_Title "Sabers" 'b+ 2020-01-11

Const xmax = 400, ymax = 400
Screen _NewImage(xmax, ymax, 32)
_ScreenMove 300, 40
Randomize Timer

If _FileExists("YS.png") = 0 Then 'thanks Andy Amaya
    Dim Shared k As Long
    k = 1: Read f$, s&, t&: Open f$ For Binary As #9: n& = s& \ t&: n& = n& - ((n& * t&) < s&): For c& = 1 To n&: Read d$: u (d$): Next
    Close #9
    Sleep 1
End If

Dim ys As Long
ys = _LoadImage("YS.png")

t1 = _FreeTimer 'get a timer number from _FREETIMER ONLY!
On Timer(t1, 4) resetWand
Timer(t1) On

Color &HFF000000, &HFFFFFFFF
resetWand
_PutImage , ys, 0
While _KeyDown(27) = 0
    If InKey$ = " " Then wandsi 0, 0, 0, 0, 1, 0: acc = 0
    c = 0
    acc = acc - 1
    For x = 71 To 81 Step .5
        wandsi x, 268 + c, _Pi(11 / 8), 170, 0, acc
        c = c - .25
    Next
    c = 0
    For x = 317 To 327 Step .5
        wandsi x, 259 + c, _Pi(13 / 8), 170, 0, acc
        c = c + .25
    Next
    _Display
    _Limit 60
Wend
Timer(t1) Off
Timer(t1) Free 'release timer
System

Sub resetWand
    wandsi 0, 0, 0, 0, 1, 0 'this sets a coloring for wand  used in drawing the pointer inside the mouse
End Sub

'draw a colorful line from point x, y, at radianAngle for a distance and use new <> 0 to reset colors
Sub wandsi (x1 As Single, y1 As Single, radianAngle As Single, distance As Single, new As Integer, startIdx As Integer)
    Static r As Single, g As Single, b As Single 'hold present color settings until
    If new <> 0 Then r = Rnd * Rnd * .5: g = Rnd * Rnd * .5: b = Rnd * Rnd * .5 'new is true
    Dim dx As Single, dy As Single, i As Integer, x As Single, y As Single
    dx = Cos(radianAngle): dy = Sin(radianAngle)
    For i = 0 To distance
        x = x1 + i * dx: y = y1 + i * dy
        Line (x, y)-Step(0, 0), _RGB32(127 + 127 * Sin(r * (i + startIdx)), 127 + 127 * Sin(g * (i + startIdx)), 127 + 127 * Sin(b * (i + startIdx))), BF
    Next
End Sub

Sub u (d$): r$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/": s$ = "": v% = 0: L% = Len(d$): If Right$(d$, 1) = "=" Then v% = 2
    If Right$(d$, 2) = "==" Then v% = 1
    If v% > 0 Then m% = L% - 5 Else m% = L% - 1
    For i% = 1 To m% Step 4: w% = InStr(r$, Mid$(d$, i%, 1)) - 1: x% = InStr(r$, Mid$(d$, i% + 1, 1)) - 1: y% = InStr(r$, Mid$(d$, i% + 2, 1)) - 1: z% = InStr(r$, Mid$(d$, i% + 3, 1)) - 1
    a~%% = (w% * 4) + ((x% And 48) / 16): b~%% = ((x% And 15) * 16) + ((y% And 60) / 4): c~%% = ((y% And 3) * 64) + z%: Put #9, k, a~%%: Put #9, k + 1, b~%%: Put #9, k + 2, c~%%: k = k + 3: Next
    If v% > 0 Then
        w% = InStr(r$, Mid$(d$, L% - 3, 1)) - 1: x% = InStr(r$, Mid$(d$, i% + 1, 1)) - 1: a = (w% * 4) + ((x% And 48) / 16): Put #9, k, a~%%: k = k + 1
        If v% = 2 Then: y% = InStr(r$, Mid$(d$, L% - 1, 1)) - 1: b = ((x% And 15) * 16) + ((y% And 60) / 4): Put #9, k, b~%%: k = k + 1
End If: End Sub

Data "YS.png",62591,192
Data "iVBORw0KGgoAAAANSUhEUgAAAOQAAADdCAYAAACrIt7oAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAPQUSURBVHhe7J0FQFXZ2v79vvvdiTvdTjhjd3d3d3d3gY2BhCDdIGErKBioCIItKoKAIt3d3Z3P/33XYeuRizNz79z/vY6XNfO4z9n7nAOctX/7ed9Vuxmayj9f6kg1pOp68ePaevExelBV"
Data "VYGa2gp6LHtRHe1j1dTRMdpFG9TS+2qr6O2kOn6Z+Az6p452VBfRgXx6nk3PM0gpdDCRtiTEoK7wCeqKHpIeC9UWeNTLi97mibqCZ0Dhc6AkECgPAaqi6b3x9e9PJmWRcujzC2lfJYme8s+n36man9K2hvZJf2I1qkjFqEAeiuqy6GVV4s+WJP19deJvffnHkOoLf768msprpQnIP1L4hJI/G6VzT+6Eq62lE5POahYf5FNVwFhDpzafr/wa2tbQ"
Data "yV9dSU+q6XVMZR1BXFdCLyAY6wjGygTUFoWhIvsZClMeIzf+HrJiXJEYaofEsDO0PYuEkDMkW9I5xAedJ9kj+sU5xAbYIzHYEWkRLsiJu4vC5IcoTfNESaYPCnNeoKqCAEUuiX4e/Wz+farpxzOQlbRlIPm351+X8atAKW2L6HkJPat++eezZH+2BKX0hTQB+XtLE5B/tDQ8wd5wktXRfja9Gjq7eSsMkHZWV5XRE4aPXZQek/ugJgd1ZcmoKopG"
Data "UYYfClKfIi/RHZmxN5ESfkUG2vOziHx2DAnBJwhAG8QHHxWKCzxWrxOkk4h5wTqNaL8zQlHPZIr0PYvwZ2eRHHcDGSkPUJLvT/Sxa9IFgH8PsuzaihpxoeBrCf/+DFxFTS3KiVjCVugVhK/rjeV3v/C/szQB+YcKX/nZN1j8mCVX5E48KTTlE1sUseUYNY+2HDaSatNQWxaF0hx/ZCc8REqUGyL9ziPKz64eqBOI9SPYXhxDvJAV4gPNSab1Mkdc"
Data "gBnJAnH+RxD7wpLgO0LwWiL6mTVintvUv/846SRi/U8hLuQ0IoNOITLQDklRLigkB34Fpswx+Xetpl9VhNi0lyFkVfPfRdvG9Mbyu1/431magPxDhfOkMlIJqYJUReJQjUr9CScgZE6lE1AcpB0iWSQ35HywKhAV+V7IS7qFtCgncsHLSIm4QCGmAwF0lMCyRpyfJeKfmyPhuRnJRCY/A4JSj8DSJRfUQYwfbUnRz/XqZUAgGtXLhGSKaF9zoZhn"
Data "FgSoGSJ8DRDhZ4SI56YIe2aJCAI1KdKJLgoEZjWDWR/KUgwrom76/fmiwn9TNQMq/3c1FBdp21R+V2kC8g8UbrSoEXlUMT1mMBnK14GkVPHlifwyN+QTvKaAzuhkFGdQTpdyDZkx55EUegqJQcdJR5ESchRpYceQEnQEqeR8qQEmSPE3Rpq/IVJfGCDFTw9JBGNaiCG9Vg+pwbSPFWiI5CDaF2iEJHqcFmxGn2GKZH9TJLwwRZwvweljgCgvPUR4"
Data "aSMxgKEmiH21EPZUG6FP9RFKwEb5n0VsyBW6UASgpiyBriHc6EO/P/3PDVDieiJ/oZEeN7z4yKup/GZpAvIPFBmQZfQvQ1lBYoesP/fqH3ADCWrpAbeYsiPWZqGiJBq5mc+RlXSX8sHjBNURZIRZITPcEhmhFkglgJL89BHvq0Pw6QulETTp/npCGQH6yPLXF9tkf20kBWiLbaK/FkGqQ1sSOWUCO+bTw4jx0UGcDz1/boTkFyYC8IzgI8gMoZ9F"
Data "0MY/O4xIT1VEeh0i59SmMFcfQR668L6ni/gQB2Qk3ENZXjhdSyisrioXkTb9sTI1BJG3DVX/XbxepINNRb40AfkHCrshQ8hdAbLWxnp35CKdnGyRorGGHAYZqC0PR27GQ8RGXkI4haJp4VbICjNBZqgp0oPJ0Qi4pGdaiPfWQJyXOkGni0yCjJXhp400AibVVxNpPlpI8TksXp8SoEdA6tZLXzgnA82K9tKSk45QzFMGVZc+XxdRj9QQ56mBJN/D"
Data "SPDRRPRTdUR4krwOi3A2wMOQQtmTSI50RXluEP1d3AVDf08N/XGVRKTE1W+pCcjfVZqA/AOFz7GXRkFPWC9PPHpSW1FKzzk8JVcsDEVOijtSYq4gMeIsEiKOIinCQoSY6YG6Aqy0AB1yQoJOSJcAZBj1kEXhaeZzekzKeEYO+YzgpG065YkcvsrgMxRKpLxRUgI5XTxBJSnO2/ClYp/SPlLiE30SuecTLQEmK8pLDZFP1RDxVAOBjw8h0NMAQV5H"
Data "EO3vgKJ0H/qbMujvo9yylhy/ksTxKwPKfDGjFfQlsItKzLGk76W+yEJ7PtBU5EsTkH+w8HkoGjn4Cf3D3RrVVZQn1lbSjmJUFyegPC8QBSn3kBFzCcnhx5EcZo6UCGNkRBgJGDn0fBmOEoQyUUhKynxer2cGQhm+tL9eab7kjs8ZRGOhRApJE5+ZiG2Cr7FQvI+R0CsYjQlGI6F4L3q9B+kxweuhJ6CMfaKBGE81AWWElyqiyIXDvXUovzREqPcR"
Data "RD4/g/TIG6gteEF/bxqJHLOqiHJLuviI0Q21FAVUoq6cvoyGQIovSVaagGy8NAH5B0sFsyd/wlVTHsmuUc3dGRnIincnEJ2REm6HxGArJHCjS7A20sO0kRXOMOpSPmhITkjAkSQQM8jhXhfB+4zclJRGbpdGkKX4kp5TvlkvAeMzs3oYTYXifUwEhJIkGGVA0j4Peu1jFuWSj3UJSMo5ySU5p2QgOQ9lpwx+Qk75SAu+dzXwnHLLlBA71BWQW9am"
Data "0N+aLft7ORoQAxq45Yf+fHnVfz/S19QEZOOlCcg/WLhbg9PEWtEpxycY51dZqCyKQHGml6wLI+QMkoKskORP4eULLaT6ayIz6DCyQ+rd8QUBSeEmbxm+ND+W0UulkgumPjMWEhAKmSCZAGQQuQuEYRRdIeyK9DrecouqCE99ZO4Y421AIBqIbYyXPon2E5CsWHLJWA99kjaiPTQRSQBGUi4Z56uFkEcH8eLuXgTcV0agO4H5QBNh5KhRvkeRl/KI"
Data "HLJ+CB6HsdUF9D0QlOSUdRUNcszXgGQ1AdmwNAH5B4usT46I5HGg9a2oVcVhyEm+g8TQ88iItEVm2HFkBJsjPYCdkPNBckc/HZEbZvgTdC+MCUZjsRUAyolDUpmMCUAKLzks5ZCUnFKIHsfT63gbR6+Lp32xFNrGkYvyNtaHwKPwlltao1ne2ogi8Tb6qS6iKH+MIRBZ0R503EOLYNRChIeGUNgjVYS4H0TA3QPwv7Mf4Y81EUefGeFxGD5uqmK0"
Data "T1GOL/3tPMY2nUDMoe+CnJLC15oyDh/4SyI1AJLzbt42lddLE5B/qFC+VEMnndSKWp2KkrwXSE+4gaQwWyQF2yA3+jhyIyyRF2qOvGBT5PmbII/gySMHyyKXy6Dn6SQBI4khTH7xSqKhhpxTNNLwQADKJ+NIL7e0j7dxFFqyYp/rvCbuX5TpMOWDmi8V6U1hKcvrsFAEQcggymCk5/UKuUd55GN6/FAD/jf3I/C2sghr4zy1EERO6e9hgcjASyhI"
Data "9yLKEuh7IKfkwfBVDCVR+CtAsprK66UJyD9UuEuDTjzkoqYiHnlZT5Ec44TYMApRw48iK9qK3NEMOaEmyA8xQ0GgGYpeHEHxM2sU+xxFvo8NMl5YvOz0ZwkIyTVFeEtKIBfl0TjSlqHj0TgCNpIYoVOvaD9yPb/DQlHPCTxS5DN1oQhfNZmeqSDc96BMPpQnetNzyhXDvbi74xDCn2ggnGF8rI3wRzqIfEif+5jCU9qG3DmEADdlhN46iGh3dXJX"
Data "fQR4mMDL3QxBvnbIz3xKlKUScZRPVte3vjYB+Q+VJiB/pfCJIyt8NjUmdkbOnaKRl+aOuDAHxASfQFLEcWTFEnBxNqKPMJ3yxOwAcsUAc+T7W6HQ7yiKnp9Ent+xvwNSBuMrIBlCSZILMnwCSAIwjkLfGMpL4/zIBQnE2OcMI3fwM5CHEF0PZFQ9kJE+MhilbfhTkgBSFWGeai+BDH+kJcSNP+EPKI+8S/tpG3bvEPxd9yH45j5yzcMIfmwMr1s6"
Data "8LpDv1egHWpL/Og7ofCVR/ZUcj5NT1mvwcj9tzK9+o6bCpcmIKWzRO7MkD2VThieKlUuJHNEeeWjOv8pKrNcUJB4ARkRJ5EcbInkEAukh1ogK5y2IaaUP8qUSQ6ZGWiBDAIz0/8IbY8QhKZyEFJ+yOFpvThEbUwyx5Rt455pE4QEJm1jnhFAIjzVoJyRnJK2Ud7kfE+lfkVZVwbDx9swTxXZIADhjOpCYR6HEPpYHaGPNBDy8BCFpWoIuq8qFHhP"
Data "hXLJgyKXZL0gp/S7oQrfG8rwu7MPz+8qEfyGdJ2i8JX7Knn+FgUQ1SSexsXfJo9oqqYLWRXKUVk/1LCpvCpNQMoDSZIeyi7sEpQ8iJyHxTGUnDOSuCWxKhWVmW6oSLVDQexxCk+PiGFvPH6Uh8BlhVsSkOYvxftZ/BpJyQHyrvj7gHwlBlJHwCjAJBhZDKOkqKecJx56KRmAMoU/IUA9NYWEM5IkIEMeqQkFuasg8MFBIW5l9b93AC/uEoys2wcQ"
Data "evMQAm8cQMAtRTqmgFDPA8iOsSMoI+kLJIfkti6SGGQvvlMGsqQeykra1wSkfGkCkkujMMrEJwwDyRDW1BTRDhI34JRnoTDjGYoSr6Aw7gSyI6xkA7kDTQRoDCTve+eBpFA25KYK/G/uoGPb8eL+Hvg90ERahCtRmEtfIn13si+y/rvluZQMJQ83lM2OaSqvShOQVBoDURLvl4WnnA9xHxt3gqehNCsEaZFuyIw4I5xQglEeyP//DmnwB4Hk7R8D"
Data "MuiWCkGpCv9bu+F3eyd8b++G+3V6/NACJZnP6PvKJ/H0EPFFitUSOOpgLBnOJiBfL//1QMqDKGWGrFcw0raWcp0qPrFy6GASynNeICv2LlLDLxFgR19CJgHJzxlIDmH/PUDKFOvLUFIu6cNQyhT1VJNAZChl4nxR0h8Hch+euexC2H16ze398HXdjWe3lODhsgcebmoI9T2B6qJg+gbJKbnFlb5QXqFE+q6bGnX+vvxXAymDUbYUhTyMspNFdlz8"
Data "w31qlQxjKlAUhNy4m0gLvYisyPNIC5GFqo1JHsZ3FUgf520IocdBd1Th40JQupHuHoDXrb14dPOAGExfWUxQikH29BVSPsmDKfj7rSK3bALy9fJfDyTDWCkka394CSMfJNVVcYsED5ymULUkHMUp95ERZk/udwp5USeRGcp9jUeE2BUl8CTg3m0glfDi5i4KV/cg8JYanrkehJfzXjy7vRfPH+zC49uK8PPURlbyTaIvg75gClO5TYyiVP6OK2vr"
Data "moBsUJqAlANS3h3FQVJVEc//49nyaajNfYbsyMsE3nHkRdqgINpGNNxI4pxRClMl2N5lIP3uKCHwvhKe3diOgJtq8HNTx2PHXXh6YyeCPHbixWNFuLttQXKUHVAaA/B0NG6opi+Yv97KKvFNNxW50hSyEowMJa+kxiuqCXfkg3QVr+WO7VoKtUqSUJzqjbxYZ+RH2xOIJ5AfbobMYH1khsjyRckd5cFj/RaQnHMylJLk4WwIaGOSwBRD6Z5xq6se"
Data "QalLMOoIiTGrPH71KcOpRVDKhsq9HDInB6QEY/BDVSEJRgZREgMpiQecv7izg7QHfjdV8dz1EJ67qcCXXNPn1np431kNX3cF3HPeLRuEXlcsYKwspi+XvuRKcsym8nppArJeDGN1jVwIJSbd0glUlY3q/FAUJN1HTtQlClNPozDKGoXhRsgO1hMz/RsCKQ9fY/saAvlbUP6a5IGUoPxXAMkw/mNAqhCQagLIZ2674EtA+txeDZ87G/CUXNTX3Ry1"
Data "RTGoKeWIg4yylGPXptKw/FcDyYUB5Jn+AkaROHIzPE93J2eszUJlfhhK0j2RE3cd2eG2yA0/joLwIwLI/FADZIW9csiGUDbUrwEpD2Vj4L1JiX7GYqaHmPXxzFA2y8NHXzbLw1tPzOgQszq8dIQiKaeT1x8F0u/uLgpdGUhlAeMLyiP9XPfQ480yKG9thOfN7bh7dT8CvCh0FS2uFSgv5i4ketpUXiv/9UDKiKSNSGfkYOQTpyYeOSkPkZ3ggqwo"
Data "B8oPTyAnxErM3GAgC8NMkEWP5Rt1fg3KxoB8E5S/F0wGUoKSgWwIpTyMvwdIzhv/ISAZRtYtyivdaL8r7Scg/Vy3kbbA23UTnrhswb2rO3DzykFZi2tVOn2/9a07TeW18t8NJMPIIDKDvOUwVYKxKgHVpYFIiXZCerQDMiLPIDP8qFipLSfYlGA0Q3GEJbLDZP2NDaFsDMw3ASmpMSh/S0kvTP4OSgZSgvL/L5D7xfhVGZB7CEgl+JMCbuyBv8tu"
Data "+N3YCQ/HjeL4XccNeHKH8ksPSwpH4ug7pnRANKE1QSlfmoDkc4KBZPGaMHyi1KTQlTwQRdnuiI84h9ToM8iKOY3sSBmQ2QRPAW2Lw60ISEvRuiq1sP4alL8FJEuC8veCyUBKUDYMXVn/f0NWArJ+UPnz27tlXSBuuxHgshf+zvQakselzfC+QW55fyceUeh602k/kuJu0fdMuaTsSyc1Fak0AcnnBPd58JZ7rWtyUFMaiYJsD2QkOSEu4hTSYk4h"
Data "N54ULQMyK9AMeUEWKIywaRRIeSh/C8jG9slD+VuSB7Kx0PXfBuSd7XhxaxsBuUsAGeCkAv/ranhyaQceXdmIUM+9cHVchjuuu/DgniFKimLrv/QmIOXLOwwkV/RvqKFD8jyhqlRUFb1AbuoNpEbZIincWsxtLEg8gfw4ApJgSws0RXawBXIjrJHD66rWA9kYlL8XSPn9jYH3JvGK5A1d8ncD+YdbWeWB3PkSyBc3yCGvM5AqeOSgiGc3CEqn1fC4"
Data "tRFOF1biwU11RAQ50RdOqYGYU/p7Qlce1SNJVnWsd628o0By5XIly9P2kjo5kTmW0yPurBYLVPEsjgjkJt1AesRp5MeeJMgoRA03p61MGfVKI6WKFtZX4rmPktKCeUwrDzQ3/g29gvPX9BqE8iGrfANPfb/km7pApG4PCUAB4SN1sW5O6EMVsXYOK/iBMoLuHxCS3ydJOsbiwQFCFLI+v7ULz113ivGtvs67hfxv7sVT52146LgOHtc34eG1zbh+"
Data "dg2e3dFAXZE3feeZJIayCrW1tfUrvcskUnpRGEIejP5qQWo+JNJ+cfzdKe8gkPW1KaqsIYzyktU23zBGLOPI++qyUFXoi7xER5Ev5kdbITfMVEiCUoIxJYIgIaXLQfk2Ayn1RcoDyY7IMMoD2RC6hkDKw8gSw+dI3Kgj+h8JSB9yRG+X7ULPb+4Wzz2dFMRzr+uKuGW3Umx5ATCAG3gKUVvHUDKFso14WA+kzBVld6bkWSKy0VWyGmwC8q0v9bUp"
Data "xFX2JvFx+QotRnlxBPLT7iIn/oLIF3MizBoASXmhHJCp4W8/kPIDBCQgX7pjPZAMozyQEmyB9/a/BLEhkHyM9VtA8mNpP2/5+YOL64V87hyi7zyAvvtcujByIw/VC1WIaFtj+xNdUU1A/smLPJDy+rVC4VJVOnLSnyI95iqy4myRF2uDzHAj5IYbvwRS1sUhc0mG8c8C5BvdkXPGBjBK0EnANQRR/tjvAZLDVek5P2Y9ubZVAHnr4nbER7vR959D"
Data "onSB+yaJsCpp1fO/A5LvoyIDUrqsNgH5VpbfC15jhTuoC1FREo70+FtIojAqO/YEAWmNjDDDl0DmEohSn+OfCUj5oXMSkC9hfKz+EkZ5d5RgC7i77zUQGx5j/RaQHKoygB5Xt+CR4yY8vrJZQMn7b19UxBN3a1RXcdjKDTwlYnaNuDcIV2U9bTIgX+WQEpBNOeRbWeRhfAOQXGuNSby+kE6CeBRkeSE11hEpUSeRRTDmxlKIGiEPpMVrQDKI6bRf"
Data "gvFtBpJhZDVsTWU1hFGCTgLu12D8vUA+vLzxJYz8mPNHfp37tV24eVUTyXEPqB6yRF1UlhS8Ik3UEW/+vlFHimjrX/LOlD85kAyUFLw0AFKq0F8TVTBq01Ga/wyZ3LIadx6ZcSeQFUPwRRsjJ/pVyCoDUtat8TqQr5QeYvJSacHGQqlBRr+ifx+QDcNVASNPsWIY3Q8IBT0g4O7vEwq4t1dIfp/8fkk8sFwMLr+9G89u7oSv2w74uBKMN7YJeTkr"
Data "wP3yerHl44+vEpikpy6KeHRtB25dVcGTe9ai75ddsq6cB59TPXJVijrijQxI2UJjsmU/XlbhO1beESClVtN/FMgyelssCrPuITXuAjLjzyIniddUNUFWlCGFrSb1QJojN9RSKCuU+xgpj5QD8Z8HktU4gA31zwIpuWPjQNbnjg2AlGDzv8vzHV/B2BBIPv57geRjIQ+VxfMHl9YJKB84bsVDF1U42u1Dfpon1UcG2R7PPaW65LU+6ssrICUYm4B8"
Data "SwsDyDC+GUjuXhST/uXCoKoqCn6q+D3FlDfeQVbCZZIdsuJPIjueoIs1RnaMgXBIXnU8h8LRnJAjyA4mhwyhsJXnQDJ4oUYvwftn1Rh8jem3gGQYGcKG3RzyDinB+Gq8qrIs9JSDrKEY0sacU5I8kNwP2RBIz+tbX+qJ05aX8ri2GY+vKeDO5Z145KoJn/vWdH2Mpvohh6ziXJLrU1YaA/JdLe8mkPXgSRIrEb6qX9TVUSbCCx/XZCIj/gZyEuyR"
Data "G38GOfFHkU25Y05MfbgaZSzubpwTSvtCrBoAaSTUGGS/X5xjNg5gQ/0WkJIzNgRSkuSOUqgqjcbxvyNzujdJArExIPm4BOObHLIxIBlGGZBb4H5lGx67HIS7kxaq8/iek3yznjJUl1P0wvXH9SUkQfnuwsjlvwJIdsnq6lrU1EivrUB1bQGKCyPIEa8hL84WuXHHRctqbizli/VA5kTIpldlhVoRkDYEpLUYMpcdYoqsEAMC0uAlWP+sGoOvMf0R"
Data "IOVbVxlICUYeFieA/BVJDTnyjTnyx6UGHR4A0LBRR2pNlVpapdZWeT25vg33L23D3csHkBB0jSqLwlaxsoCsC4SLrBobOKNUv+9YeceArC9SZclVWnV1JSr4RqpimFYxKqozkJn2lBzREYWxZ1DA9+KIpTwxmhyRnDEnkoE0EzljFsGYE3zs74Bkpb/lQMrnjpI7yo9RlVpJ36SGraryMLIYRnkgG+tzbAxGbnHlPNLr2ibcPrcGj64cwP2rOlSl"
Data "aUClbBJzFY9rpCKrRjkgeQc/ZNXX77tS3rFGnfoigSiJSnVNGSp4bVXRAZ2L4vI4JMXfI0e8iMKYk2LBqvzoI8iLMhOhKsOYE04wkjtmhRyTARl0lLay+ZC8fEdWiN5bD6R8Q44UqkowigHijUAorzfBKB3/NXfk7o03wkh6cmUTHl1cgYcX1+Hh5d1wPqtEqcMTqla+G3MFKspLRd3JqrEJyD9BkQeyvrK4SCC+rKxaMVaylvsckYOqumRkFwQg"
Data "Md6NwlN7FEefRJEckByq5kTIujnYHWVAHn8FZIixuPtxFik92LBR0H6vGoOvMf2zQMq3qkqh6ksY774aafMmNYSx4XGGUR5IeRhZ8iDKw8j9kh6O63Hv/CI8vbYBd85tptBVDU9cbShczaa6o/oSa0ZKVVkPpFSv3EjXBOTbVn4bSF4np1bc3ZhXAsinXZkoKA1FcqYHkpNuCCCLok4IIAsiLZAbaSrckQcBZIdZCxizQo7/HZC5wboCyrcdyFdd"
Data "HK+7o4CRJIWcb5K8K8oDKR3/NXdsCKQ8jBKQjy8sgfuFpXhwkY45qcPlnBby0oIpzS+g+uJGHBl7TUD+aQrXirxkRao3XsCqppavtJw78vCsZOTmP0VSiisyU64gP+YsAXlMrCQnA9JcDkjJISmHFI06lgQhd4HIHJLDVgaSw9b0IJN/fEv6vYMD/hVAvmzIqXdHvoWcPHyNqTEYfy+Q3JjTEMbXgdwIX6f1cLaZDj/6jAeXd+HWZbpw+F6hayyP"
Data "b+ULrVSXcnUsKrZe/PgdKn9uILkypCslS/wj66/i3awK+oehlFVuvliaIzX+CtLiTqMo46xozCmMJXeMsRYhqyxsZTCPCHEXhyTue2RlBRvJ1mQl8c1YZTJERqAByUhsMwm0zCDD39jKwGzMOSVJQ+xS6HMlJdPPeiUZmPL9kPINOvLuKIWrL2Ek+bjtFvK9uUfcl4P38XGGlvVai2w9yM9v7xWv5fdIEDYEUb5lVcoh5YHkIXSPL22Gr+N2PLFf"
Data "j7t2S+B0aj7uXlHEtfO7qbqSqb7oIkpVyq3ksrrlOqyPhvip2P9ulT8/kByxsrhyxAQ62awAaRJr5WtA5qKq4Dky4y4gK84K5enHUBB3hIC0IiAtX8IoA9JcKDOUwKmX1PfIkjkjQUgwSspkEElZBNzvEYP5rwCSHfL3ACkfroobrBJY8jDy84ZAMozyQErvk4CUh/H3ACm5owSkz6XdeHJ+K+6dWww3u7m447gK1x22oijTl+qT0oz6Cy73Hcvq"
Data "kKMdqlmuU1HnpHeovFtAigevBiCLZ/Qasd6quMFqOspyvQhIe2THW6M0lZyRgGQY5YGUYOTQ9fcC+Y/CyPr/CSTDyGIY5YGUXE4Ci6GSB1KCkcFlSTDyY3kgpfc1dEcJyIYwygPJMIoB5xc3wcthBzzObYG7wzLcu0hQXlgG5wsKCPNzpDorJCD5ispVzeNYuS2gCci3t3Bl8IWTyRMVwzUkhaxytwXgq2tNIapKYlCY4Y6seAfkJNigONkK+bEW"
Data "jbqj6Pb4HUBKIDaEMZvCWpb8vob6VwApn0NK8x8ld+QuD/lwtaHLSU7X0B0ZPn4tSx5ICWTJHdldG3PHhiA25o7ulzYIIJ+cV8QjO368Co+vrYbL+aVwcdiCe87GqCmlsLWaAKxhImVAyqAUhNZX7rtV3g0gX5L3CsiXrXJCVJkVWSjOCUBu4k1yx/PIS6DcMZFyRgLy9dzxFYzZ4aa/G0h50CQY/11AJtYPKpcHkmFkMYwSkPJQSTBKYEowMrAN"
Data "YWRJziq9T8o93xSqNoRR3h0ZRtbDCxvhYb8V7rbrBZBeLhvgYrsYzg6b4HhmHzITKWytLqL6rRD36ESdDEgOX99RHt8BICXmGgGSH8vyjhJUlyQiL9ULGbHXCEg7FCQdR368DMTGQlWG8XcB2QAyCURuiWXJH2soAWTwrw8s+C0gGUZWw3BVGhAg744SkBJULAZRHkZ+Db+eJYW5vK9huCrc0XVXo6FqQxDlYZSA5BUDGMgnDgp4YLuGgFzzCshz"
Data "G3Dh+Db4e12kKuT7chZT1ZYJKEXoKrqyaNc7SOSfG0guXCkvYZSXBCN3d+SjsigCmfF3kRZ1gdzRDoXJJ5AXJ3PHxkLVfwRISdz6ysoW3SIyyR9vTDIg3yxpmlZKoOFLJQcY1OvVHbB+D5ANXY7Baggjv06CkcNd3icPpPQ+CUgBozM5o9wAcjFwvH7eI4vXZWU9dCRnvLxeiKdgPSQovS4q4P7Z1ZRDkkM6bYCr3RKxKp3jKQW4OepSNaaS8sgl"
Data "iwnIStTW0sW2Cci3uTQEURIDyQ0APFQuC5UFgUiLdUZKpB0BeVYAyasCNAakBCPP9Pi9QEow/iNAyj6jcRAl/TqQBm8EkmFkSW4nASm5nAQWw9gQSIaxIZD8mr8HcsdrQL42tepXgGQYWe4X1uHp5a24d2YFHpxfDc+rG+FmtxzX6LmT3VY4nNhGICaQMkncwEPhKuWTYv5yE5BvY5HAY/FjqUj7eXRODkoLgpGZcBtpMZeRl3QBJWnnRciaHWXe"
Data "aKjKIEowSo/fBKc8iI1JHs6Gkn3Wr09wlgdTHsYkf30hCUbOH+W7PKQckqFiIOVh5K0E4K+5I3eZNISZYRTO6LIDns6KspC0EfAaSt4ZJfEY1gfn1+DhuTW4f24V7p5biVvnVsDt3GoRtl6z2wYPNwuqwzTUlGVRtVLEUw8hb6rk59S9I+VPD6SsOZxDUzkgRaXxPp7Gk4bSfD9xB6uMWAcC8TxKUm1RlHgcOf9hIFl/DMjXb9baGJAMFQPGwDUE"
Data "kkGTHLAxGFnSaxhcfq9oyLmxk2DcLqZOifywHsTGYJRAbAxI9wtrhTM+JMkDeZO2LvTc6Rzlm87aFOhEysLWeiC5erkdr7JW1rjzLpV3AkgeCCBrxKkvXEt1DGQh6spjUZrrhZwE2fKO+YlnUJxyGoUJx5AT2Xhjzj8CJEMlNeD8o3oF5JsXyZJv3JFv0GEY/1EgpbCTtxKEfEySPIgsHnbH4Dbmjgyjh5Pia10Z8o02jUlaj/U+haosAaT9SqH7"
Data "5Ip3CUIB5PllcD23FM7n6fnlvchJekD1mU8iR6wHsqqulmqdG+/erfKnBpIh5MVzZWI4xU6Zaitpm4eqwhAUZ7kjN+mSWBWA79FRnHQChXFHkRtl+YeBbAy03ysBJA/J+w0g5Vta/1EgpWlXUtgphaiSI8oD2JgkiDl3ZHeUYOTlNx5d3dooiBJ4rIbPJRiFLr4O5D27Nbhjt4KgXAK38wtEnyS7ZJivLdVnLkkGJOeO5TW8aHKDC/E7UP7kQPIa"
Data "nWVCPDrnJZAcz9SWkyh/zPJFUfptyh3tkZd4khzyGLmjDQpibf4rgOSGHQaL4WNXZBh5K4Wn0uBzFoPL4v18nCU1AEmhqgTjwytb4O64+SWE8uDJQ/cmGO85rMW9C2sIxuX1QNJzCcjziwjIOXAlKK+cXolHbnpkiRkyIIk/rmIG8u8io3egvBNAVgooZUCKgcgSkDXZyEt5hIIUZxQm24uGnIJ4a+THWSE/xhp50VYEpOUfAjI31ORX1RiIkn4v"
Data "kBKU/wyQkksyZFI+KIWqUogqD6G8k7KkFlUpb+QwlWF8cHmTTL8GHKnhMWm/BOR9BzkgbdcJIO+cW0Rh6wy42s+B4+klcL24H4VpIVSfVLlUtzwSkt2xCci3rDCQlSgREutZS+7Iqi6jbRZy4u+RO14lIG0JyKMoSLAUo3MEjP8FQEpdIFLYKg8kw8hbeVgZQvluEVn3xqu8kcNUdsb7lzbi3sUNr0HYELi79gTcG47zsbsOqwnIpQLK+3brBZB3"
Data "bRnIhbhpPx1u9jNw9cwiXLPbgZjA+zIgORMRQDKS5U1Avk3ldYesERUlYKyiSqrimQJpyIpxRW7CRRQln0JxMg8mN0deDCmaHZL0HwZS1sL6CsiMYJl4SJ28XgFpjCSebsVD5ljPCcpn+oj31UOcjy5inv4KkPUOyFvJHSVXlGD0u0UwuhGIN3bB24XnOMq2Dd2RYbx7oXFXFLDVq7HjrwNJMLJDvgRypZiKdfvcHApb5+Ha2cW4elYB/h4XKeop"
Data "QU0FD59jIPmGO/y4Cci3pnBlVNSWCXEliX+qiEheXa6SwtUED9J1FCbaoSjJGkWJFiiMtyAoKWSNPkEwHv+HgGxMjUEor9cA5G4Q7g4Jkhs6x10c9DreyuZamopbprNyAwnMF8ZII6X418979DdBXEC9aF+Ctz6SvWRK8jZAog8Davjypq0hjzUQ/IhCVlLAI3WCUQ3+D9UQ8EBViMNT/zu8lMc+PL+pBD/XPfX3dyQYr++At9N2PL3Gi1Vxi6oM"
Data "Rgbxlv1aoTsOFGb+06Kc0X4V7pxfTRDSc1v6vDO07+wq3Dq7DG62y+B0ajmun1PA9QsqVLkpqK7MoustX4AZSlmVv0vlTw9kdW0FASlbnUwGJFVTDYWrZcnIT3xAIaojCpNOozjRkoA0E0By/pgffYpgPIm8SKt/O5ASlBKQr2A0eQkiKy+AfpcXdIwgTHthKrtbMu2LF0CaId7fTECY+lSmFFJDIEM9NIWCPDQQ+FgGJQMpQSm6QQhGdsbGYPQm"
Data "GL2u8lIcfI8OWaj6rwOSRDDe5j7Il0Cuw+3T9NlnVsPt7GpcP70KLuc2wcl+F8qL/aiCM1BdV9wE5NtYGMiaOgpceK6jbIfMHXmGQFG8HJBnCUjJISmH/DcCyXoTlEIUprJ4JTtWXpDZa8omCDMJwowAc6QShCkkCUzepvgaCSX7UF7pKxMDybczZ0V4aQuFe2oJMNkxgx7KnJLlS7niy3yRwtOnzjwcjm+SI3NFzysKeHxlq3BH90uvQtXbBOO/"
Data "RARjY0DePr0aNwnGG+SYDKSj7TbERTtTBWdQNRfLmgmovpuAfIsKVwb3RHIHsWgPZ/Fojsp8VOWFEZD35IA8iqKEIwQkwRjDK8wxkBSy/huAlNQYlHkMobzqQcwJlikrUKbMQAsBJSstUAankB/ll6QkPwpnnxu9dEcJyOinuojy1kWkJ0HpcRihjyiEdScg78tCVm9uQeVGG/nRN9deQciuyCCyHlyUueMdcjYJqFvn1/whSUAyjLfP0vN6GG+d"
Data "XkFArqCwdQ2c7Tbiwqkt8Hp0lOo4g0S5JP3LTQVNQL5FhSuDJWvQEddM2kHhankGSjJeEJB3GgBp9W8HMo/vnCX3XN4tc4OMkE8hagGFpyx+LMHIi2mxZLcuIBiDj1CYW68ACyGGNJXgTCZghWtSeJtAUDKQsT76QjHeejIoGcjHFL4+PIQghvHuQby4owxPlx147LIdj5y34RH3L17digeOm192a7AjSq4oZL9O6M55cjPSzXPkZH9AfHtz1isg"
Data "ad8pyiEZRsofGcjrdutx7tg6OF/RRE11PNVzMdW7bEWIJiDfoiIBySi+uk1AMWpLk5CX7In8pFsoSLwkAzLhOAFpI0bovAbkH2zU4ZvxyAPXUAykJGmfBGResDEKCUBJ+QRgbgj9HuL2Beayu2zx7e9ImaFWBKYluSop8IgQw5kWcgTJBGxSsLkIYxNeGL8CkmCM89JFrKcOoj20EPHgEELvqiLoljL8XSlvdN0razm9rogH17bi/tUtuM8QUp54"
Data "h52QxHmifIgpgchiMBuD7B+RBORtbsihvFEC8ibDSLpxdgWczqyFnc1qXLLbi/zsF1THr5aIfNfKOwMk3ypAmvtYXRKFrIT7BKSrDMhEOwLyBKWVx+qBPEZA/mtaWWV3x3qzZPeWlEl+P3d5MJQF5IavYCR3lEAMp9CUFWkplB7Bd3QmKHkldZLsxj+WSA23QVK4NZLocSI5ZsILUwKSW18pl/QyQIIHQflIBzH3DyPqziGEuakgyHk//K8p4fm1"
Data "XSI0deeuDO5bJBhvX9qAWxfXw81hrdCN86vF7AsBjwgx1wgY75+XOaWb3ao/JB5IftN2RT2QBCfDeJL2MZCnl8Ll1BJcPbUS56xXwuH0DsRH3aNKf7VE5LtW3hkgq3ggQP10q6riMGTE30J+sgsBeaEeyFME5HECkmD8NwKZF06gvQFKBpJBfAUjhahyMKZGmCM9ykoojYBsCCU/Tok8iqRIGyTSYwYy0Y9CV19jJHkaIMlDHwkPdZB0XxuJdzQR"
Data "66aGSGdlhF7di6DLu+F3aSeeXJK1nnJ4yi2o7IoMoqv9GiFnci+eeeEq4OEW0VdAstzOroSr7T8vNzsKTUk3beWAJBhvnloK11OLcf3EIlw7uQz21stx8dR2hPpfowrPpHrmhrx3qw+Sy58eSNHLIZ5xRlGMmop4FOV4Izf1JnITr1C4ehFFSedQknCWgDyJgtjjL2HMjbIhCC0EiJIYSEkMnPzzxsTAyeuN8L1BfDNYBpEnKssmIBshjadi0e+V"
Data "EW2JZDrODpkZfQxZMceRRdsMAjArwkZsE8IJ2NjTiKXwNSWEwHxmhqj7Wsj0Nke2lxmKfen4bR0UPDRBzKX9uLRvAlwOzUTQGcoZrVbhse0GAYArnfS37GRO6HyGJwkvE+7odHa5kAuFjhw+MoAMzx3b1UL8uDHnk9QYhPJiGF1tyQ35c7khh52Rf5eTi+l3WoCbZ5bCieB0PLkadkc34rLtIapnvmUd3/dDasx7d8qfH0iKXF4BWYjq8igU5jwh"
Data "IG9QHnkZRckXCEh7AtIORXFnxZ2u5IHkxZDfBCRL/lhjyicXexOQv0fJ/vrkeKb0O1nR73dU3PSHG5pY/FhaqTwliBwz2EL0Qcb4GSKRwtx0AjIuxArJkccRTzllejC93tcMiQ/1ketphqQbGvC12QCnA1Nwbc8EnN84BIfGfgedyS3gtGs87mrPhdfJdXCnvO3OCQLh2BKRtzGY7IgMpSSGlKFkcFgcYrJ+yyEZ4jdrGb2GLga2tD1DYJJkQC7B"
Data "TXJGBtLt9CI4n16CS8eWw/7YRlw4pUz1nE4c8koQHLY2AfnWFAay+jWHzENlWSgKcx8iN80J+akE40sgz6M4/hwBaUsnf32DTrS1AFI+ZGX9o0AW1CufgGTJN+T8mhjIYs5reeV0csGC8CMoCLFAfiB9jp8xcp8ZojLyBArI/XL8Za2q3GAT9uQwwrx1EB9ijhjOG4MskeR/BJkBFNI+pYsCwZh73xD+RzfDZkl3HF3UDY4bhsFl62icmtcVZhN/"
Data "gc2sDrS/C04rDISz/gx4nFiFe8eW4brFPDhZL8CN0wQKQXmV8jjW9dMyKCVwRHhJ+qNA3rDjhhsKT+kz+WcyjK4E480T9DucmIsbp+YRkIvhYL0IF09ugt2xXagpjaZK5ztkNQH5VhWRPxKNMiCrqGqyUF7qj/zsu8jLuIqCNIIxxQHFyQ4oibdHcdx5FMbYoSDmtMwlGwDZGJTy8DUmCcY3QSk9b0zsqIWUH4pbpgcaoyjYHCC3Q/gJ4MURlD8x"
Data "QLmXMTJuH0K8myqSH2pTbqiHsEcaYuRNJMEZ9dwEUZQzptDrs/wsRZha5kUh7nUNPFCdjRPzuuD6+uF4qDgRN9cMh8Oc7jg1uR1sxv4Cw1HfYffA92C8rB2ua0yGu/VS3LaknM1sDq4RlC4cuhIgV07xMv+y0NGZwGRwOLwUEDUK2ivxZ7xZS+FC7uh8don4TJdT5JQnFuPG8YVwOz6fNBfOx2bDhYC0PzIfjqc348yRrXSx9aVK57D13csj//RA"
Data "8oJHEpDVtekoLX6OvGw3AvISCjMIRnLJYnLJ0oSLBKQDimLPEZBnRcOONLhcfk6kPJQs+f2NqTDSQqgxKFny+xtTXqg5SqOsgbhTQPxZIOwk4GmCkusqyLTbjiDDJfDUnAV3rTnwO74eUS4HKEc8JKAM9dBC+FMDRBK4qb6Ucz6ln+1hjorHRxB3chdubB6DOxvHwHvnDHhtmgiXuX1hP6EDzo5ujdMjW+LYuJZQHfAhlEd8BPNlHXBbdyaenl4r"
Data "nPKq+RxctpqHq8cX4SpB4kg5HcN5vR5KhkeoUdBeiV/7Zi0hGMl9zywWn+V8cinBuAguxxbA9dg80hw42UzH9ZPzCci5uHRyPU6Zb0ZMsBtVPAFZK+WR70750wPJ8x8lICurk1Fc5IXcbGfkZV5EUSa5YiqFqykXBZAl8ZcISHsRtorGHZ4TWQ+kJAm0fxTIhmBKQDY8Lq/iCAuUhFuiLoYcMeoEqrwMkXZuO0J0F8Bv/xS82DMJ3tvG4ZHiaNzZ"
Data "MRbuh2bi2Yn1CHfZj4i7agi6p45wD11EMZAUqqY9MkLRYwL8liECdFfChRzRe9s0PN04EZ4rR+Px4mFwm94LDiNaw35YS1ya2hnHp7aC9tgvYTanJW6oTYKX9QrcNl+Aq6azKWRciivHFsKRdJnCSIaS4XQiMBkeoUZBeyUG+M1aTDAS5ASkeHxiCcG4UAB54yiFq8dmklNPw7WjM3HReh4cbFbgjMUmeLvbUsXnEot8R+wmIN+a0hDIiuoEFBV6"
Data "ICfrGgFJ7ph1HiVpFK4SkGWJjgJIdkl5ILkxpeFSkPKSh7UxFUUdEZIgk3c/lnS8MZVQuFwUQKGtly5SnPci2GoFvA9Mhsfm4XixcSTCto5DqMJEhO+ZDr890wSUt1SnwpecIoygDLmjhlB3LcQ+MUTqExOk3tVD2WP6Gxw18JDec3vNSATsmAWP5SNxb2Zf3BjfBecH/IRTPb+Bw8AWuExueWpSS5hM+A4289vCWWk07hnMgYvBTDibz8Nd29W4"
Data "YrMAl48uwCUKIxnKK+Rg1whKhkeoUdBeieF9sxbBicJRp9O05cf0MxhI56Pz4WIzCy5HZwggL1tOFRcGW4vFsLPailtXTKjiySErKI9sAvItKkQkz4EUYKIUlZWxKCx4LIAs4HC1HsiyZAbyUj2QlEcSkK9uYy4BKTml1C8pyy3l9//91hJFkVZChRGWLyUaZ0j5EQQq5YgNJfuZsvchnn6Xx/qIPbMZQdpzEaw8BRG7JiCCgVw5FOFLhyBJYSpC"
Data "FCbj+tJ+OLeqL+7Q60Iv7UXsncOIvKuF+CdGSHpijDh6XPbYFFn2++G+YRQ8V4+G39rxeL6cwtbFo3BzUk/Y9ftB6NyAH2De5WNYDf0OeoO/gMn4H2G/cQDu6c3FA8tlcLMiQCiPdLSm3I2AFCIoOIRlIJ2O10PZCITyahxEORGQ104tEv2NzgSk81HaCiDpwkBAXrWaigvmk+i1i3DamEJX6624bqtJ4WoWUMZ5ZBOQb1WRLc3JiX0BSopDkZt1"
Data "HwXZLijNvoIScsmytAsoJ4csTyIoExxQyo07sXYoiTlFUB6XQSmW82DxKgLWYq2dXALnt7bcNZEfRtCFEny0ZeURiJJyWJEEadwxFCfRBSD+GLII9NQwM2TTzyxNOItsb3Mg2hFw00X0wekIVhiK4A39EbSiJ9I2jkDi/AFIXzYGEcvH4+nacbBfPhAm87sg7txBpN/QQdp9E8Q8MkTIE10xsDzX/TDirdbg+eohCFs2HM/nDkLQ8nG4ObkPjvf5"
Data "AafJIU8P/B6mXf8Goy4fwLJ/c6i2ex+H+38J5cGfw1VzNpyN5uP6kYWiYUcAaT0X12zmwYlAcbJZiOsEjdNxgk1IBuc/LYKSwebH/LnONvTcZj6c6Wc6W8/EBdPxImS9bDUHDuaLcMpgJc4aK6ImK4wqv5CAfLdG7Pz5geRmVtEflYey4hAKVd1RmHWDgLyKsgyCsB7ICgKyPJEex9mjNIaBPEP55CnZqB0e20qSQclAMnS/LdFXGG79mvLrlRsh"
Data "U3YEvY5+RlHCKeTFn0BmlLUYeZNNkJYlnEPJ8+PAs9MoPrEDwZtGIGrrEGTvHYtUhSFIXN4XKTN7I23uMEQuHA3fleNxecUw6ExogyfqS5By8RDS7hgh7K42Ajy1EOF1mJ4rI0hrFl4sHYDYpSMQQ+95NGMA7Ia1h2HnL6DR8i8w6/k5LAd8BY22/wuTbl9Cp9NnUO32GXb1/htMV/aEs8kCOFktEY06LAGk1VxyzHkEiwzI60eX4NoxGUh/RBKM"
Data "zsfIUekzr1vTfroQMJDXrWYQkBNx1WYGHC1nCyDP6q+ErbEC1acfVT4vDdkE5FtVZIPKufm7IZBOBORllKdfRkXqJVQmXxJAskuWxJ0jlzwrB+Qr5UUfFRKDBn5DeZHcf0hQNiI+xsok1+TXFsadQAEpL+YEueNxgvMUKuPPAaHnkeOggkjV2YjbMxHZ+ycge9cIZG4ZglxyyNL145GxdAyCF4yAx6IRuLl6DEzGtcbFFYORaq+ClNuGCLh5SADJ"
Data "a+MkX1fCQ8WheL64PxJWjhPueGFkB+h3/wbaPb6GZsdPcPCXZtBo9xcYdf8U2m0/gn7XL7G3/QdQ6Pp/2Dr0Y1wzJPgIyAsWs3HJcq5wp6uWc+qhXCCc08lmMa4epXDzGIWwf0AMI28ZRv5MJwqVr1mRQ9PPdLKcLoC8Yj0dl4/Mgr35AgJyuQAyO/RBE5BvY3kNyKLQeiDdXgJZkXEFlWmOqEy5gopEAjThEoWtlFvG2aIo7rRo3JE18Pw9lL9L"
Data "Ar43A5lF4Sw7JYfHxXEnxc+UVB1tC3hZI/XIJiQcmocS/cUoVZtBMA4iGIegTHE8oLEaZbsWIHzFeLjPGYTH68bDfjblgnO6I8VuP1LvG+IFARn6VBchd5WRcGEbbizvQQ45GPHrp+A+vefkqI7Y1vo9KLR6Hzp9vod6+4+w/+dmODKgOTnm+9Du+Cn2dfgQit3+ijV9/oKL2tMFkPZmM3HxyBzSLFw5MltAedVyHuV18wnKRbhiw1rwq7p6lPLO"
Data "3yH+vKtWtLWk5/QzrtHPvHZkBi6aTRKNOhfNZwggbQ2X4azRZkQ9oTC/JrcJyLetvBHILGeUpROIGU6oSr+GqlQnVCRfpVzyMuVu5JJi5M6Zl0D+81DKck+poSafQlKZjgrlhBOgETYojj6JsrgzqEiwRXn8WREy1wQfR8653Si22oxK6/WoMl6Gsv2TULd3Mmp3TkIahZ11B5eiRn0t0nYvgvfS0fBaPgY35/fHuantEXlkM5If6CPwniaifQwQ"
Data "efsg4s9sgfOCLgheOQoR66fCcXpfaA9uibUdPsKylv+Hbe0+hlafH2HU/wfodP0MWq0/gmrL90TIuqfvx9g74TucOzSJwFhMIeIsoQsWlMOZz4SjBYM5F1cImCuWnF8urM8x36zGIH1dHBLPFzDyZ16xoPdZEPj0c69aTMcl88miUcfBdBrOm82vB3IjnjpbU+VLgwPenfInB7IWNXwjTzHtKucVkJm3CMgbKEknCDOdCUpnVKW5oCLlOgF5BaVJ"
Data "l1CSaI/iRDsUUtgqwslGoPx9kjUKSeJGIpmOCRVHkzMSjKXRHKLaopp+LoeqJeEnUel7BOkWa5GnsxhlpisAs+WA5hxAeSbqFCchYV5fhC4bgoz9S5B3mFxh+3x4LRyGO9N74dzYn3F/9wTE3dFGyCMdcgxdxN9SQ6zlOtxa2BshqyfAe/l4mIxoj1XtPoTqzP44tmUWQfcztrT8ELr9f4Zm1y+g2/FzKLf4C9R7fIG9/T+F0bJuOK8xGVePLBIw"
Data "skvamxEYZjPqoZyDyyTHI/MpnGXN/VU1BLShOBxmORLo/JmO5pS3ms/GFfq5jmZT6WdNgb3pBJw3nkJAzoWd0VKcNV4Pt7OHZS2tTUC+TaUWtTVyQIoc8pEAsiTLlYAkGDNdUZnuioq0GyhPdUF5shNKkq+gKIlcMonHthKQ9SrgrhASD6v7XWIgeX5lHEEptkcJapk4RGWxI5ZReFwea4saCpVBF4PqOHsUBh1H6WMjpGgtQOKOMUhVnoA6k8WA"
Data "3mLhjiVrRyOLwlP32X3wYusMxKquRorqOsoNR8NjZj84jv0F5xd0Qrgz3w5AB+H3NZB8QxVResvhvmQQ/FdNhMvMQdhK0CmO64QrRrsR7noCjntWYVvX76HYhvLHXj9Br/PXUG/9AQ52+QQ7e30IizV94Kg3i8BYIIA8bzqDNA0XTSUoKa8kXbaYR6Esi0PaN6sxCOV1yZLzVP48Bp1gJBe8ZErvM52Fy/RzL1uQMxpPxDmjSThH++2MluCM0Rpc"
Data "tNxN1Z/RBOTbVSQgeR5kthyQdwjImwSkCwF5C1UZtwjK2wSkK0qTr6OY8kkeTseDzgsojGwI5O+FkltPcwlCSQJKKQSmz+C+zupkB1TE26Mi1h618RcJSEdUx9gj3/8Eiu4bIHDzMKRuHYGMAxOQrz4FVQemoXrHVJRtmYpMhVl4vGYcbm2YDI9t85CouZlC0SkIXDQSd6d1xvEJP4p5jWEPtRHmooy0q8oIUVsIj6XD4L1iEk5P6IPF7T+lk3sf"
Data "nt86g2fOJxBx6RhsNyzA+jZfYl+X76Db9TvRyqrU7n1s6fy/MFnRAy6mCwmKecIdJSAvmEhQzhJAXjKfS8D9NpBSS23jmoNLVrPodQQfAcmfyT+XgbxsQmFyPZDnjCbAzpCgJEjtjBfhjDG3tG6h6k+jeueL8btT/vRAii6P2kJUliehtCAIRbmeKM11R2X+A9SSqrPuCVVm3EMFQVmW5oritOsoSXUU41zLUuxRlmSH0kRbMWeS80pucJEAZfAk"
Data "SHmf1CAjXpdwRnRliHuGJBHUSXQs2ZagtyMnJghTLqIoxg61KZTLJlwCMlxQGumA0nB2ShfE2e+F45hvka04Egnbh6NCey5qVOaiWmkeSvcsROSWmXBaMwF+RjtQ4XwUSUb7kLJ3NfwXjqT8cCxOjPwOD0yXIuymOsId96L6vjE8t0yE/+bpeLp2BhRbfQK9lZMR6H4RT26fh7erPRJuOSLu0kkoDe2OrR0IRnJLbtTR7P011rZphkOzWsFOfSLl"
Data "cgtxQmc8bI2mkibjvOFk2BtR+Gg0DfbG00kzcY6gsTMmYEymCzHAspxz9ksgGwtjX2k2LhyZIXSRQL9oRu8xmYsLxvTYaDppKs7qjYG9ySTYGkwgZ5xCP2chLCmsP6pN4X1JJNV/E5BvUXkFZFVporgxa1HuU5TmPEJl3kPU5D9GVY47AemOqswHKMu4i9L0WwLIorTfD6QEZWNA5iecRh6Jb3NXwGv3JJ9HSQr3fV4S4sakWgKxIvEakHcPSLuJ"
Data "WoKxOs4ZAce3wXnSTyjaMwHZ+yYhl9wxb+d0lB5YgtA1kxCxfw1yr1kB/reA0IeodbNFiuZ2hKydjqClI2E36gfY7xiB8GvKSLp6EEVXNPF43Vj4rCNopgzEju4tcMNGEwHernhy/wp8b19DyPXLiLriAKsNy6DYpw20uv8gHFKl66cCyAOTf4Ct2gQBxkndCThrOIVE4aLBJAHlecOpOEc6bzSDYJwhgGUoWeym8lDKg9m4ZsHBYroQA3nBlN5j"
Data "PAcORvQ+w5m4QD/7jO5oEbKe1R8rgLQzngfLwzMJyCWoo/qWRUfvTnkHgKSQtbbgFZA53gSkBwH5iID0QDU9rsp+jMqsR6ioh7KYQtmi9Gu0vYwyCl3Lks4TkLyqgB2Bxt0hsonMsmlap4T4Me/jYyzxOsoP8wnk3CRb5JEr5hPcxeSK7L5lqdeEqih3rc28iaoUV4B+H+Q8BrIeoi79AeKuHEbYjnEoPzgT+QemI33XZDFMLmXPYjxaNQUlFwnG"
Data "aC9Q7AvEPQMC6D0G+xG+YwmeLRgOl6mdYDqzNeIc9yPTUQUFDqq4TeHq000zodb9RxjPG4sID2f4eN2Ex70b8H94Fy8cLyPE8RLcjhhgQ/8O0KQ8Urfz5yJkZSB3jv4SZ1XHw05vugDytD6FvvoTYKtHYaP+RNJk2JLsDKYRqNNwxmCygFYCk51SHsxfF3dlkOuSuBWVXZdhtDekY/oEqsFUnNEZS+HqeJwhpzxNYetZOm55eDpstBeiPMuX6r8J"
Data "yLeoNA5kSY4nKnMJxnxPVOd6oYZUleWFiuxHKMu8J/LLokxnFGc6Cjf7I0DyHZnzKU9kFabKYCxNIxjTnEkEftJ1CpfvoDrjATnkE9oSjNkEZlkgEO4EXFZDkcosZO2ZjMy9sxGzbTZebJmLYO2dQHIQhbakvHjkRXoTnD5IPGOMCJXN8Fs8Dh4LBsNs/E9IsN2FjHN7kX1SCS4LB+HB+ulQaPsV7hmqIuSJK+7ddsKj2zcR5P6IHPImnjlcxAOH"
Data "01gxuDM0+rYUQG7/5X+wvl0zKAz7BKeUx+Ck5kQBJIetJwiK09rkUDrjSBQ66k4kTcYpPdZEAW1jYEph7JtFrzHlxhpyX25FJdc9b0ChsD5tdQls+vzT2mOEO54mpzypPx6n9KfBSmsaATkfuQn0nTYB+TYVCcg8OSB964EkGPOfUh7pi5o8HwLTF5XZT1BOIWxxzi0UZd8gMK/9MSDjz4kVCQooNC1MvYyi1Kuy/JQcuDTdjdz4NkrSbpM7U9hM"
Data "FwUU+tKWwCp8QZE25T9ZnoDPSaTvm4KU7ZOQtX8RwrYvgOeuZah6RLCWZ9Dvn4Kqkgzkp0cBmdEoIceLMtyH4LWz4L1oOGyntYe32mwkW23Fi4PzcXslnbhT+uDgsC6IoZzRw+0K7tx0hsfNuwi4/QjRNx/By/4ybjuew9aZo6HRr5UIWRnITR2bYduIz3Bi/ygcVRuLY1pjcfTwGNIonDxMnys0Fie1xpEm4Li2BOx4AS/DKQ8mSwKzcdFrjMl9"
Data "SXYUFrPrsjPb6hLQOvRYZyJOaY3GKZ1RQif0xuG4zmQBpLXWHCSHuVD98xSsd6f8yYHkkeWU1P8dkE8JyKcEpA/lGX50Uj8nKJ+hKs8bZbmP6TiFrTkETA7B8weBLE65jMKUKy9hLM24gVIKUcuy7gg3rivyphTXh0QhZxm5XUUoKQI1xSFAIl3hvY4hae8UpG6fhtRdC+GnMA/xNocptI1GbW4CSgozkFuUjezCdJTnJwHxzxF7TAeRisvht2g0"
Data "XOb1wrlZHRCqsRgX6fGdNROg3O1bXNi2FEkPb+Axu+P9e/C58wh+190R7foETy9dg8vVCzi8YzXU+rfB4fYfY0/b98TQuX0Tm+PY3hGwUR0Da41RsDo0krYjcOyQTMc1RuOYEMM6TkDLOq497jUwJdeUwGxcBK8RhaOG42BrQOGoHuWrOhSmak+DrRY91iJHJCBPaI3ASe2ROKYzGjb0M63pNVZasxDld4nqvwnIt6j8NpDsRnX5Lyif9BPPy/M8"
Data "UJp7D8V5BE0uuSTPlUxyICBfrbtTFMcDBigc5ZUFonlRLIaTIWVYebEsBpdeF08gp1ylz3B65Yz1MJZnUb5KuSLK6WeX+JECUFdKEFZGoo6ALC+ix5nkmn5nkaW1COk7ZyFx2zz4KC4Cnt0GWSzysxOQmZeB1MJcJOalIq8gGXWZYUhwOIJYpQ0IWTYJDxcNhs3Qb3Bv7XA4zOqOy/MHQbX/zwg/Z4bo+8547nkfD+/dx4s7Xgi49hBBl+/D5+pN"
Data "XHZ0gK7yFqgOaAONtn8T/ZDbe7yPw3Pb4qjScAGkucpQHFEbDkv1YbBRk+mo+kjYCI0mWAkQTZnYSRlMeShZskahN4nyU4PRQmf0CEwKgxnG01oEpSYBrTmBHHkUjmkOE1Ae1aYLhAZdKOqBDPI6Q/XfBORbVF4BWVEmA7Ik2xel2fVAkiuiiEAo9Ec1gVmZ/wwV+V4oy3uI0jyChlyyJPkySpMuNALkrzmkDEieW1mRwo0310XOWELuyAMSOCQu"
Data "y74vwuOaAi9yyecEWBAqCwLpQhCA0sIwVFbG0+8dSzniPRQe2YLEXTMRs2s+vJRWAAV0LC8ZtVWlqKioQHltLVKKC5Bbno/y3EQkupxD3IEtiFw5DV5LhsB25I9wnNIZj9ZPgsWYzrCcOxL5nq4IeeCCwKeeuHP9Bvxue8L/hgc8HFzgdd0N586dgLrCcgGkausPod7rS+zq/TGMl3TF0d3khipjYKo8FBaqw4Ss1IbCWnUojqnSsXrZqBEkh0YJ"
Data "B7XRHCmglHdKFrukvLhB6NWWoNWncJTEQJ7WIUAJxlOaDOQUnNagz6Ew+ajG0JdAWmqQY+tMEWHri8fHqP6bgHyLCi8nX4YaEJCiHzKYQKDQNMdH5I0crtaVBKK2JBiVxYEoJzDLKacsy+Vc8gEqsm6jPI1H7lxGcYI98skF88gN82IIwtiTKIijbcwx0dHPnfw8O6Q47rQYmC7TOVTEX0RF4hVUpF+nz6RwtcANRQU3CTwe4H4L1bnkknnkhAUB"
Data "QEk4hatxqKpJQ0ldGrklgZcbiFyb/UjRWALPTWPhq6cA5MejNiOVLiqFdLyEzrkqZBeUEJAVKCopRF1sCBLUt4sB5w/n9Mad2T3weO4Q3F88AYf6tUOs4ykkeN5DkMcDeN+6ixf3PfDE9R68yClvuVzDDScHuF04iUPLpuFg35+h3esb7O74AbZ1/wBH1w7G8R2jYLF7OKxUxsL0wHCYHBgCs/2D6PkwnCQIz6qNxMn9Q2C9px9BOgSWh4YKWR0a"
Data "LsJcdkwOaVmca7JOaRN8pNNaJAKPG4dO6xK8uiOETmqPwYnDlI8emix0Um0STqqPh+VBugho0msISBvt4RS2joElQW94cCT8n1jTOcDLQb475U8NpLgdHSpQWQ9kWWHISyBrc18BWV0ajIpigrXIH6XkkmW53OLqTkDeFe7GQBaQO+bGEpAEI0+REiNu4mhbP1eSh8EVxZ4QQEpQlsWeA5KvABSu1mW7kAOTQxa4oCDvOgqynFBIn12a4EL5IAHJ"
Data "IWpuELloAAoKIlBYnUzXE1JmEHJOqiHx8BL47JgEXyNFctMUej2daAUVBHM5atILUF5OTykgyCkpQ3lcJEIPbkXillnwWjgA92f2wqNZQ+A4cRBMp45Awq2riPZ+jABPD/jdckfAPU88dL2Ne3dvwunWZThdP4uHF05AbeZIqPb9EVq9v8beLh9iZ6+PcHztEBzfNhIWO4fhyIFRMFQaDNODwyhsHSGAPKLUHzZKA2CnMhyXCCoG8oi6TBzaynLO"
Data "UeScFMISkCcOTxQ6dZigrJeAUpvyQx0CVmc4jpNOUK54XHMcjqtPIk3BCVV6n9oEHFEeIoA8fphg16KQWXs0ATkGRioj6O+zobOgCci3pkhAVlGlVJQno6wgjFzquQxIcsI6zh8bAlkgc8g3AZkbfZJ0XAZkvDR4nIGUjU+VXFIan1odcx418Q6o5DmXWRS+5lLomkdOmXVDjJ9F/hMgi0Xhc14guV04OXY4SsvILekCgiRP5J1WR4LaPPjvnISn"
Data "WuvISRPJSSkUKyIKiysplM4Uq+uVkHKLCMj4aIRo7EaK0jIErBoD95l9cW/GYJj0aQvHHWuQ7eOOKJ/HlGN5Ue5IUN57gjtuN3HD7Tqu33bEtSun4HXhFHYN7w7V3s1xuNdnUO7xEfb2/xjH1w3AUUVyxO30eXsGw3jfUOgTgLp7+sBwd19Y7O2P4+Ra7JJnNQiOg4Mp1xwMSwJThLXkoCzOMVnHKOw8TrngCQ1yQ9JJTQpD6yUg1BqKo6RjFPIK"
Data "V1WbiKOqk3Ds4HgKm8cJII9qDBdhq6XmENhoUdhKDmmsOhpBTzlkbQLyrSnyQFZWpPzDQFZRyMqd98VJlwSQOTFn6oE8Ksap8thUnl7FQPIMDoZScslSgreMQtyKyDOoiKbHFPLy2j3c6lqQfBWF8VdQHH0NGd4EuY8DEH1P5pIlYajO9qE81oegCyYgKZ89r4HEA7MQuGUMHuycDaRSeEv5Ym0hnWyllajILBArtFPkioJiighSEpFywhjhu5Yi"
Data "etMMeMwaAOcpA6HS9Uf42OihKPw5Ip55Isjbh8JVT/jefwJXV1dcdLmEq7cvwunSMXidsoJCt1ZQI3c81PsjqPb5CAcGfwrrVb1xZFN/mGztC/3t/WBOoaHhvkHQ3d0PhnsHwpJc8oT6KHKwkbA5QDnmgcGwIGhYRwhUPm6lSuEuHbdWo/BVfazQMXVyzHodPzRWiFtrGTRrzcGw4XCXX68yHtYHJ9Bn0/uUx4jPF8fU6WeRC1tpEpAUApuqj0Oo"
Data "z2k6C5qAfGuKDEi+XWuxALK8MBwVuf6Ut/kKIEEAvgSStmVFfnJAPhBAcispT8cqpHyQ88ecqBMkdkXOHY9CmucoTavi6VQlFNKWxpJLxtAJkUywJdmjildHjyOoI84TT2eR8PQUEh8dh6+dBjyPHoTPCQpL3axQE+VKVHkTaPT75VB+meUBXNNBtuo8RG4ahTtrxwDPKMytyCQV0etKKdeso7y0GoVkmqVl1ajNzEDN4xt4tGkekrcvwdPZw2E/"
Data "oQ9Uh3RE3N0LdHEJRvhzbwGk3wNP+Dx4gus3XXHuugMcbzrAxeEobmtrYFu7H8QYVvVeH0Ct79+gPPAjmC3qCKMVXWC4oSd0NveEyd4hIo80PTiCwBwCnR0DoLd9AMz2UqipOpa2Q2FO+1kW+4dSmEvhrfJwISt6j7UKgVkvG1UCTnWMEPdzcmuttfpgCncpPyWILVUItgNjcGT/WFjtI/fdR6EzAcnOa6lKobPKIMpVab/WJJipT0TEc0oZmhp1"
Data "3p4iD2RVZeprQHL++GYgH9cDeVPWbZHoQEDaCXfMiTomgJQ5o2zdVmnisTyQvEgWA1lNoWs1wVxO+WRxpD1yQuyR/uwcUjxskXL/DNLunEXoeWO4am7EOaV58Di6C6XB9hR7PgBSCLwsck6nw6jWXYq0bRPwZPUIlFw9Qg5J+SXfv6KshLYU7eaUo7CwlkLzWtTmZQNxgXBZPxcZu9fh2fxxODamJyyXT0am/wOk0bHQZz4I9PLFs3se8Hr4BFfu"
Data "uMD2xgVcvmGHW/Y2sFu/CsodWkCn77dQ7/4eVHp/gD29/wqtKS2gPbcN9Fd3h/a6ntDe0heHt/SD+qY+UFnfk9SbHveDjsJgGO4YCtM9BKvSMAGoDM5hL8GUh/MVpKNeiVzUXHWQkMxlR8Bi3yiY7x1NuSrBqDQc5vsJQgqHLQ4OhLHyAFio0bHDk2ChMR1RLy7QWdAE5FtTZEBW03+lBGQ6GUqUAJIHAbwOZKAckLLBARKQPDeSgSygfFAAGSFb"
Data "T0cAWA8kL/vIyzcW1QPJ4gnHrPxQctKwkygiZyyOuIziUAqBg1xQ+twNZT5uKHC/imqvG8hxPYM7Opths3E0HA7OQuR1VSCCrvCBp1ByahvqdJYhf9tEPF85FPGmO4hACm/5tms1JaitrkFpcR2JTJOArC7IA9KicWPnaqTv2YwXi6fAaGRXOOvuRFa0N6IiniHkOQHp6YOndx7h8UMPON4nh3S7gEtXT8L9vBVMxo+EXte2MOjbHGrd3odyt/ew"
Data "rfP/QHnY11CZ+BMMlvaE7up+0FzTF4fW9YfW5mHklpTbaczHcY1FBMpM6G8bDeOdI2G2i4Akme8hGAmiI3sJRnJWFsMpE+0/QMAxdKQjygTWQYL44CCYKg+EOYW/ZvtGwExpBEFOoO4mGPeQ8xKQRyhHNafXGO4fQPCSg2pOwxGN2Yjxd6SzoGno3FtTJCBrUPYSyMq8ANTkPpcBWfKicSDzHqIi5x4BKeuH5NUDeF4kN+bkRFqLpRtFmCqAlC2I"
Data "LK2pKkEpA/IMiiLPoiTKAWXRjpRLuqAq/DaqAu+i6vl9VPncRd4tR+S5OSDfzQ4JF4xw89AyWK4eANvtI+BjthwVrupI1JqLGgpZCzaPQ+CSAQjYOw9IcKcLShS5YwmKC4vAd2yvLCfjLK1CFQFZmRyB24d2I3nvFrxYOguHR3aDJzlxWvxzBAZ7kkP6IuCJNzzvPCQgH+GKuwscbtnD8aIVntpZQKN3F1j16gTjvj9AtcuH2N/lfSi2/R8o9f0C"
Data "yiN+hOHCPjBYNgiHl/WHzZ4ZcLVQhPclbTy/aoiHdpq4fmQ3HAzWw3THGJgylDsILoaSQGIoLZTIJeuhlIW07JwEGYW/FgdGyURgmioPhskBCoH3U2hMLisclyQg300g1gNpRq8xoBzW7CADOQOWmvMoSLhOZ0ETkG9NYSAr6yoISTpT+TbXVSmoKQxFZZYPKrO9xcic2uIAVJWQygJRWeqP8iJvlFK4WJJBMKY4UahqLzcQ4CSFpcfEolXSQskF"
Data "vBp5/arkskWRrVFMDlpMoW1R1CnkhdvR1hHlUc4E400g+jEQ7w9Ekfy9kel0EcW3ySUfX0fhzdPIdjLFQ+3l0JvRChZzW+G2wiAkH5qJKuXZqNs9AzHLByJ011TKIymsLQglJ09CQU4uaiqJTV7xso44zc2kC046Qh2OwXvVQjyaNwmWSyYg0ec60lIDkJwagRBfb/g/9IT3/Ue4d/c2Tl85A6d7F3DrijVO71iFQx1b4mS/ztDv/j3Uu3yGPW0J"
Data "yFZ/JSg/xM4eX0N5eGscmtQd19XWwt1sL/zs9OF33hD3jx7CVcNduKi9HZf1FHBWjdxyx1gYbiaH2zESlhRqmu6gcFahL4y29yeoCCISt9iKVts9Q+s1TGwNlPoJGe0ZBKPdQ2C8i46RTHeSdlE4S0Aa7ukt6wfVGAe93ZSXas2D5vbxKM98Tl9I03zIt6bwiuWVdVXkkLxqAOVb9UBWZfuKllYeqVNDYSsDWVkaQC75AuXFXq+ATL0qGnPkgeSF"
Data "qThMbRRIvgXASyiPUc54ChVxV1CXSCDG3wfC7qLu2S3Alx4HPyM4KewMoq2vO+oeXUPlXQpRPe2RfekwXHdOhNvWYfDfPx4R20YAWsuAPbMQt6wfIhTHIu3sAQIykAwgExX5Baiia05hAZ98FBVUFuH2NXtc11PD5cljELdfAacV5sP5rA6WL5sIfUNV+N67i6DHnnh6/wFuul0XjTnXnE/inr0JVCf0gVGvtrDu1hJa7b/EgdYfQ7ndpzjY+Wvs"
Data "bPsptrX9DIbjesFp2xIEHjmEAOvDeGZ1GA9NVHFdcxds92/AyV1rcGz3Mtjsng0zxfEw3TIKZtvI9XaS6+0gsLYRhNz40yiQDOMIsdXf05/UF4b0GsNdQ2C0cxhpCEzoM0x2UijLQO7uC2OlgbA8NB7G+8bjyKH50Nszk1IT+n6bgHx7CgPJTTrcsCOS+6p01BSEEZDPBZSvA+mPitLnFLbyigIPxJxIXsqD74ZVFGOLwujT5I4nXgLJtwHg28UV"
Data "RJgSjK9umlNCQApFWIuFqnJfnAZi3IDIWyh1P49kewsknzZHrsNJlDraEYB3gRcPyC3vAd5XgcfnkGOrBi+lWXi+eypiDk5GxOZBqFOZDygvQM6mEXixrBcC1SlsjaH3lOfIWlpr6c8Tq7RXIT01EgN7tMfMLm1gOqgHbq2YgYsqazFrVAeMGtEZ33/zIdwczsHrxg0C8i7cuLvj2mncdLTBDdMDUB7cHqdG9YBpp+bY2/z/sP/nj3C4a3MY9msN"
Data "ze4/QK3rD7CZNBB3t61AlLkmnunug9vejbDduBiWK2fDaOk06C2cDO1F46G7YhSMN46BxdZxMNtK7riVnHI7ha7kcmY7KT/cNUDIePcgIXZBo93kjBTaGhCcenRMbze5JL3WYKesociQHNZ4O2kHt+YOJvfsB/2dfWGhOg6WatNhqjKH4FxJF6tYOgn4YvzulHcOyNrC8JdA1vAsDwKyspgkB6SY7ZHhLJupEUMhZ8wZ2r4erjKMEpAyye50VRxh"
Data "+RLI0vDjFJpeAZIJnBdOSLbVhv/hbQjX3oVIbSW8UN6CO1sWI0x/FzJPaiL9mCpiDSkX2zkLD1aNRMDWiQjbMgxJiiOQvGoYoL4Mdcoz8HRWG4TsnYJSFzM66bIoDCASq+pQUVONyppCxMT6o1XzzzC+7Y9YQ/BZT+qHq3qKGNz1C6xYOA4/f/shnI7bwO/WTTxwuYa7rhdx9fwR3KUcU2fecGgMbg2zPj/gcMsPsOfbZlBt8yl0OjeHbrcfYNS7"
Data "JWxGdIPtlME4N30Erq+YBdu5E2A0pj8ODOiAbT1bYXOPX7ClVxts6tcSeyf1gNZSCi83joXxhuEwXE9hpuJQWBJwZgzijn4w3tkHhjsHkGTQGVA4qrdzOGkodMkFdXeSS+4YSKLj24eQCNxtJAp5TZXYIftDZ1sfyh/H4ajmXBju49UG9gLVTYtcvVWFgeTRrNywI5L7qgwBZHWOH4nckYAUg8oJSBGuljxDaaFs+lVROi92RUDGvu6OvMix5I55"
Data "ESbIDzcRQBaFs8wFkELhVqgIJSDjrwMepxBnowR3xZm4vWIsnqydgqfrpuLBijFwXTwMj7ZMhofCVHhsngjPjRPweMUIeC4aiudLBiFgUQ/ErBqA0Hm9UUbhH9TmIHpVT0RRXhajtwmICyOHrKAcuBwVFJ4XlKcjOycKcyePwsgW32H5j3+DxYyBCLthg9ZfNUOHH95Hy8/+igfnz+KZy3U8uH4Rj2854tHVk8IdFbp+C4vRHXC409+g3up/cOCX"
Data "/4Ua5Y3qPMCcZNLzB5yjcPXy1IGwG98XZv3bQK/3LzjY6Tts/eUjrPj2L1hAP2f+N80w5/v/wfq+P2LvlO7QWToYuqsGQ38NhagKwyh05TywP0FFueSO3jDY0Z8kg06XwlHdHcPElvs1dQha7tvU207Ht9FnULhrqEjaRjDvHgCDXf2grdgbpspjcVRjPvSV5uDJtSNN67K+beXvgKzORF1R1N8BWVFEkgNSTFAmIIuSL1HeePbvgJTcMTfcWADJ"
Data "KgwzeR1KArIq2IbCyisovaKFiMMrELp3HmJ3z0XMtumI2joJMdunIn7/LCRrLETEvunitnJRO6dRiDoJkavHwn92b4Qv7IFnk1sjatFgyh+HIX/baJQdmICwNf3hv30m8p0uAvlF9MfWopL+ztK6TFTXZuCIliqG/fA1llC4uaPf94inUHjGyDZo9XkzjOz8CwLIGW+fOYG7V8/j6lkzuNhoQXvhKOzv/h3OTu4O3Z4fY2+LZkJ8awGdjn+DNd8V"
Data "a2R7XBrfFVcn94bLjAFwmzMU1+cMxqWZA3FiYncYDm0jhtvt7vYFFEiL2n2CdQNaCCg1F1JoSUCKsJWAMlLoTWARjNt6Qm9bX+hu608aAO1tQ0jDxFaLoGPpKJILknQVyDEVyDEV6LMU2FkJ1h19SP1gcmAcjlC4qrdnNpL9XAnIppXL36oiA5LqhRMsTu7rgazJlXV91Bb4oYrEQJYX+6Gs2BclBY/kgLwggCyIOoWiqBPkhDbkjpYyIMUtyRlI"
Data "IyF5IIvCj6AkzArVBGSe40FkWm1FsuYSpByYjey9M5G1fQKSNg1H9IaBCN3QHwlKYxG1ewzilSYgeedkJG+ZiJwtBOvCgUhe0g9+E1ojZO4A+M0kZ1zcDYU7RiJmdR88WzsOYSZ6qIuKoz+yGnlVBagAhbDIQU50CG6YGWBN529xeEZP+F4xQexzJzpht8Dr8hlE3b6BZ9cu4+bl07hgo4tTKpuxpffP0OrTAuZ9m+Ngh2bY2rwZ1No1g1Gvj3F2"
Data "ZAs4TeuGm3P64PbsPrg5vRduTO2BK+M64vzoNjg+9GeYDWwOnT5fYH+n97Dhx2ZY8GUzzP7pfzG3/adYP/BnqM7pBcN1Q2G8mXLBTX2gu7EbDBR6QV+xB3QV+xBwMvC0FAeThortYcW+QtoEoLYCueVWFkG4tS+pN/S30/u20efu4u6RcTDeS/nrnrmoywikiCi7Cci3qTCQ3BPwEki6YlYXx6EyNxjVeS8IyBcEJOWTRQRl8TNUFnmhPP8BSrPd"
Data "ZDP8BZAydyyKPIrCCCsBW2GYBQpCZUCyS3LoKoWvxWHmKAk1R2UwhUz+lki0WA2c2gFYb0YW5X0pm0agePcEFO0ei/jVvZGydTDSdo5C8Jo+CF3dj0AbhOS1o1C4dRriFgxC0srhiFoyGI/GdYIvgeU/vT0i5nVC3rbx8F4yHFeXz0PcFXLJvHTUVDKMaeT6FMaWpAGZMfC0OEjHTZDu5YCMFy4oCLyPLJ87SH14EylPbotFrpJ93eB1Ug8m80bA"
Data "aERH7Gr5v1BoRc7Y/X1YjvqJ3K8bbszvK4C8Nas3vJeOwJOFQ3CdYHSe1AX2I1rCuv83sOj/NcwHfwu9vp9hD71/+dcEJOWgU3/4Hyyn/FV5RleYrh8ugNRa3xOHN/QQLscwygOpQ+6pS98LuyGHotqKPQWQOlsGQW/zEOjRVn8LQylzV22FbjDZO4iAHAPdXROhpzQfqEgByvPoJBAtXe9MeSccksfq1JF31KIItVWZqCqJQ2lekJisXEPuyEto"
Data "8JKQFTm8rMYNsQiVuM158nnZrI5oG1kjTZglyoItUBJoRic2gRhsLG5rnhFhhLQwA2SFGKAw2AhVgSYEoyngYwxcVALMVyFn/2QkbhlGQA5D1pbhyCCHTFk3GLHLCUJS7IoBiCUYk9YOR/qGscjaNAmZW6cibN0EBK+fhMAloxA4bxDC55FjTuwAz7Ht8HTeEFyeOQz39m5AhfcNOgnjgQxfVMbcQ130fRR6O6LS96pQMSnPyxEZDx2QePMsYq4d"
Data "Q5ijFeJcTyPp1hlk3LFFputJxNnqw11jPWyWjoTGqDY4PbcfXFeOwa1lo/Fk9STcodDUi0LbOxSyuk7ojkuj2uLCmHawH9cOtmPa4OSIFrAa+C2MKeQ93P0TLKAQeXnr97B90A9QmdYJGgt7QmNlH2hu6IfD5HgaFH5qKPSFJkmLXE93MzkfyXAjhaXkolqbOkJjUwdorKWQdw055RoCkqA2ou/SRHEQOWw3aG1uR+FtFxjspVBYfS4cT2gAhelA"
Data "ZSWdBHwxfnfKOwBkrQCSW1preQhddbZs9YD8UJRSLimALPBCTZ47qrNvivt8lKXJVgngWwmI5f9jCEZyx/KQI6gMtEC5vxmKCMjcICMxSiednDI5WBeZwfqoCDZB3XMj1D3UBJwPoNhgIQoOTkGywjDEru2HuDUDkEZQ5m4di4JtE5CzcTSy1o9EyurhSFwxBPErBiNx1XAkrRmJ+A3jELl9DkIVZiOBlLt9LvI2TkHC4hEInDsQPguG4cn6aXBY"
Data "MgaeettQ+8IZIBALfC6g2Ps8qgOuoszHEaVPr6DY8zLyHzkg8+5ZJN04RqmtBSIumiDEVg/BZ3URaqePqAsU1l42R/RFUwSf1kGAlSqub5kF13WTcXX+cNxaOBr3547Cg1nD4Dy6O66P6Uoha1dcHN8J58d3hN3YtjgzqhVODv0RxwZ8hyMDvsXOdu9jW9fPsGvAN9g39heozu6CQ8v7QmP9AKhvHgj1rYNIBOaWAWJMrO7GfjDY0AfG6yk/3NAT"
Data "Whvb4tDGdtBc2w2aFEHorBoGg3WjYEyRBgNpuqMXDLZ3geGeHjA+OBz6yjPx0Jly97JC2dWYT4J3qLwDIesrIPm25tU1OWIV87KicIKSl+7wE0BW58rGrvLM/tLUSwJIvtmOmFpVD2QZAVkeaI6yADMUB5BDBhqJQQEZIeSQ/nrIDTBE1QsjVHtoo9BxF3KsVyGWQtOU7aMIyBGUNw5Fwroh5IJDkLZuGDI3EogrByODXDF30xjkK04Q41Vztk5A"
Data "xsYx9NoxiN46Ez5LRiKUHCqNnDJx+UgkraLHCjMRpTgbT7ctwHNtBSQTYDUBrkDsQyDiNhBCcIa4oMjzAgo9LqLg8QXkPDiHtJsnEe9kJYPxvAFenNaCl7UK3I12477BTjwyUYK3lQqeHVVHgI0anmptwZ3t8+AwbxjOkSvemTcKV8f1xPmBbeEwrAPODe+AsyPa4vjwX3CUQDw6+AccG/Q9TpAjHh3aAsbDWkJ9UAso9fsGewY3x4HJBNjiXgKu"
Data "Q5Q/q20aALXNPDi9HzQ39oE2gai3rg/011Fuua47Adke6hvaQmNNV2is6ktADoX+2pEw2kihL4W05rv6wHxvb5ipDISZ6hhoKU1DbCD9/TXcZlB/ErxD5Z0AklUnaqcCNbX5YuZHRUk0yguCRQ7J67NW5T1AZaabbMkOXsxY3P3qrACSx61yy6kEZCmFo0X+RigMIIckKHMCDZFPj0sIxnIPHeRfV0KyzSrEHZ6NuF3jkLRtDBK3jkLSllFI2zIa"
Data "mVvGIHvLWHLJcYDGUkB7JWC4HjDbTOEtyXQDYEC5p84qVGttQPzWGRTqTkb25imIXjQIUcuGIXn7LITunAM/ldWovn8OSPACwu+jKvQOEEXbF9eR/9gOeY/OIe+hvYAx484ZJJM7RjuaCxgDzurA79RheFodxD39HbiptRW3dRTFY9Z9/W3wM9uDx2prcWXVJFiM6IALk/rheP/WsO7ZAkf7tIBZ9+9g0O0raHf5VHSV6HT+CIbdPoNFz69g0bc5"
Data "LEe2hc6QVlDp3xz7B38P5XGtoD6nKw6voHB0PTnk+n5QpfBVnUA8RCAeXku55Jpe0F3dCzocpm5gINvh0OquOEShrvZKClnXUMi6cSiMyF1NdhCQ+/uLxbaMVcZBZ/9sSj0oh66u4MpvAvJtKjIgZVBKQNbVFaGmmvLIslhUloShght18rxQmeMugCxL5dvRUbgqlnw8I5tmVQ9kcYgsf2QgS16YoPCFMbK9dcW2IsCc8jh9FDjvR8rx9YjRW4A4"
Data "lZlIPzBLrKkaR6Fp0uZxKNwzAzWqC1Gnugi1B+cByvNQuWc6ChXGI3P9UCSvHiiUun4I0jeNQoXKEhTunovqA4sB1aXIVZiMmLWjELp5Ip4qTkftreNA8C3Uhd1HSdBtVEc+RFmgG3LdzyPP3Q65BGLOfTtkUajK7phw3RqRl0wRZKcn3FFyyAcme3DHYAfuGu7EPaNd4vEdXQU81FfEEwNFuO1aBN2h7WDQtxW0On4Lo67fQ5/vjNXqIxxs+T72"
Data "//JX7Pv5LzjY6j1otvsQBp0+JTC/gH7Pb6Hb9wdoDfwJh8gxVUb9AvWpHaC1uCf01hKQq3pDdbVM6qt74tCqnji8kkLVFbwlV1zfAWrrCcqV3aC+ojftH0ywDqNwdggMtwwUrbRm+wbCQmUU9PePw3GjjQQj5Y9V7JB0BjQB+XYVRlEeSB6xU1udg+rKJFSXRaI8z4/kKaZbVWS4ojTFUeaOfG+O+JMEJN/x2FK0rkpAMozFfsYoeU55pKcOynyN"
Data "UONrgvI7msg8o4B4w8WI15iPjEMLkauyEDl75yJ33zxUqC8DdMkJtVajTGkOMtaPRuKyAYhZ2AshszrAb/LP8Bn/A7zGfwfvid/Dd9IvYoRO5e45gBo5Kbup2mIkU1gbpDgZEbrryA3vAfFPUBHhjuJwdyDRF7XhDylvvIYq72vIu2f3GpBSuBpoqyvckYFkh7ytvx3OmptwXWPjy63ToQ24pLISd/W34tbBtTAY2x27Wn+GPT9/BM2O3xCIfKfl"
Data "D7H3l/eF9hGMKm0+FOu46nf8DIadvxCDCQ53/lLcmVlz4I9QHfoTDo5thUOzOkF7aW+oLesB1eU9oELiLT9XW9YNh5bSdjnlm2s7Qn1NJ6it6ErPe+Hw8gEUOAyGwXrS5gHQ29xHDDznWR46e8fD3dmUIMyhqi6mK3ETkG9dqaljGLmljYHkPim6ctbmoaYyDTUVsSKPLM31QhkBKRYxZiCTeE1VXkXumGyaFQ8cDzdHYYgpignIIn8TAWPJMyOU"
Data "eRui0tMAFXe1UHBBCekW65CsvRiZmktQRKFoPrlayaHVqNEhEI0UAP1NqDywCEmrRyBwRhd4jyUIx/2MZ+NbwHfCj3g69lt4jPocD4Z+hLsD/4b0FYModF0DaK4A9hOYWsuRunsqQvfOQrWLEbkj5Ypp3kCGPyoSvFEV7UVAPkaV7w0Uu19EPoWzAso7Z5HhdhJJTtai8UZySO+janA3VYKbjoKA8DrB6EJ5o/PhzbimuRHHd87HhYMrcG3/KljM"
Data "G44NP32Ird8zfJ9ie/P/w66fPsCeXz7AvtYfQbndx1Bv/yk02n8CrXafQKctbVt/As22n0Ktw2dQ7fYlVPp+jYPDfoDqxNZQmdkB6ou6Q2VJdxysFz9WWdKtftuFYOwCtdWdCcjuAkjNZf0pbB1E+SVp40DobeknBqFbqEyB7t6pyIqhi1JdLlDJ9UzV3QTk21VqawnIOq4Vrh0GksJWFIqwtboyQbYOaq73SyDF/EcOV+NOooRvrlo/aFwCsiCQ"
Data "80cZkOU+BMQzM9Q+1EPZ1YPIPb4VmYarkKO9nGBcjQqddSg6tAYlmutQprkeZWqrULR3oejOSF49GnFLByJ0VheEzOyEoGlt4TfxR3iN+Qbuwz7G7QF/xe3ef8GT/p8CO6aiest45KweApDrphCQ4arzgcDLQCovkPUcyA5GXVYQahMpJw59iPKnLii5fwEF9+wFlLl3bZF58xSSr9uIVlRuXWUgfY6p47HFfplDEoRX1dfjwoGVOL1jASy3zsSR"
Data "bbNhs2Muzu5ciGMrJ2MNAbj+u/eg+OOH2PR1MygQlNt/fA97Wn0oZoSoEpDqBKJ6yw+g3uI9GHf6BtptPsWBn8lFW32AA5Rfqg5qDuVRP0FpXAtoLOgGtYXdcHDx30t5CeWNlDuqrepC7kmvW9YTmsv7QnvVgHogB8NQkXJJpbGUQ86G3n5KASoTCUJuYaVoiKu9Cci3t9SJltZKkUeiLp/2ZKAkPwiFOV4oTLuN4jRnVKReRnnyOYKR3DHcDGXk"
Data "kKVRPGi8fjBAoAnynhuigPLFYk891Hkao9jpIHKOKyLXbCMKDdahUGsVSjXWoEpnI4oPrUeROu1TXYP8/cuQRSd36sbJSFw5koAcjMi5vRAxuytCyS0Cp/6C5xN+INf8Gp7kkl7DPsODHu+jfM0wYPc01O2ajIr9M5GrvgAp3AgUe5tC1EdAui8BGfQSyKqQR6j0ckHpg4tChffPI/c2OeSNE0i6aoWYS2YIP28oujo4XPU4cgD3KYd001XENQpT"
Data "LxxcBbu9S3FqzyJY7JgH/Q1TYLZmEo6umowNBNe65u9h+y8fQ7nT1zjQ8SvSl/T4C6iQ1Dt+jsMdv4BOhy9g0P5LGNFWj0A9RMDub/0+lDp8CKUen4kGnn2jf4bWPApN53XD/rmdoTSnE/bN64L987uK7Z65HXBwaRcoL+tE226UQncXjUGce/L8SpNtI2G5fzIObx0Og30z4WqvQ/WaRddd2YCA0mJyyXes/PmBlK6SpLq6GhmQKCXxamRZYpVw"
Data "viNWUdo9FKVeF0BWJNsKd2RXLCN3LI3g4XDmAsjcIBPk+Bki30cfpU/0yB0JzIv7kGu1BYXGG1BCoWmx+iqUqa9G1eGNAsYCgjJfZTXy9i1F5vZ5SNkwCfEEZOySQQ2AbCVc0mfcN/Aa/SWeDv8cfkO+RO6iPuSSE4F9M5C/fQIyD85DruU2IOYWkPSYQtZnqMkIQFVqACpjvVERdJ+AvI7Kh44od7+AYgIyXw7I2ItmiLA3EkByg44EpKueIq5q"
Data "bICD8krYKi3BiT0LcYRCVqPN02GxbgqOLB0ngNxI7si55L72X7wGpCrlihKQurSPgTTp9BX0238GzTYf4WDrD7C3PQHZ7RPRDaI05Hscnk2gze6Cg7M7CygP1AO5f353ASWHseyUHMbKgOxNQA4QQBorEJD7pkKXvhvdPXMRx90+FK7WVVHdcqryjrkjl3cKSJbMJctJxaRslJVEozj/OQoz7gsg+SaqDGRpzFEUh5minIAsYyBDTZAfIuviyPIz"
Data "QJ63Hko89FDhdhgFtruRY0zuqLcepYfXo0R1NUrIZSooJytUW4c8tbXIo+fZ+5YgfdtcJG2YiLgVIxCzeGA9kN0QMbMzQqa2RsCkn+A3/jv4jvkaPiO/ROyU1kijk7V2y2hAeTayNo1GOuWPJcf2AtHskBSypviiMvk5SuMp9Kb8scL/NqqfXkfNkysCyJIH9ii4Y4usBkCGnTPAUxtVPLFUfgnkFbp4nFNegdNKi3F8N4WtO+fCXGEmLNdPhdGc"
Data "Ydjc5jMo/vIp9rX7CntbfwqVjl+TvhIwqnX6EocITC3a6tHWgMA07foNDOn5YcorucFHqd0H2N3pb9jZ83Ns7/cV1Kd0ggrl0iqzukJ5LoWp8whA0v75PXFgQQ8oL2bJQlgB5Mqe0FvX7yWQFkrTobdjGqzpe0dNOlVwIWqrilFb826NYZXKnxtIhpBTRym5Z9ETySWBPFRVxKOsMBBFmQ8FkLx2annSWZTG8gRjM1SGmaMi1EwAmRdsiMxAA2Q+"
Data "10XuUwLykS4KHJWRbUO5o85q5FOYWqy+BkUHKFcklRKMuQRntuoqZNFJnqm0CKmKM5Gwbjxilg1D1EIGsg8B2UMAGTqtHYImt4Q/uaTf+O/xfMx3SCW3yFrYA+XrhgNKM5CnMB7pe2Yh33Q7EH4HiPMkKMkVyRmLIj1QHHwPZc9voMbbCfC8gooHF1B63x6Ft22R7XoSqdesXwOSG3WeUNh630xJAHlZYz3sDizHyd0LcXTnPFhunyPLJVdOhNaE"
Data "nlBo+wX2kNQ6ksP98hFtvxYgCnfs/IVoUdWmLQPJIJp2+xYGXb6CZodPcbDd38RSIDvavw+FLh9hc/ePsX9MKxyY3B4HZxKUc7rhwGyCcQ5D2RPKC3tDmaKDA4t6CiDZJTVXdIPu2t4w2DSIgBwNkx1ToKM4A4+uWFLV5pBKUFNZgspKruN3r7yDQPKGB9SxSxagtjYVlSUhKM56JIDkPsiKxFN0gluRM5qiimCsDDFFUYgxsoMNkB6gj/TnOsjy"
Data "0kXxQx2k2e5AsvE6pKktR47KChQdJDD3rpCJXfHgSgoxlyFjP7nj7nlI3jodcWvGImrJEETM74+IOb0FkJEzuyJ8WkeETmmPoImtEDihJQImtEAquUTZhhEoWTsCVdunoHbfPOTtnYcktZUAD5WLoBwyygsVkZ4oDH2IkoA7KH/mjNqnlym/vYRKdweUPXB4Dci4S+aIdDAWeSQ36nhS2CoBeenQOthSrnts13xYCxinw2ztBBjPHwaVIW2wu8NX"
Data "UKZQVLNzcyi3/ER0fxyisJRhPNT1c2h1IRhJ3OVh1IVyyG5fQ7cbvb7TZzjQ/m/Y3e59KLb7KzZ1eB/rOtHjgd9i92iCcmpnKM/shn0kJfou9s8hZ1xAMC5kEZgLZa2v8kAaKoyCvuIkGJOblyS9oHrOp8otQ3VVGcorufHu3SvvDpCs+sLdIBy6ytbszEZ1RTiKcx6jMMVJ9EFKQFZGEpDBxqikvJEHjWcF6Yshcql+Osj01EGRuzbirDchVmsZ"
Data "EvctRNa+ZcjftxK5e5Yhe/dSZO9fgQzlpaTFSNu3AKm7ZiFx82TErh6FiEUDETa3rwzIWb0QNaM7IqZ3RthUGZTBk9oKMJMX9kLNjsmo3DIONTunARorUEqAR+6YD9w6AwTcBbgRJ8wDJSHuKPW/hQpfJ9R4OqD20XkBZPl9BxTdsUOu6ymkOdkIIKPsjRFqbwjf44fgRWHrA/O9AsiL6mtxmkJrblm1UpgFiw2TobdwMA5P7I49Pb6FcudvoNLu"
Data "C7GCgHrbzyhf/Eq4okaXz6FJQOp0/QL6XQlEgtG4K4/goZyy82dQ7fQJ9nWgUJWA3EpAbmz/HtaQU67t8gm2Dv4eShPbY/+0zlCiEHbn5A4UDJBTzutDUPZ7CeTBxV2hsbwrtNb2EF0eDKTe1sm4Sg6P6izUFnDISiDWVqOiqvJdHKjz3wBkDuUc0SjJ9XgJZHnCCVTGHpEBGWSECsobC4I4XNVDsr8uUp5rvwQy3HQ1wtUWIGbXHGTsWYxcpeXI"
Data "2kVuuItAVFqK9ANLkLZ/IVL3zkfyzpmI58nHq0YgfOEAhM6hcFUOyEjKpV5B2UGAyfMhK7dNFgtcQW0JAbka1eqrELV9PgqPHwae3iCnvC9aVitCH4klJhnIysd2qHxwBlUPL/wdkPGXLRDtYCKAfHZC4++APLV3sXDHI1tmwHTVOKhP7o4Dg1the7tPodHte6i2+Ry6nb6DDoWrnC8e7ixzRm2Ckd3QgMA0psc8UudQh48Jxo9xsOPH2NuRgOzw"
Data "ARQIRgnIxa3+gvW9vsCu0a2hNKkjdoxvD4WxbbFzSmfsndNLALl/QW/KJzmPZCA7vwTSYOtI6G2bijgOz3l1gFISj9Ch+q2srWkC8v9H4S9U0j9VGvkAGZCyW9XxanTV1YkoyvNBfoobChMo50o4LRyyKorCVcobywlGBjI7QA9pL3SR5qODbA9tlNzXQajBcoQdmIeoHbPEHY5zGMLdi5CykxyRQqm0/ayFSFGicHXHDMRvnIioFcMRtqA/Qmb3"
Data "fAXkLMojZ3RD+PSuCJvWCaEUwgVTCJu8sj/yt44GVBcChhsA9eWoOrQaibsWI1FLEXh0FfB2I6fklezcgcDbqPG9hopHtii5exKVj+xR9pByyLtnkXXzBFLYIR1lMz1CCcpnJ7Xw9OghuJvth5vudlxSXYezdGE5qjAb1hunw2LJSKgObwOl7t9CseWH0O7+A1RbfwI9ClUNu34LnU4EJ4Wn7ISSOxqSM7I7Gnb/mvLGD3GgA4nCVXbIPZRH7mj/"
Data "IbaQ1tGxuT82w+pun2LbqJbYPaE9thGMWwjOHRM7ivD14PzepF44SECqLuoGjWU9obWmH3Q3DYPu1nHQ30mRQkEMAVlIHFagurxMVDVfbqWx5XJVX18aXKHfUP7+ff/58h8Fkr8QvsrxF/uPlMoKWf9TSVmpeL/sSskQciUwiDz7g+eAVNF/5fS4mI7wgHN/FKa6gu8DWR5jjboEa1REmKCcV5XjHPKFPoqCzRF36wC5oy5yr6jg2YEZCCb3it05"
Data "mxxwLlJ3z0XannnCEVMpTOXGnAylJUgmx4ndQO64chTCl1L+SCFrxMJ+CCQIQ+nEC6c8Mmpeb0Qt7IvoRf1EC2z0kr5IWTcQGZsHi7mT0FkBaK1End5GVOhvQ7HJXpSd0gWcTwFelE++uENwOqHi4XmUkjuWEZT5D04i1/0Usu+fQNrtY0hwsUL4ZVMEUv747Kwenh7jsayacDfZjxuHtsJh13Kc2TQXZzbMgf3GOdhFIem+jl+IllRuvBEtqBSO"
Data "Gnb9GiZdv4Fpd5mMCViWUbfvhAzJSfW7fwe1zp9CpfPH9H5eSvJjHGj7Cfa0+QTbabup/cdY/PP/YVnnT7C637dYO+h7rKGcct3g5lAkQDmM3U259P7pbXFwZieoLugJzZWDsXtOT+hvm419qycj9AnfCJeA5LVz6mpRQ1VcVl2Hcjp5KkVtS/VPCNbWoqSYu7v+eKmpoRirij/531v+40BKV7p/pFSUcwuq7P0S0JIryp4xlDwti5t2GEyevFxA"
Data "IEeJxp2C+MsoiT6OyhgrFIcboyjMUHR5MJDFAaZIv3MIxXd1kXhSEb57piN45wzEkEMmSkDum4d05QUid5SATFGcizgB5BhEcIPOSyC7IHgWQTmHHJLcIGrxAMQuG4y4FUMRv2oQyvZPQf7O0Yhe2RdF+2YA+uSSJoqoM9mFCmMlgMLWOlsj4OpRwP0C8IzA9L2KGnc75LhaoejhSeQ9OIb029ZIdKHc8YopQi8aI9jBGEHnjeFuehD3jfbjvq4S"
Data "7mntgJvyJthvmAejqYPF3ZMPdvgK6u0+h0YHeRi/gkm3r2HW7StY9PgO5gQii1tUTbs1FwPPGUi97hTeSkByK2tb2nL/ZatPRT/mlrafYkmL97Ck4ydY0fsbrOj/LVaR1g74FluHt8Ceca2gOOxrqM1sC415XaE2rwfUlw6G+qqxOLRhJo7q7EJhchjqOFQVS3XUopYqnWuYYWQoX9Y4AcRA/h5nfFPhfs3/dN/mW+GQ/2yprmbwZJ8jqwiqGrGk"
Data "A0u2v5L2v1wEqy5dLHpVmuyK4igK+cKshDPmBuogL9AAOX76YmZH/mM95Llp4pnOYjzdOQ2B22cgmq7YCTvmIGXPAsobFyFTdSmy1FYg88BypFMImKxADrl+IiJWjEb44sEihwxf0FcAGTSzqwAyckEfxCwdJCYo8zIeqRtGAbpLUas+G4nrhyJt81jAYBNpC2C6BzA/AJzUQaWVGvLMlVF0QhPg1dYekGOSQ9bcO4pCVwvKHc2R6WKGtGumSLhs"
Data "iCgHfYTZ6iP4LOm0HvyOauKx3h44kTseXTgW6sM7Ynunb7Dppw9EtwZ39Gt3/orCURmI5hSKWvT4BpY9v4ZVz+9g2eNbIYaTp2MZdycoySX1CNCXDtkokJ8TkB9gIYWxi7t9jkU9P8dSyidX9f0KGwd/j20jfsSWwZ/hwOQfcGh2e2gs7A5Vyqm11k+A5qaZCH5wkU6QXKraYqq7CtRU8wr1snOGVU7/lFHVcu0yqDU1vPefB5ILfwafV1VVVaJr"
Data "5d9d/uNA/tNFejNvJfEVkmMa3tbvqyLJoOcrLIUzFbGoyvJCScxV5IeeQEGwCbJeaCE3QF8AmedriFJvE6ReOYibOyfCc/sU+CtOF5OFE3ZQqEp5Y+bBFchWW43cQ2sJyBVIo5ySgYxZNwHhy0chbNEgkUOGze8jYJR3SHbH5DUjkb5xHLIVJgDay8TcyGJyx/Qt9JyArOIuDz3KH48ok0MShARkqYkSMvUVkaK3GWmm25B3fD+Kz5OTX9JDyTVj"
Data "lN04glI3a+Q7WyL1ohEiz2ghyEYd7lrbcGPvapxYPkGAuJnCyTXN/4KNP/0Vu1t/DG0KTRlEDlE5NGUQrXp9g2O9vyN9g+N9movHR3u9gpKdksNZA4JXjcLRV0ASnA2AXPrzh5jf+m+YS+HrHHrdwq6fYVnPL7C233fYPPhbbB/5JbYO/Ri7JjSH5qIeOLioD1RXDocd//25EVSX9UBWl6KWB5QTcFJ1V1DFllRyJCSrY4aylBeV/icLgyiD+j9X"
Data "/rxAUqkooysmXxBZ/D2yXtaOTPz98lPZz+I8hCq4MAJlSe4oCr+AghByGH8d5PCKAC8MBJAVz8wRcWYbHDcMg9f2aQhQnIUICkkTdi5CmtJyZCqvRI76WuRprEfG/uWisSdp62xErx2PsGUjEbpwIELn9xNrrTKMrJDZ3RE+rxfljQPFTJCMTeORozAZOLSE3HAzbZejYMdMClk3o3zvYnLNtZRTKpCDbgPM9hKUB1Blsg0pKovFAstea4fh4doR"
Data "cFs5DDfWjoHbholwJl1aMw5nl46A5ewBMJ7aGwcGtsS2Ll9jTYv/w8pvmmF98//B9p8/gBJBsr/VhyIvNKsHjd2Q4TvR9zuc6tccp/uzvhePT/T59iWUZt0orySAeeLybwG5vOVHmNfqI8yknze93YeY1+lTLO3xJVb1plySnJKB3DDofSiO/Rr7ZrWH0tzu0OGuI+8rVH9pJAayiK6nFOHUysJWqVRTxUopD3H5TpT/KJD/ktIQRkn8nI7xHFbp"
Data "qazQVbYyE9XZQShLuI2i0KNiUADDmPvCCAXPTVHmYw5f09Vw2jgSPrtmI2j7PERtX4jEXUsJyJXIOLAGGarrCcr1SN+3TACZuGUWogiGUIIhZMEAhMzri5C5vRA2t6eAUYKS88p4yh9T149B1paJqFUlhzQm8A6tQtneBYDGOpQrLRIq3bUI+dvmonTfYlTzYHbNVcg5MA9h64fDfXYnXBvXAvbj2uLEqNawGPwTdAkaVQoN93X5DLs7f4adnb/A"
Data "+p/+IrSZHHH7z+/JZmQQHKq8MHLLD3CkZ/N6EL8nEL8XANoN+AHnB/4I+0GyLT8/Ww+lTU9yUc4v63PNxoH8nID8goD8EqvbfEEO+TGm/fI+ptDPnkOvW0Igr+z1Hdb0/hKbh3yGraO/xM5JLbB10i9QXjYITtb7qcJS6PqZSnFpNmrLcigTkbmjVLjRRconWSUV/O+fv7wbQMpDySFrPYxSyMrJP2cfsirjA2WoLUlFVeYzFEecRWWUNfL8TVDw"
Data "wgwlfpRXepjhvsZC3FScgud7FiF012LE7FyKpF0rKIdchbT9a5F6kGBUWScck7tAEjbPFECGLBmO4Pn9ETy3jwCSw1SGkkNXzidD5vZA1OJ+SCSXTF0/jmBbSEBuBzTXo1ZlJfLJjXM2TUPR1lmkGcjdMBnZmyYhe8t4CnHHIXPLaMSvHYjAhV3gMaM9bkzqAPtR7WBNwOh0+gQH2ryPPa0oHG37IXZ3+AT7On4GFR5JQ6HoIe7Ab/MBgfg+9CmE"
Data "ZLAEiL3JCft8T9B9j3MEH4N4kQC/NPRHXBj0IxwG/gC7/t/Ra8gle34FS/o8s66fi/7I3wJyQ8dvsbDtZ5j68/uYTBeAOe0/w1Jy5ZU9vycov8KGYd9AYeJP2DG9PbbTBcuKwvWU4NtUTTyrg9yRcv+qSlKVbGQOS4BIdcyPpWqv4Hp/B8qfH8iXtUQS+SNhx1vax7s5LS+hB8W0i9cT4MoTaFYXoS4/AqWRDkDcaRT6m6PAzxJlL44h390Mrgdm"
Data "48GeufAnB4zYsxxxu1YRkHSy7FmN1H1rkXyApEyP974CklcjlwcyeE5P0c0hARkwvTMCZ3VF+ALKJZcPQdKa0cjdPptC1t2A0Q7g8CZELx6GmEVDBIiVO+eifPtMlG6bioLNY8USIEkr+pDLdkLgnDbwmdkOtyd2xJWxHXB68M8Uen4NjQ4fi2lQe1q9jx2t3sO2n/+CLT80w5Zvm2HX981wmMLGI72+xukBP+Hc4JYCxNN9voMtueP5/j8I+C4P"
Data "/gGOQ37ElaE/iceXBvGx5jjb9xucEEB+DosuDOSnUO/0EVToQvAKSHJoBrLVV9jS5mts6vw9FhGYU1t8iEm/fIi5Hb7Esh7NsarXj1hBLrllXCtsHN8Sm6d2xkG6oPEdvFBJoSrPeRT9yLK7t5RVcWv5KwAlIKtreYYPbSn/exfKHwZS1tT8qvBz+S9Het7wdf/Kwk3VNRXlqKukhF70V8kyC64ohjCHqKQsRIgB5QotLqKrL8+tS6WrccIFZHqZ"
Data "ophgLHxqDb8Tu3B+0zjc3TEXfnuWIfbAOgpZVyJs4wLE7yQA969Dssp6ZGtuFh34SRTScsjKrazc7cGtrJxDskNKQLI7vpjaES+md5K5JOWSMSuHo1JlFUoPkvZT6Kq1CWV7FiJ8bn/ELRqI7HWjUbJlAkoVJqBk61jkbhyG5OV9EDm/I4JmtILP9LYCyAvD2+J4v59whPI/7sBXIofc/sv/YUdbyhXbf4QDlLfxOFR9CjePkAueGtRCwHhhKGnw"
Data "L+SGv+DSkJZwpK3jkBa4OuQnmYb+gGvDGMwf6HUUypJLnur9Dax7foEjXT+DUffPXwNSpR078BcUEn+NPW2+g2L75tjStQXm/vIZxn7zF4z9/j3MIAdd1PlbrO/fGjvGdMX6MR2gMJNy3ZXjYHpwLcqzIlFbmkEhagnVXzXKaqpEnbGkKIfrj+uWJZv1QefXf3D2R8OLgfy5zi213GLL4gYj2WT6N5d/iUM2/CH8g/kXqahgHF6V/x9Q8hxI+mQS"
Data "VwhdUes4+S8mlVBoU/myIrntjbdZRaXiaiuqlhsMqkKAzFvkktcQcEkZeya3hNmKwfDR3wJP5ZXw3r4YEXvXIkJxOUI3zBdApirLgMzS2PR3QErdHhKQ3LrK7ug3pQOeTWqHZ1Paw39GZ8oxKZRdPBCJm6ciZ88CFOxdTECuJ5dci9Ldc1G4bQrSeeKyxhJAZQ5q9s9ApdJkFCiMohy0N4Jmt4H39Ha4ObkLbIe2gTnlgXrdvxI3X91FYakCOeS2"
Data "dn/DLoKRc0r1Hl9Cn5zQhmEc0QZXxnSCy7jOuDqirZATQX1tWGs4DWuJa0Nb4DqBeZ1CVgbSccj3cBjUXAB5ktyVgTTv9hl49Tm1zvJAfvEakArtvsfmzj8TkF9g3LfvEZAfUOj6KWa1/hKLO/2A1X1aYef0gVgzoQfUN8xCmIczpYzxVIfsjNXibl/FlBu+BJKqupyskcexcggr6lxcgOv1Jym/xsG/LGT9LfL/fxUe+S9zRNpya1x5BrGYTHXF"
Data "y+6XoIKutIxfMVUub8VVlSq1jpvQa/KppiOA+Bs4vnsKVg34ArsmtIb1urGwWzMRPqobcH/9HATtWInQLUsQuH4uYnYsE/ljkup6pKqtFy2vidvmipCVuz0YSO724EYdDlklZ/Sd2BZPKTx7OqEtQUlOOaMr/Of2RuDSIcjYMx/5BxahRGUJKg8tRe2hJahVW4DUDcNpOx/FBGLJ3imo1ZhPwC5EvtIkxK8fgqBVg3B3/kA4TOkNm5EdYTToFyhT"
Data "rriFnHE9Qbml86fYQ655gPJLXhXOfHhrnB7bCZcndYfrtN64O6Mf3MZ3x81xXXBzTGe4ju4AV4LVZdgvcB76s4CSnZLDVw5lz/b/Fsd7fw2r7l/U55CfQrXT314DUqXVl9jf6hvsbi0DckOHHzHn588x/tsPMP7HjzClxaeY8uMnmN7iM8wmcNcN74a9C8fjopEa1R3VGdUXyO0K8nNFXfHltpIecFuA7AzjWmT4uP649bWA/qcQt4JXiPhzlcbA"
Data "fAdyyPqrYzXlHEVJqMmmkCeHICtNogrLIRXQi7gCq1HFN+nnL4GusGJNlqp8JN63gxqBsbzPF9g6qhVdvf8PRguGwENjKy6vnAKnRRPxbPNiBGxaiBdrZiF6xxKkE4jJauuQROFm/I75SFCcg/hNM0S3B/dDcrcH55BBs3vAf1on4Y4MpPf41gJIn0nt8Wwq38ujG+5Nbo9YyhHz1RajVHM5KrWWAgYrAcvNgN5yJG0djoDFXfF0dnsEkTPGbBqG"
Data "0LWD4Uehq9fyQbgyewBOTe0L09FdoEJh6+qW72HKZ80w+YtmmPNjM2wmR9vV/3toDm8Fi/GdYTutF64QiC6kW9P74+6UfvQ7EJwTeuLWWAJzVAfcIHCdKZxlp2QYLw7h1tbvcaYv90d+DYvuX8KEQlZ9glIaWH6w/SeUQ37+GpBb25ALtm6OmT98ignffYTJP3+Bma2/wfSfv8T0n77ArJZfYl6nnzCxzVe4rEdA5qYSZ1SPJaT6dgBJdbVUZ7VU"
Data "f+U5qCtKobpOBPLJTcvSkBv7AhVZsfTCP3/50wMZF/gM4d6PEHjfGf63LiDkjh0i7p1DpPsFhD9yFJCKgclipesK1OXQVbiUrqwpiTijpoTVg9pg7cAWWDPgJ6zs+yMWdvwCxgtG48rWhbBbMAF2U4fg8apZeL5uLp6tnIrIHQuRrkEOeWgV4pSXIo7C1XiF2YjbOF20snI/JHd7BM0h95vVXTTkMJTPCTyGkmEUmtwBT6eRcy7ui9gdk5GmPAv5"
Data "GguQfXAGknaNQ9aBqUhTGo/47aPxeH4HXBj2Gc4M+BvODv4CZ4d8hdNDv8HJkT/DnFztAP3ea9t+hDnfNcPoj5uh71+bof8HzTDyy2aY9EMzLKCccgtBpE554xGC7szEnrg4qReuTuyF25MJyol9cGd8DwEku6TzCCl0/QWXB/8kWlq56+Nk329h1esrmJFDGlGuyvMiVTp+9HdA7mtJF4FW3wogl7X4GtO++wQTm3+M6QTpgo4/Y0GHFljYvgWW"
Data "dfoZWwd2wTRyy/E/fAHFCSOR9vQxgZlNF0u6YHJeyKqlx6U5KEoNRUrQAzH7I9nnqri5UIKvK17cvoBo79v1Z8Sfo7xpAMKfHsgzRjo4Z6SFaxY6eHjWCCE82+H2KcTePo0wt5PwvGBFV1y+MQuFNAVU0aWF8LlgB8XxY7Ggazss79kS6we2wvoBbbCyVwss7docViumwHblTBykY1bDe+Lu4snwXjUT3ssmIWL7AmRoUg6psQrR+xaSu81F3FbK"
Data "HzdME62s3A/JrayBs3shYGY3ASOHrFIOyTB6T2wHL3LKR5Pa4sGsjrg3ryPuzGoL31UE8YYB8FvTi3LWoQT/cERsGwHv1b3hPLMVbEd9C5shX8K8/xfQ7f4RDnR4H2t//j9M+KgZejZrhq6kPu83Q+9PaPt5M/QjIHt92AxD6PnUb5thVav3oNT1K+j1awGroW1hO7wDXMb2gtuYnnAd2RU3RnaC8/B2BGNrgrEVrlDYyt0f3A1iSy57vM+3Yjid"
Data "STfKR+tngIhB5R14ichPodzmMxxs+cVrQC758Uv62R+TQ36CGW2aY0nX1ljWrQ1W9WiPjb07YlOPNtjYvTXW9WqPxV3aYGEvXoluGfxuOAGFPN2KR+nkozIlGInezojzsEfsveMIuKID3wtaeHBGG07WmnjgYFl/Rvx5yjsXsm5dMgdb5k7HweXzYb1rHa4bKOH5GR3EXjVHsttRpNwiKK8cRajTGSCDwpvYUBzboYCNwwZg56hh2DFiIJQnD8Xm"
Data "IV2gOKIbFIZ3xexWn+PQpIE4Mns0tvzyBQz7tofr3LHwXD4FXkvHE5DzkKm9gYBcgQilOYjdPuc1ILnbI2hev5dAMoTCGSe0ESGr57jW8BjTEg9H/Yw7o1vg+vgfcG3KD7g87hvcmN4CTlO+w6lBf8XxAX/BkZ7NCMJP4TCB9o3+Cvq9/grl9s3EreDWEWxT/rcZhv0POSJtB5MzTm79AeZQDjml2xcY1f5DjCBnHEe55Nif/hdjvia3pFB2Ib1P"
Data "ocV7YhUA8x4/4NKwTpQndiS1x5UhbXB1MIHIra2ky4N+JndsgXMDfxQDBo6SQ/ItBCQgtTp9joMMY2NAtmyOLa1/fOmQ4wnKaa2aY2GnVlhGF8LVPTtBoS99711/hs64ftg9qAu29u+MTYN7Y/OYodhIbqmvsA5BbpdREfscZREPkfrkPApfXECux1G8sN2Fx9YKeHpOG85W6nh61QaeTidxwUoXVrpquHDSGur79sDt+lVcu3wJVy5ewoVz53Hu"
Data "1BlcOmuLk0feToCbyYXpf6qydu4EbJ4/BdtnT4DWitk4tWcNbuhsx1PLAwiz00aykwWyySkjLpkj/JI1bhmpQGXWeBycOhqGi2fhwKjBUB49BPvH0XbScGwZ1B2LO/+E+e2bQ3P6cBwe3RervvkrDvf6BdfmDMeT5RPxZPFohJMjMpCpGmsQsWseYih/jN0yEzHrJyNi1SiELRksGnS4ZTVoWmd4E3xeY1vCY9wveDj2Z9wd+xPcRn8P51Hf4OKY"
Data "L3Fs1F9xe3NHxBpPQe21DYDTBuScmoNkyykI0x0JP/XBCDOYiOcaY3BlQyecWPATTi5pBcu5P0F97OeYQKAt6/0BdJf3xTm1OTitPhtamwZjB4W5W2e1hsLMtlg1/FvMaNcMYwnIseSg82i7+ef3odqBQt/BHXF+QHtxcx17ihQuDGyJSwN/FmIgHQb+JEbrMJA2fb6DeU+eJ/mVmCPJE5flgTxAQO5v/QV2t/oK21t/i01tvseKlt9hevNPMe6b"
Data "jzDlp68xtx2Fq53aYEX3TtjcpyuUh/TArl5toDSkG/YO7yPqYf3gHtg2YRgUJw7BLqqLkGsngKiHKPO7hnI/ByS5GuKp1RY8P7EbD6wP4IrRbkTdtUdRpCfu2ltCe/dG3Ha0g5PDGVib6uPUUUs4OpzDpXPnYH/yFO2/gKsE59tRXnfJZtwVwE3K3Hb1Zyrr54zGwTUzcObABgSfN0bAGT08ttiLR6Y7qbKUkOhkiiQXS2TfO4Xgc/qIuGAOw0Xj"
Data "sX9sXygN7wG1cYOwZ2gv7BszBApD+mJ1tw6Y1fJ7TGnzHdYN6AglcsbV37+HdT82g9nwlni0aDiC101G9K6FyDq8BfmHtyNt/zpEKcxH1JYZiFo7HqHLCMa5PRA4rT38J7SC35if4Tv2Fzwh3R71E5wo5HSZ8TOOj/4b1Lo3g8OaH5B5czkKfTagInAjiv1W0uMFKPNfjHL/ZSh+thilz1cCYQpAmgZenBuJI5vfg93+b+B9djDuHemL/TObYdfU"
Data "ZrhlQfmryyr4XVkM70tzYavdG+ZKbWCg2Bo661vBZkd/HF7YARModB34l2aYRfnmku/+l0D6GsY9WsC6bysc6U7hetdvYdePYKSQ1ZFyznO9m+Nsb+7u+E4MOudxr4bdv4FOt29wuOvXONDuQ3Ltv4mxsTxGdmerT6HU6XvRB7mKIozJn/4Fk7/4AJO++xTTfvoGs1r/hLkdWmNhl/ZYSt/57hEDoDiwOxQJQkWqD8VhPbCuXweKVrpT5ELurbYF"
Data "NS9uAsF3xf1MSjwvI+G6JXxtVMQSl3eM98D/ojmyn16j/NMZd22NYa6yGSZq22B7VB/WJhq4ZHcU505a4vgRY9jaWJGscczYuP5MejuKNMukWV5ZJcr+ZPaotHQKTursxJ3j2ki4cRy5d04jheBLdj6CmMsGAkif4wcQ5WiANFdLcYfhSHsDXNi9HGoT+5I79oTKmH5QHtMf24f3w7q+PbCsQztM/fFbjPvlayzv3Q47erTCqm//B6t+aAbDod/D"
Data "ff5AhKyeIIDM1NyK/EM7kaq0DtEEZOTm6YjkBp2lAxAypyuCp7RBwLif8Hz0j/AhKF36fYY741vAmULSE+M/gXKvZriq2B5FD7egNGI7CmI2IS9qFTLD5iMrYjYK4uajOH4hCmMXojR2BZBOQJaoIfbxNFw0aY7r1j8j0XMiQm6OgtbqZtg3qxku67RHuNsMJD5eiIQnC/Dw3ADYG7TGUZUfoL+V8j5FgnJnHxyc2woz2zbDcHLJCZRbbv7lb1Bp"
Data "z2vjNIdpL3LCQW1gRzrT+3ucJjc824u2vZrjRE/ZwHIejM7Trg4TuBpdv6Ewld3xYwGkIrnuttafYkfn5v+vvbeAryLJGrezo3iAuLsbwQmaBHcPDoFAkIQYgQAhuLu7u7u7u7vD4C5x4/lOdZIZ1uf/7szsfL/Ngcrt2/fe6u6qeuqcU0p3JyPaWupSq+A31NT9gVr6BahjqkcDa1Ma2VvRVLRkgKuDlvY9fEoQVrE0IQJlDx93epQVIH2cCC5p"
Data "xY1l4+Hafri0W9JrNa/3LOXyYsnjmYO5vHQcH4+u4/2xdbw+tp6fDq3kwpZ54lMOZmR0ID3a1GLuRDFfF05iy6oF7NqwnKWzpmWF6dNYMvPPZbZmZKShkzOf7P8vMrBjQ1aPj9ES/vmxtdqSFh/3L+HZthkC30wNwCuLB3N8Wi8BcbwAOl47f3XRcE5OHcCoRhXp5yeasYo3/aqVIaikKy1dbWlsZUZ1g8JUFn+nubMZIY6mdBB/K1A0yuhSeuxt"
Data "WIxrgVW53ytAGxDwemAojyMDud2jKbeD63JLNei0Ls3Vxm5crG3DhWpmnPEz5VBlI/b6GrOjtjmLxR8cXkJg7G5H5pFeovWkln4znJSnUQJfEPGPOpD8NJCkp+1I+KmNvG9L8k+d4W0kJA4k4W5nTm/y4cT60mT8FMyHK22YFPo9owTKjeMcxcdqKb5WVz5cC+TB8Uac2lyZXYtKirZ0YGKEGfP7e7NikB8DmthQ20oHPwGyrWjKnhZ5tCUfh7sa"
Data "sKiis0BpywyXoswUH3FBMRPmS5idPVF5vGhGpR0VjIOUhrQvSD/HQtpUrhDRkCGiIcOcjOlqb0Qrc12qF/gL1XTFl9XLR02jwmK2GlLXyoT6duYCpiUBjjZ0LS0mqk9JupVypatYJqFlnelR2l60poO2fwnnt5NyYj2fDq7QNhM6M2+YVLbT+HR8HYlnt5B0YRvvT4uGlPLw7PgG7h1aw57F45ka14M+XZozKDyQBZOGs0fM2KUzJrBi9lTWLZ7P"
Data "+mULs0vVn0O+fElCRzW+/uMG2D+HdK1dmeAaPvRtUYtFA0M4sngClzfP4/6eZbzO3jX48Yap3Fg+UjRjDJcXDeL2qlGalry6ZAg3V4zi6ZaZnJkRx5UFo5jcpjaRFT2I9HGjRxlXrRm+rvg5tQyLUkU3H2UL/0ADi6J0tdQjsJAOHQXKER4F2VnTlevt/Xkc3VID8kVsVx5EtOVW18bc7lKHmx38uNaiJJcaunC+tjWnq5pw3M+YXT5FONHEic11"
Data "zJhW/lsmVv9GYOwtIM6AewPg9VCSn0QJeD348jqUL2+6ayC+udWMt7eVluxIxvMwgTKGzOfiKx1twLkdlTVIP93swIIBRZkSlpdVI8356VhTMn8KJV3iSnzYmacXmnPrcAOOrq3MinFuLBzsxroxVVg22Jde9cQaEP+zcREdbaJyiNkP2sY64wS+GSXMmeKix3Q3A+Z5mQqMJpo5q+ZBjpFzCtxBLgbEuejT115XzNbCYqoWoLtFfrpZ69LD0Ygg"
Data "8SGbmYjvWOBb/Av9gF+RfFQ1KEg146LUMNWnpoUhtS3EvzQzor2zHYGudnTysKOLpw0hJe3oUdKasU3lOc9uJfPMRhKOrObdgSVcWzGO84tH8PmEVMb3D2swZtzch9o3851A+VK0pYLy7r5VnN4wl+VjY5k9pBcrpoxk5/K57Fy9iJVzJrN64Qw2rvhzAakWZdNJVk7kn1S61alCXJuGTOjeig2j+3Bl3Uwei/P+YNdi7m+fx0+7FnJn7WQuLxzG"
Data "6Vn92D6sCwcn9OTsnH7sHNGFvWO6c2vlaO6unsCRSX04MW0AMzo1JMjbmq4lHGhiq08dGwN8DQviWzg/FfL/QKl8f6G2YX66GBeii5h1QYV1GOaUh+1+Dtxs58+zmNa8GdqV57FduBfWiludG4q5Wkvrf7zSvDgX6jtxuqYlJ/yNOCQ+42YfXTZVNWBdXdEytQpwcqQUsp8mShghGnIoaY/7kfAwUqAMJ/1lmGjGjjy/3oSfLjfg1c0AAbM9n+93"
Data "FSgF4tf9eXK+LZf31RAgo3hxuRVrRlsyMeQ7xoXocHCxF++vtYZXYuK+68nnh+15d7sdt47W59SWamyfV5bVE0qxY0YtZvcpRoC7DtXyyTNa/EiobX56mH2naTy1Vs5EdyMmC3wzPbNgnOxuzDgxa0e4GDHY2ZA4J31t+Y++9oW1Vc7DbQoTbCbpZlmYLvbGtLM2oKH4jVV1f5S0zYtv0Xz46hfCT9LaT877G+tSw7gwdY2K0NTUkEbGRWjnYEon"
Data "FwuCPS3o7m3B5r4dxVQV//HCFjJOb+D13vmcmT+Iy8tHkXFV7SZ9gC9395Nxey/JV7aLltzASzFbVfm4un4Wp5ZOYv/s0awcGSNWQj/WTBvJ3dP72bZiLivmTWHb+qWcPnYou7T9CSTjFTrZ60X9KSWiUVWGBzZi/8xhvD++maRzO3gnfsSLvUt4uHUO11eO59TsAQJbNPvGhrJndA8NyF0jg9kwoC2HJoZpJuuNZaM5PDGG7UNCmdS2Lk3t9Gnl"
Data "Yoav3g/4WxSmnF4eyheSUOAHSub9hupFf6SLoS6hRb6ji2jJYbbfs72iLXdFQ76Jbcf7Ed0EyCAehLfkVlA9bnWowY3WFbjczJtzdR04Wd2cw34G7K2iz3qfgswp+S2LahdhViNdOBUj2nEyPBssUA0TzdiXpMe9SXwsvuT9zry4HsCjC/V5eqUp7zS/sgNvbnbhy6s4gWwIb25049G5NvLbvjwVOJcMMWNqREGm9y7AmomWnN1SnhdXmojp2wne"
Data "h8DHcJ5dDeD+maac3V6T1ZO9WD+lHGsnVmB4e0v8xWxtbaZDD2fx/ZwKaQtUqS6RsQLgGIFuioeZwGjKBIFxtPiGwwTIgY76WmNQX3ntI/5ntKOB+I5FCTItSKBYF4F2xrS0FA0oGrGqXgENRBWqGOSEAlQxFEAN8sl3dGkgaV1bNy+tbQwJFCg7u5rSzcuMc2oJEzVRWQNyHU+2T+PYzBiurR0r1sVeeLifL/fV/pkH4MEBMm/s5tPJDfy0fQGX"
Data "xGQ9Mn0IxwTIbePjWCeacs+CSTy5dISpI3rTsqEv7VvWo0ugVGB/Erl74xA6f9b+jtGhgXSpVppJPVpqfYk8OiuJfoJMMVGST63j1Z4FXFk6kgMTI9g9JoSNcR1EK3Zl94hgVvcOYN/o7mLKTuTR+klag86pGQNZ1zeI2Do+1JaaXA3fKq/7HZXMC1Oy6A/46Coo81Ii33dUL5KXrkZ6RIqm7C5acqjV92yrYMeDjtX5OLgTnwX813FBPApvwa3A"
Data "OtxpV50bLctzubEXZ+vYc7y6GQf9DNnpq8eqCgVZWLkA4yr8hc2RbgLiJPg0RWAZyseHUaQ8i9NCwk+9eHs3mJe32vH6rkB/t6MAGcRjge7xuUCBWDSqhI93ovl4V3xKgfPZuc4sHmTDtsmluLq1IafW+XJweUnO76zIzePV+PSkg1hB4Xx+EsQbie/OiWZsX1SGlRM9WCO/WT2yopjsOtQ30KGdzfdEFTMgUvzB3vaFtOUgx7iZMMHDnPHuZtrx"
Data "CBdjBjkZMEAAjHEwoLdAqWCMcjagh62Y+Ga6tLXQo42NCU0sjcUk1qWqUVF8xUytIpqwkviQFUU7VjIsQEWDvFTRzytpnZ9m5gY0EGDb2BrRwcGIblIBdHEx5PJ0MelF63FhE8nHlnNvwzgOTovk0qrhfLmzQ6yM/RIExg9SNt5LuLOXeHFjXu1cxLVFY7WFvVZEdWRJryDWDI3kxs7l3D22jfHiW9b286JlE386tWvB+9cvSFWjt9R6TBLUcVqS"
Data "Wsfnj21duXl5twLyz9Gk8/H5U0j8AAnvxEdazaz+oUzs2ZbVQ8O5s2kO3DooNeFxuC2vV3eReHQVjzdN4cjUaC2s6dua1TGtWBbRmDnBNTk5LZqEw8s0/1ItHHxh7ghWxQRpzelVDX+kulFByuvlpYK5LsVEI5YVH8enSEFKiKb0L1qQYBMDepkWoZv4WEOsf2RreVseimkarzbbEW38ZmAnHke05E6HWtxp48/NAB8uNfLkTG07jlY3Za9oyC1+"
Data "+qz0LczqBqbEeOrwfEOQmJPTyHw2VGDpzesH4SQ9jRNTdQipL/oT/ziCpGdhpL/uJRqzJy+uduLmEamQDrWFl2PIeDKSjzf7k/poqMA5lqdnQgXGytzcIsA+n8T7S+Fc2Vmf87uqsW91MS4crMLLuy1Jeyd+5ZsIXtzoKJ/VYcOs4iwa48TaCZUIr25IdfElGxjqEF5Mn1CHAoRa5WGEaKjJpe0Y527OWDczRrqaMMzZRExVQ00zKhgjxVRVMIaL"
Data "1gy2FxClcmshvneArSn1BMhKov38TI3xNZNj8RUrmOhRUczUCgJlBansKunlE789D63trWhhJWauvQntRbuGeFoRaF+E0+OjRW2ISSkmaerJFdxZN4bdE3pweG5v3p5ZTsqtLcRf3yhQ7iPjzk5eH17M2/2LST66lmfrZnFoZC829unC8shAVg0I4f6+1WybO5LYHgE0ql6MqJBWtAloRHqyWgAtnYyUxKwxztlgJsd/JGvZkD9Grl/cjk5m6vvs"
Data "t/9FUUOIkpNIffucpCf3eHP9FBc2L2XjhP4cnDucNUO68e7wKrgh5smlHVpf1GfxFe6sGs8u0VYqbB3SkcXhDZne0Z+5XWuxY1AQ52f25/KCoZydOZiVvQIZ1sSPxvYG+Bvlo2yhbyij9yPFxXTylsJRonABvAvlo5RhEWpaGNHGQGr8At8TpIB0LMjWyo7iJ/qRKFo4ZVwYL/q2I35wMPcDa3G3dRWuNi0p5qoLx6pbss/XiB2+Bmz0N2BGye+Z"
Data "7leITlY6cFG03OcFZLwcyZtHvXh0q5s88whSng8h4Ul/Pv8UReZbMdM+xvH5QU+eXQrm9uFAVowvweBgPTIeTiTt/ngyH03iw9VBnFvbhqi6ealmrsPcaHfREvP48nAY94624dqB+hzcWJqj2314cr0V6e+i+Pg4hOtHm3F4QzW2LS7PmkkVWNjHH195xubWOrS3/ZZI96L09xKz1MNY23BnXDEbRntYajAOsDcUU1WAdDbSNGO4Q1FCXfTp6WFC"
Data "ZCk7AcqQpqLl6giMpXXzUcvRFn8baypamlNG/MRShnqUEfO0nPiPFc2KCKhFtRZX1cKtNKoaSte7gjcRpZ2J8/VieM0SWit6/L4FknYbuL9xPFfWjGD7lBAx1VtLOuwi5c42Mu7tEI25i7dHl2oNP6kC5JPV0zk/ZZBA2Zv5XVtog0M+ndstllcLerWvTXALX6JDWzF8UD/S09SKdqo3PjN7XmVm9tq/qtM+J/wfRZuJ9Osk+dNNdOI/Psx++18S"
Data "bZiQPHBqMinvXpD49B7vbp7h5r612tjU3TPjmB7enIPTY3l9YDnp58V5P7SK12oA+drJ3Fo7gaMz+rB5aEe2DA7kyMRwzs/pr8F4YlJvloY2I6aqJztGRBJY3JZy4jNV0s+jtaZWMC2MW+HvcSuaH2/9whTXL0oxY33KmxoQYGpCNykkTfLp0McuPwcb+XC1TVVe9GtL4ugQXvUN5FnP5gJkDQGyEtealNCmVR2tZsGeKkZsEyDXSZheOg8TKuWn"
Data "s70AeUN8x88LyXg7jlc/9eHBnZ6kfxhL0vNhfPqpv0DZVz4bwJe3cXy4E8FPZ7qyb0kdGpbQwbuwDg29dOjsp0PL0jp08ZVXbx2aOsqrmw6dyukwppMlKTdVY9EYruxtwhWB8uSOKlw7UVfM4CDin4aJb9qRE9tqsml+adZOrsDS2Go0tNOhkYUAaf8dYe669CtmxAB3Iwa5GTHKy4oRHhYMEZ97gJMxMaIhe4nZGiG+o1p3tauzLtHl7Qgra0c9"
Data "8/zUFIujvrMVlS1NKCOa0cfaiuKmprgWLYyrWCDeBkUoJVqypGEhcRXyihYtQisPZ/Hp7WlsLRrSxUobtDGqXkWCxIfdO7ibZhE93zqNl3tm8fqI+IfrR3J79xQeHpnD6zPL+HRxDanXt/Lm0CKebJulbTr0YPlkbi8cy94hETzZME/Uz1HOr5xCWMPyDOnWhGGRregX1pqZU8ZJ+cvQoPwaSG1m0H8KpJTtL9rc218rL9VYVrVuye8g2sThXyHq"
Data "WRWUUkOlf3xNwvP74j+d58m5Pdw5sIqtU2OZGNqYIW39GRdcT2r0dmwcEc4L+UzUB59PrBYnfhpXlg3VujnurhrNvZWjuDCjP/tHhjJN/Ls6Rt+wIjqIoNJOVBbfRXX++5rrUUrMVk8jXUrbmlFSAHQuXBgPCwuqe7pTx8QUbx0dwrxtBcy87GxUngsS14v+7cmY1IvUkWG8iWrNg8Bq3GtdQZuMrCYfH6lqzu7KhmyspM/qygZMLZ2foaW+J8RD"
Data "kvq+mN6fFkuYxqunsTy8G86XhCkkicZ8/7g/iS/iyHgzWHzKWF5dDef6vo7MinGjnJiTTdwFSPH3Qv2lAIv5266YDoHe34pGEpA88tFMwKxmqsOCvqJVnk/n3dVeXN7XhHN7anN8WxWuHK7Hhwfd+fwonIv7G7B5Xgk2TC/P6iE1CKlYhDpyjY6O3xDqWlDMawNt052h4kcOFf9xiJspg1wFSFdTejvri2YsTIiC0bEAQ2q5M65lBaKru9PSy4R6"
Data "zsbUEKj8XR0oZWuJdaFCOBoaUczSEm8LczwN9XHXK6SBWU4qvkpmJuJP6lHNxJAO3m6Eli9O3yqliCzrSo0COuyI7cKHnQsY0aQ011YMJ+PaZt6dXaFpxecnFnFvz0we75/LqyNLubJitFhLYWzs34lVEW3YGNOJj3tX83b3CvZPGkBsc186VXEnpk11+rSvQWDjyuzYvFYrhjkz+nNmYfzHS4LkcPz/Eo1qZVV/fntRd/HrahVtuXZNS6bzJfE9"
Data "iS8f8vHRJT7dO0383aPc3r+cQ0tGMSk8gCkSdk6L4/aOJaTfOq5tzabGNyacXilacyHPtk3j1vIRnJsZw6FRoewaFKxlTCcvUwKLWdG9ggelxVR1VzMiiuTB+lsdylib4lC0EJ4GxpRzdMbW3BwbKTS9GzTk1sol3F03jyFVvdjQuCKXgxvxbnh3MVkjiY/rzsueATzq4C9AludqE09O13HggL8p2ysZsr6CPssqGDCltGgcj78Q4/Oj+EPz4cNS"
Data "8ZXn80bM1If3xEdKmU7ym9G8/ymW5NdDSHk9mI/3+/DwVA8OLm1Ic9GO5YqKBiyTjy6lC9PJuxCdixWmg2seIsub06OEuRwXJah4EZo76eBrokPqzfHwdhrX97fk2sHGHNzgw/51Zbl/rgWfH4dx83gzdi4pxeaZPmwcWYvhzZyoLmZrkPO3hDjlESD16Oeqx/Bi5gwW3zFOTFQF4wB3E6IF1B7iZ6ptAnp4FmF00+LMDq3NmEB/xnSpz5LhUZze"
Data "ukKuc4f3jx5yYNt2Vs5bRGx4JLUrVMC+aFGMv/0Gh4L5KSl+padUghUszKhma01VeV9V/M4uxZ2IrlgMv7w6PBRNt31AF+pJZXN52XBJw73w7BCJAubnyxv4eG4Nb4+v4NWhJZwR92R5n7ZM7FCdYU0rMrF9LWYGN2FQo4p0qySw1xDYm/rSo05pogJ8iQ1uzq3LZ7PLYdYyGzkzMP6j1S1yYMwJv1KSPj9HJznpafbb306y9tj4B6KB99chNVVA"
Data "VAtTKUc67TMp758S//w6yc+viPK+RurT06j99d9eEV/iptpvX52/C6/v8fHiPtKv7STxzCptb4tHGydybfEQTk3txb5h3djavyNbY4MZXNeHUt/pEOBirpmqJYr8iJ+9OZXszPFxsMZTtGMpGzuCWkitumkLiQmfBRQxYT68EcP+OUvCWrFKatcrAuCHsREkj48mUYD8GNWWxwKk2rpcAXmqtq34j8ZsLq/H6nJ6LPLRZ3yJwkQ56DCqthlpZ6fK"
Data "fS+TlBcz6+VYHt3ry5ekaaR9nMDHF0NIfTeSxOcDeXktiiu7AlkQV4IyylQVc7dbGUMifWzo4FhUtK05oe6mhHtb093diiAXEzq5FSVAtKSvaLrES2Mknabw9moYt4404+TWKuxc5s6p7RV5frWt1gVyYHVpdswpw9ax1ZkaWIwaAmQX57/Q3eE7+gpoahvzYV5mDHIx1ro4+juL/6h8RYG/q0M+uX5hgcac2SHVWBYXwKSedZjWuxV7l08i8dkN"
Data "KYhZDSWZqWICKqWjioRkccKzlxzbvJXhEZG0qlYVxyKFNa1ZydqSui4O1LYx06ZndS3pRJU8OuwfFsFoqQw7iV+bcHINPDgk+X+G5BvbeXt2DV+u79QGCbzYu4iTc4ewKrYTs0KaML5DLaZ1b8zw1tXoJ9ZNn/o+9Gtamch6PrQr70QXfy861izH51dZ5V9pxv8YSFWm1c/+NvxKUTtDix0VL4dqha/fRhSMavF+tb60ur+f5SsIvw7a+poKSE2r"
Data "JmkLHCW8vS1a47r4W7elpj0poD6Wj59IeM6XF9dJeyKfqbVXUl5IBh0V32wb8SeW89PmyZr/eGCkwCg+3tqoNqzv1YGBtctSuZAOpcUfVK171exMqWJrSkUbC7xMjegR0FIKyU65fNb6La/jP/Pls0CZKmmT9oq90+NYF1iXSxGteTm8J19ESzOqDxkDuvNToJ8AWUaAdOdkLRv2KHNVYFxRugjzSxswyrMAEeKjzWrpyeMt8rtny0VDriLh9WSe"
Data "3B8gjvxEgX4aSe9Hiz85mo+PY3l8Lowjq5rSu4kuJfMrkzQPPUtbESmFtF8ZL3p5uRJbwoPOqiHEwYq2YoJ3F20WIOZrM9GSd7b2hMfjSbgVzZ0jTbWBBHtWeLBvjSe3T9Tj5rE67F/lzfY5Jdg+phpT2rvSwECHYDGJu9t/Q6yXArKw+JCGoiGN6Gevp3X+x7gbEO5amK5OeelVxpiRjTyYFebPqGAfpvZpyOktU0h4KhonXS2fkkRy9h4saoGG"
Data "lES1bIq8Udms3DSpiElI4um16+LPRVI6u+Gnhq059W1NaOFoJmZ0HmKrliBIKoJ2rvp8PKIa9vaIdbRL8v8M3NtH2oWtvN2/lNtrp7JjTAQLo9swJ7IFE7o1YHJIY6aGBTBIfP+wOqW0EFm3HP2b+Yn56k9s+0aS9pLP2aIgVGDmvP57UbSph1FBPZi8/wdl/NeIWqRN/V6AVM5skrhwv40vqVBMyUwl48svS75r95Rz8HXNoX0ghxqQ6qHUOinv"
Data "Sfpwj4RXV0l7f434Z2dIfXWRL2+l1v14T/wreU1+K9rrmWTKfQHyiPhmalPTrbzaNUvTjut7t2CZ1I5LezRlRWhLprStQ69qpWjsaEI5vXyUMSxIdRcbWvtV5MZhqXHffsya8iL39C79i9oFRO5N3iR/kHNveXlmC3v7dOSq+CQPB3YjfVIs6YMjSekTlAVkm1JcaezGiZrW7K5kwPoyRVhWoghzS4of5pyfCNtvWdGlCsend4afBMjPq0l5O4On"
Data "Dwbx6c1YucZsqYgmkf55LG/v9ePeyRB2zK5DI/EVm7noEC6mac9iNnR3sqGXuwchNg70cnAlVLR6uKsz7a0MiCgjGl7gr2+pw/H5LURDTubtxR7cPNSQ64drcnh9MQ6uc+f6ET/O7/Fh60Jbts3yYNuoymJ2WhIgJmEX0bAhUnkM8i7KABddYh2KiA9poo3G6WVXiN5ixobJ+W5qYSs/W2Z3rsTsqKpMjPLnxEYxJ5OvSropjfNOCvRnrSyoYq2C"
Data "tuSSynMtm+UgRU6kyWuiFETx15Kf/MS2uTNFc1WminFhGtkY0cLeiO7F7Qj0MBYLwZqry8eSfmUHCRe3SJ6dl8tIubi0i/jDa7i/fiabh4UKjC2ZJ2brtPAWTA5rztBOdRnRpQFD2tdhVKeGDFQzfhpWIqxqSTZPHiH3IErgK22oQFSLs/06H1J9R7XGKqWmSo06lgdU1p56WHnE5GRVsP61JCUkk5yofqfmQwo8yUmftPCfSuoXcYzlRpSWVOmf"
Data "lvHVZjg5B+rZc4K8V6cUvL88nNzLZ/EjX14WLXKZtLeXJdPERBUNmfb0Ik/O7ZNnF8348j5p9y+SeHmnZNI2Us6u0waRn5kWw6aYtizt3oCFneuxLqo9Z2cO4djUYewaN5D2Pt60KFOMXXOnSzoKcJ8lMROlUpJSowqOStYsICWopSMy35H5+Bw7+nTmamwPngwJgxlD+DK6DwwP+1lDXm7iypFalmyvos/qsoVYVryQtiCU2j+xp913bAipy67B"
Data "Asr91fB+LRnv5vHswTDevJBCwTx5vukakK9u9+Xu0R5smlSNSmJ+1lGgeIoWd7MhtnRpAdKLKGd3Ohoa08fDnUgPZ6KLuxDkVFR8STUOV4eb64I1ID+KyXr9QH2pdGpzYksZTmwtwc2j1TmxuSRrphuzdaY7W0ZUFpPemFbWOlpLcA/RsgPlvuPENI2x02WomMe97YqIllcroRelhwDZ1UOXwXVcWBDZgPkDWwrsoyTrxGrJfEz8u5tkpL0hIzNr"
Data "q0CVqzlASnGQJJWDFMlv9UFOUJt0fJTylyrp/f4tZ1ctYWjrJjSwNiRU/P7RLWqwdWgo11ZMgDsH4ckJ0m/sFn/yAEmnNvHx0BrubZjJ+sFdmSHm6kIBck50K2ZFS2Xcsylz+7YTIGsR28KPAS2qERtQjdCaZXl8XOJIS9FWSMwRBaTaH0SZr/9e1M2rMptTatSxUnDqvDyjPOqv2mskhwV5FQ2p3v1t+H8XVX5zwv+LqO+rlaizVq1TiSAPlvGG"
Data "pI93+Pj8POlvBMjPNyWjJMMfnSbztpiot4+L6XKctIuSIZfUOMZdfD61kXvrp3JgbLiYqi1YG9aMzdGtOTWhN0fH9WHrkAi2j45l64ThpN6VmlzBqFaeUwmfkbVhi0o6FbTsUcmQLp+lSkFJfM2+QdFciYvi+aAImDkU5gwibWQIHyXD77Xy4WRDR3armf/+hVjrq8uGskWZ5ZaP/q4FCBUtubVbQw4NbM/dNQPh1XrJtzW8fj6ehw8H8vH9GFLi"
Data "x4tFMIovb8ZxbU8n1gyvrK2L09lTV/xEC3p6uBAhAEa4uUh8NnRzNKSLnR49nMwlmBLsUpieZQrTVrTq490RZN4dxttLoTw41ZKLe2pwcE0JTm0rz93j9bmwvTJbZtsJ9G6SJjXpKL/pWSof7US7Blt/Q5hdfoZ4WdBXrjHAVYB0MibcXp/2Fj8S7KZHp2J6rB/YjnHd63Ng/VyBUFwKtfymKpBfksnMyDK/csqDCj/L1ydVGifKHzX/T2W92qAj"
Data "RQ6SJZ5P73m4f5v4pxEknt3Ll6uHeHNgJSliraBWNr+5Rxsk8vrQKh7vWsLF5ePZPT6SFf3asrhXM5b2bsaKvi3YMLQTC6IDWNivPdNEe/ZrXZ1wMVnHRnSQ64pp/f/QT/j3ohWSvwnqnAr/NxEg/7ui5Yv8yVpFUj2IZEbGO5I/3ufTiwuioAQepSV/OkXq9b0kndtK2rltfDmznbQz23h5ZD1vTm7m3bENPNm5gCuLRnJ8YhSHR4VyZHSI1o91"
Data "dGIf9o2LYfvY/uyZNU5q45eS8co/zAZSqiZVhJQ3oV5Vja79UX1IKVLQEt5xdMxgLgmUzwdFwvQhAuRAkseE8iGihdbtcaKRI7vqmrGqWgFW+hUQs1WXma556SwarqdnUdaJyXRQ/JsLM8Pl+uIDfVrB61cTefJ0BO/ejSY1YYL4rRNIezGKa7uCmBNVjIoFdejqpU+IuzXh7m4akOEeToS4WoofV4QuDroCp4nAaUB3jyJ0L1FAA/LJ3mipvEZr"
Data "jTq3jzblxtF64iOX0/zGc9t9ubDNn53zPVkz2p21cf40s9Gho/M3dLDSIcK1EJGOusSJZuzraEy0nQFxxewIsTegs6M+nb3NGB5QkeVxgZzeOIukd89VammizLyckJwsZti/m7mg8lyV4UQ5UK+KDWXGKiAl3d9ePsXzE7tJunKExIt7+HJNrKOre0k4vpqk4yu117Qru3m4ewkn5w9j/+Te7J8Uwe6x3dkkFcZKgXJez7qskYpwaWx7pke1YnxU"
Data "GyLa1OL4tmVyDXF9tIv+eeTPAaTkQaZGgQJSmY8fSf38SPMjv4hmTHlyioQb+/h8YRsfT23g47G1JB1bL7XlVoH0IKk3DpF6dR/xpzfxcvdCbi4byakpvTkwujsbYtqxd1wkh6bGsXlcP1aO7Mez84fFB5WCpIBUWvBvgNTqhq+BFF/y0pxJXBrSmxdDe8G0QTArjtRxYbwX0+huuyqcbuzK3joWmoZcVaUga0rrMtk5D20MdIgsZcyGDnU5EN6S"
Data "/YPVwPCtGpDxn2fx5u0E3rwbRWriZLnOdOIfDePytiDiAgypaSwmZHEjwrzsBEZXIt0FSDdHAdKcbs76BDuKVnQxIdiusHzHkM4e+WjrocNPu8WcfjGF9zcjxJhozPUTtTi6rRQ7l7twYG0pjq6vxI75ZVkzpgyTOhejltxjgLkOQXbf09dbTGEXPdGMxvRzMmJ4CQd62uoT4WlBJ1cjWrsbs25EGHf3LpGKRXz47AWKlR/2NYDq/a9aq1e+kqZM"
Data "WJX1Kii7Vg1hS0vg/a3zJN89T8rtk2TcOgIPjvPlyk5Sz20k9cw67m6YzJ1NM9k0KozxnWozPrAq88IasjS6KSskKCAnBFZhxYD2TOjRgKHiwoyJaEtIy5pkvJV7V0uHav7en0f++0BKhuQA+bPZmvmZjMRnpLy7Terrq3y8d5T3avzqjT2kXpMaU7SkMl0y1NScd9fEn7woGuGEmDH7STqzkafbZ3Np/iAOCjA7h3dncVRLFvUJZOWwCBYN683u"
Data "pTPkMh8lQ5R5/AuQyuhSxetnIJVjr0ZsCJCPN67g4vAYXg7tw5fJA8RsHUD6xEg+9BUztGM1zjcuxqFaVmyoXEQbUL6sZCHGOP1IG/HpOrvrsrt7S45HSeXQtznpF2bK9TdJ2VtMfMIM3r4fK3XDVLn4bF7fGMCZ9e3p6COQOOkQXsacyOKOWstqpLurAGlPqIs53Z306SZaUs3O72xTiAgBKcglL+3cxIfcKGb1+7l8vhvFo/NNuXi4Egc2ubF7"
Data "jQv7BMg9yyuweVYFNk2sSY/KRbU+yFZWfxGNm1cbpdPXzYABboZaV8cgb2u6WBQgqqQdTawLMj6oMff2ix+c9kzySW3HkNWh/nXDyK8Vlc4qmVPFRMpqR5CgTMhMZSXFc37vejKf35DK655UoLfE1Jd8vis+5G1lsu7i6c5ZPNoxn53jezG9W30mdqrO1C41mNG1Bkt6NWHriM5M716b+TGtGSrADuhYj75BTRgZLT62Wq9XrZCeC+RXIjmSA6Tm"
Data "8Gt5qjIlWSret6R/fkz8i8u8u3uUT2pQ+ZOTAt+5rEHmN8V8uXlA66Pkp9OkyvvP57fw9uhK7m+aykk1P3JEVzFholgR24m1IyNYMTKKIV1b0rVZDSn8b+Sifw/kz+69yicFpBpsnPqBxBP7uDSqHy9H9CVjYn8xWyVM7cP7gUHc7VyLS01KcLyGDZsrCJDlCrHQuxCDnb6nvmi5akV12BHcggt9unB2UAduL4+SyLdpQCalzeX958miFKbJ807n"
Data "8fk+HFzcggYCY7eyBYmuYENvtcaPtytR7s6Eu9rS09mcEDXDwqmoAGlIV5uCRHiZ0EXMzbYu33BwRjspxEtIetiHBxcbcv5IKQ5sdWD3eieBUjTl0iqsnVadhQOrUsNEh3pGOvLbwnRzKESUU2H6OqstCYyIdTGik/63RHtb0l58yA7Fbfl0WTRVgoJRfHBJMdUo+Lc7DatWyl/TKKKAVL9UIeVLBilqIWStSlRWyRumD+9N/IPzkscC5TN5VXn/"
Data "SsKtXXy5LBXyxU083buQY3MGs35wF9YO7CgmeHuWx7Rk3cAO7JkgeS7nlspnk6PbMzSkFeHtGnJi9yaJXwGp7lErdH8a+dMAqSxHBWWWepI36R+Fyxd8fnGVT4/PkPToFLyWGvLTddGK4lMqjXjrAF/uHdZgTFTN4ee2aJ3Ez3fP49ry0Ryf0Y/V/QNZGN2WmVFt6dXMl5qeVrib5Cf+iWRyuviRGpCSP3JV1aCj1ZfqHjQg5cZUS2uamDb3LnFh"
Data "XBwvxvQnWUzfL9NiRUv2493Qbtzt1oCrTUpzqroj28vpsbpUYeZ4FSTG4XtqmelQWTTQ/Pq+nI8I4sbIbhwZ01Lr+khOmifaYQHJqbNITpjJh6djuXU0kk1T6lJT/LnYmtb0r+xA/3IuxBR3pbf4j5Eu1oQ5mWnLZISJ2Roh5qUaUxrmbkJIMWNaO/7Awig/SaeVpDzuz91zdbhyphxH9zqzZbU1m5d4sXNZTRaOqEqvxg7aosotrPITXtyCUMei"
Data "9BS4+zio9VazBgOoVQDC3M2ob5KXVUOlIlHdY2rvFPH1k9WaqVKg/7abQAGq3v+7vjyVzBqMEhK/pJKsFrPOBjL+zQO6tq7Dqa2L+Hj9ECl3DmV1cT2VSvnqDt4fXsLjbdN5sGUmeyfHsCymLcv7tmPTsGC2juzO5lEhbBkTzsaxESwfEcFkqQz7Brckumt7Et8+E59dgFSZrJW3P4/814HUKigFpOTMz0AqM0JlTtp7kt7dI/nlVRKfnCXjqaoh"
Data "Bcq3l0RLHiX+0jYSL+0g6bL4FRLSLmzn09HVPNg4ndMz49g5qidxDcvSpYIj/pb5KSZgVLTTx8/dihvHdgmF77Mv+k+A1JazlwKiVj5/95BzEwbybFwsCWNjYIpoyNmxvB3ZgzshjbjR1Idz1ZzZWdqQ1cULM91Tl3CHHwiv606fxmUZUMyRAx0DuCgVxIHBTXl/YxLJ8fNIz1gg11hM4sfpPLk2mKt7pQANrUptSx3GNvNioK8zAyu4EVvClT4e"
Data "9kQ6WxHuaEa4avkUszVMzNZw56KEiL/Xq5Qdre3yMaCho/h3q0n7KY5HVxtx9awPx/Y7sWmVFWvmebF6ZjUGdSmBv0Bf5lsdOtobaD5ihLMRkVqfowTbgvRzMaSfaMd2Nrp0KeNE4nWpFBNVp3+KgJTJx/RkzeRUvmOORvzVvqOI+lYWkJkkZaj9H1UcWUC+e3qdtvUq0ri8C6NCAtgzczA3Ns/k8c4FfDq2Eq7vJPnUGl7uW8yJ+YNZPShIfMVA"
Data "to8LZ+/UvmwSEJfEdWHpsDCmx3YlrkcbRvcPZ+cG+a1oxqzB5H8++VMBqbSkdk47maUl0xOekvr+HvE/XeD9nSOkPJAa8tkZqTEP8FK0oWply7i4i4QTG3i0aTYHxkUzqV0NrTWwtvFfaGidj+ZSsGpY61LZsiDVXc0pa63PzKEC1d8AqYJWp6vLq9PaR3IfSiOkvOb05CE8Gz+Q+DHKj+wnQA7k3ZhQ7vRsrAF5oaore0oasSp7uf0ejnlZOSaE"
Data "/QtH0s3OjPVN63KwezMOD2nJ7QP9pc5ZImVDreuynOR3M7h7JpYrO3uxoK8fDQWWaW3KM9TflcEV3BlQwlGAtKWXk4UAaaIFBVC4MjPF5+smUPX1caOV+JPdyhtJBbKe9J+G8/Z+By6eLMuBHQ7sXO/C+gVlmDOsPJ1qWOGko4NfHh1tQSq1bGO0iwl9FJQSR6h5XqJdjejmqEcXgXVc5+YC4ytJiyTNtFTmvWoEU+n1tSZUQOb4k//Or8yq91SX"
Data "Uyap2g7J2UCmfpT67xqdGvrSxq8EQdW8mdg9gLWDezCwUTm6+VgzM6gWq/u0EbM0ipUDOzM3ooXW/7hhdBjbJonGlO+O79mSSdEdGRLSjn7d2rN38yoNRpXB6tpaUfuTyX+9UednKHNS6OeUUjRI5mR+Iv71XV7dO8vDC3s0KJMenOD5ua2k3j7EmUWjWN23E7G1ShLoqYZYGWgjO9o56dHMuhDVDb6jmtGPBHhYUVsKnZ+9CVUcTOndoZlcQvmQ"
Data "fw2kdmlVvtRprZypDBQgE5/xaP08Xs8cSfq0oTBrKJmT+/BZfNQH0QHcaVGJi9Xc2F3CmOUeRRnrUljb+GbjTNGk6U+JLOHOuHKl2NG1KWtCanBmQ5g83mqx/BYS/3Iiyc9n8NOZYZxd1ZNGDjqMbOTGsBquDK3szFAfFwaWcKCfpzV9XMzFzzPNDkZEOOpqMy+ixBTv4WZFJ1cTGtjoaFuz83ku90434cGVupw9WIZ1C+xYO8uHyTFl8dTVoUKR"
Data "v9BUPw+Dy7gTI1ZDjJqIXNaJAQJgpGjfLra69CxhQxPxHz+olmmtVTKFhMw0DcZso+8/krSMVEnzTMkGSX2tQUdZJAn8dOkEHWtXooNfGbr4FWdp324cmBzHiRmDtOl0wZ6mdPQ0ppmkc1MvA2pY/UB5Ax2qSgVcx82QpqVs6FSzDKsmD+Xywa2SFqrPUbRwWjIfPnwgPlkNYsnO7z+R/DmA/NugSbaWFF8lXWrmz6/u8PTmCV7cOMKNw+tYPLYX"
Data "kyPbsrR3IPO6NWdsi2r0q1aCkDIOdPQwE1/KkAA7ySjDPFQs8h0NxO8KKOVGoxIuVHG2JCZQ+XFv5DK/bOyqGTHqTQ6QcgsZOUAmCZDiz7yeNYa06QLkzCFZQE4M536vptxuWYHzalu3ksYs89RntEsROljlZdfK8RLPa+4sX0xscS/WdGzC7MBKbJzSSuJcL7XAcvgwl8+3JnBmVTdmhJajnokOg6o5ML6ON8MrOjGsnCMDi1vTz8NCW4S4l2jH"
Data "LCBN6CuVUJRosnBXS3p62hNWyomg4kbsm9ZBLIlZZD6P5cJef07urMjuZWXYNrcWrcp/TyVTHfyL/EDvYvbMqOEjILoQ52XNwGJWGujKBA5yMqCFvSHD2zYi47HyuZVeTJOKK5O3YpYqKP9TIJMTlWaUhFbaVPz5L2rARko8z6+cJaxpPTpW9SGsTmVWDgjjuFSGhycNJMbfW6twWzkWoZGY7JVMv8G7oLgjpj9Q182YyraFKWWSn8rOpmL9vpR4"
Data "Jf9Uy222dkxLlyD5nAvkPxKVIl+FnMMs+QVKbfaA+JRq0ED661tsWjBGW6O1X4NK9KtVluiqJYio5EH30s6087DUVpSrZVaIejaGVLfUp46jBQ2Lu+LnZE0FByumxPWRuFS8WebLz0CqS6pSpoJ8kCrXz1BApr3g2b5VvJgzhtQZAuSMIYiqIX5iGA+ixIdsWY7T1Z3ZJibrIk89Rolf186qIEe3zZeI3sn/V2yIjKB3WTcmta3EFgUM++HTUgFn"
Data "Jg/29mXziAb09jemo9OPDKzowFg/L4b7ODCstC0DvS3o5y5mpbNxFpCOWZoywsGAGC9Lwlws6OZiRVfRot3KWDKyjRe8WU38rQE8PNWRRyc7sGNeZcZ2d6CSsY42d1Ft0LOkSVXWNfFlRhW5lkAf42KsbUWudj7uXMxW27HqwvplQo7oQzXYXhJG+X1vUlN/MfH/r5KT2SrNVUTKZ1fD58S/e3L2JEE1qxLaoAajg1pzYMYYnu1ex6VFUxjfph6d"
Data "i9vQXjR5fWcDTSNWsSpACcPvKGH8I8VM8uJhlA9P86Jyu1JtJInrE/9RWydH+bfqkjl1rjr+M8l/H8i/kZw8ypHkpAQyUhOkgvvIl8S3knliNiW8YPfK2US2qEU3P29CKnmK3+SuTUBu62UrJp8xNcz1qGJciFKF81DbxZpiegUx+06HGmI6rpk9RZSe0o6S+V+yBkArGFVB096oOkAFuZEUrQBKZfDlDW9Pb+fZvLGkzRiRNVpHNGTiuBAeRtXj"
Data "WssynKjhyIbS+sz3LMpI8b3ais96cMtCqfgFSHkO7t8htk5FIqq5cmhZtMC4Te5jDZ/PDeXw9BbM7lyKqLKGxFUQAEvbMaCYtQbj0OIWxIkZ3s8le1EpeT4NSAmhNnoCpDWh4lt2cTQlyMVM/GcTOpctwsNdg+H5Ah4fCWPPnBqsH12ZiJqFqWetQxM7XcoLkEdDWrIzwJe5lV0ZVcJKNLCRtuq42pWqo1gToTWrwKtnkh5SeYm5p+hRSZT4JQvM"
Data "/6hAqx8rGL+uBFVrbVoab27eYFR4CGFNGjC4U2vWDI/l8d4N3N+6ki0j+tKrehlxQyyoKxVUNQmVxRqq7GBIVXdrfMXXLm1viquZvmhcSfsUgVJbG0ddKOuySkOmSAXwH93/7yD/ZSC/zo2sY5VAOeEXkc9UgqYnCjBSMMQEObNvM7HdWkuN35opPVoxLjiAPo2q0qasO/VEW9T3sKd5WU98Ha1oWM6bXoGtOb5rE4mvn5LySU3KTpLKWNX4WQwq"
Data "INVdaH++AjJRTiRpo/nfknj9EM8WjCNdTCemSWEXDZkyJpjHEXW43LIkR2rasbqMHnMEyBEO+rQzL8Sd8/v5lCDXU616AuW1TcsIrubOo2Pz5MLH4cFsLi1sw7LQUgz2N6VPSRMGl3UQ09GOGLXxTzFLbeb+ADcBz7mIaMei2UBa0svJhkhnC6I9bAi2MxYNaSE+nwPBxcxoZv8dvetYwz3RwI+X8GBHDEtjfGks/mWA7TfUN/hG04SPh3bX9i1Z"
Data "UMGOkaI1+7gaE+xsQitnKwKKubB63Ci5d0lzpbnUrBzJB23z1J/z7D8TFWVqcvbULBVdkhyouaiJiTy5fJ6wVs0IrOlLW79yzOoXxu7ZEzi6eDqTwjoQ3qAKTcu6UsHWQGuoqyz+tYtBAfS/1aGU5HuPDm0kjSUjVau9NgAgqwU4PVOuJ+/+uoz9OeRPAGRO6VdB+XN/DaXW8qpek5NEoSkg5YSYTrcvnmD6sH4sHd2POf16MKhTEzpWK0Nd8Ylq"
Data "e9nTokppOjeqydYlc3h++3KWySVOfZqaBC1mjPINM7Tr/QMgVeFQ15UP4+XgkzZf9C0Zj86IwplI6iwBcsogmBRD2qggHodX52JLb/bXsmV5maLalt/D7fVoZ6pL4os7Erfct5S8zDcCZuoH5gzqxp4FfQXGtewbV5fp7SwYVduI2LJ6DC1rwyBve0YUd2awq2hIDzVr35AB4pPGOBYi2r4IkfZGGpCRAqTagzFENGVnMc2DREN0Em3R3lmPls75"
Data "tD7Q2SH+XF8dy/0NQ7R+zWq6qt/xGxrr6zDB14P4CZGca1+FxRWsGS7QK/9RrauqNsVpW6EMLy5elDSRdEpQz5CZlQcKSNUd9Bt0rKv0/xyfQkqyxKPeqOg0f1IyQlViyZ+5eGAnA0M7EVjPj4Y+HrSRfG4o1lCt4rY09vHEXzRiNU9Hqpd0paK75H0df7auEjM7B0apRNQiVukSVIuwukxO+LPJnwBIhYLUwNqr1L7ZQCpIVNAS7ecUVBkliSwJ"
Data "m/TmBce2b2DmsGimxnZnQt+uzBrSiy0LJ3Pt2E4+P70rUX6Q32TF/UU8HgVhshy/Eyg+ik+qGicUfyr8QyBFPsqb91p7opjLr67wbNEk0maL1pg8UEJfMkZ05ElPf8638mSPaKRFYipOLaaAFA1pXJiE53cl7uzqX436yfjEvZNb6Nu+EiMDSxJbKx99fHSI88nPyArmjPVxYrinA+NLejLUxUZbXGqQ6qR3Kkhv+wJaH+EvQNrS2dyALtZq+Jyh"
Data "+KyFaWryI+2cxH91VSsI5BFf+jvqCpitHH6gsbx2knhaW3xHvfw6rG9blY/DO3OhTVkW+5gxwC6vNqujrQDZysuFocFBkjVyz2kCpJqFoUBRZqsy9ZU/qRp5tCFv/zfJyeeE1ExRjFm+nZbfmmSS+Pmd5qpoDTKq60m5K8mvSX//gBc3T3H/7H5O7VjHnlUL2LpoNpslHNy0lmd3bmTBnKEqDpWhco+/RPyz/LuBC/8N+ZNoSIWDev17DalmgqiD"
Data "JCkYqcni0amZAFqtl07Cm+eSR+LfSCaRIfCpDFMZp0bWiCZUA5TTtBnhCvR07Z/UkwJiumaKqg7pHPDVHWhAqltSB+p25FhiEC2p4pD4P9zh0dJJJM0dLRoyC8jM4QJkaDUNyJ21bQRIPSZ7FWWQvQFtTArLvb0jUe5DjdVMUTPo1X1lvGPdtFi6V7clrpYBI6vqipmqy9gKlgKjBcOdrZlQzJmBlkYMczJmsPij/e0LawsY97ITk1WA6eVgrQEZ"
Data "YmtDZ0tTOqq9SKx0aWNVkJ6l7GlsIjCa5aO9mLgtbQvSyOJHAmzy0sjoLzTT06FdUR3ORzbhaVQjTjUppm1XHm35Ld3titDO2ZxuVSuxfvpUSQtJDGVGalklKaUaXqRSTFPLmyiT/zcAMmd6pJp9lZyepcHUBbNMY8kIpY1VpZ0haad1vch1U9/L4Qv5sQCroNVcGfme8tVVpSFlJC0pUdOMaiU51SeqBi/8MqpI3ff//d5/L/kTNOrkJMyvTCAt"
Data "t7K/qxUGlWHZQTuWxNZqxa8TPStkwa4gzAJRi0r+qFeV9Srb1XlN1EH2l9KU76r8yORnPNg4l5dzR5I5JQ6mx5IwoDX3g3053sCN3bXsWVbOhOGihVRrZffiDlJAlJaWAiERadEpp0nie3TxJL2a+TOkngdDK5syWmAc6Z21XP9YgXC4VREmuwmcorGGiD8aa29IHwm9bI2ItDIhQiAMtTCnq7W9aEhrCWKyioZsb6VHW3ND2piZ0NbEkNZGBQgw"
Data "/pEmdgWpYfottUy+oZPtD8wub8Kb/s3JGNyB3X72zCqmR7TNj3RzM6SFqxmNSrny/NolSQO536+TUT2EelWJptJfS8T/u2jR/E34Rb6+cE6eSsjJ478L6n6++s1fR/b/C/kTAPlfFpV3knEKSNWGqF4VsFrBkzzW8l9NZFY1dOor7u1YypOFo0hT6+pM609iXDsB0p8TDTzYXcOBpWXMBMhCWt9gjzIuomJVV434MFJQVHRaGZHj908eM2tAL21A"
Data "g2pVHVPJiXFl7BjvYcF4AXKEwDVJwFBADhbfsL+DsWhI0YwCZLi1kQBprAHZxcpOzFVrggXgINGQHSyLCpDiRxpb0t7IjA4GhWlplJdmjvrUttelrm0BOjvkY5WvJYwI5G1oPfb4OTGzuFxD9Z3aFaKR+JFd6vtpC1dnNeTIPX8d/p6cXPmNJBfI7AL2r4DMau4XINPf8OzgOgFyDOmqlXVKPxIHtedeV39ONvRkV3X7n4GMdDEkqrI3fBbfU4BU"
Data "LXsqKhWtdtHUZC7u2MiAxn70qeDKkIoejPLxYFxJZ8Z62DDczpAxruYajGr5frVAcZSjIRFyXs1P7GmtT4iVkcBoSUdbE20KVierPJof2Vr8ytYmFrQxMqedkR4tTHVpLJDVdzGhhaclfX2c2d20LF+Gd+F+h6rs9XdmsnthYt1Fu4ombexmysQ+PeRm5ZlzgfxD5X8bSFWosgvY3wGpzucQpPkcYtCKn/rpzG6eLB6bBaT4kMlDArnfrSqnGnmx"
Data "w/8XINXA77jaFcXSfSe/T9XWF/orIJUf9uQ+E7q2J9K3BJGl3YmVMKK0B+NLujPM1UaCFXGOxvR3VgMCDLXhbD0dihIifmSoTRG6W+sRZGNCoI0BncQ/DLT6XvMhW5jr09LYnJaGAqWxEQFiwta3M6W+u5i2lUoytVlNzgQ35mNMe+62r8YuP2fGOBYg2kG0p5sRLYvbsH/5XLlH5Zdlp8XXIRfG301ygcwuZP8SSNUa90U+zfxA5q0TPFk0nvQZ"
Data "w2BiX9KGiZbpWo3TTUuw1c+WRWVMGSpAhjkaMKZ5LUgUkzUtRTNZVdyqMzpdW6tUQmo8K0YOIaqmLx09XAj1dGFASU/G+pRmeDEXBrpZ08/ZVOsbVBo3zFlAdCxMD3sJtrp0sy2swdhee/1e/MdvtalUzcz1aGZsQTNDS1qamNLA2IC6Dpa0rliKnrX8GduwJic6N+Nj307caledrVUcmOSutG5eunqZ0aqUHY/PHpJ7VBoyOy2+qrxygfz9JBfI"
Data "7EL2C5BZjT7aeQVj9udftBXoPsGTqzxZMon0WcNhQh8yRnTVgDzTrCSbq1hrQKrNeULt9Zge2DQLSOVDanGL4ZuWrrUWa0CmJbF7/mx6NapDGy9Xgj3ciPb2ZGjZEgwu7iYmpJ02mLy3q6k2EVltbKMmJecAGWxblPY2+rQRbdnO5jtaW39DcwGykWjIhiaWNDSypJmJGbUM9ajn7kDXetXp4FuBLsUc2dGyJpljojnXtALry9sws6QFkfaF6Cga"
Data "sn15N1JUt5H2zNlpkRNygfxdJRfI7EL2T4FUQT7XVlJTQL67x2MFpBqtMz6G9FHduNe9Omebl2JTZatsIHUFmqLM7d4mawD7V0CqoE1LUqsHC5B7ly2gT8tGdPIpSY9yxQkr5kaMtxv9PZ3p524rQFrQy82cCBdTAVKgFJ9SG2tqq0ewaMd2Voa0si5KG+sfaGn9PQ2tCmlbwdUxtaSuiS2NzQRMO2salvKkRdXy+DtbUde8EJta+ZM5sTeH65Vk"
Data "SUkzxoj/2NtNTF257+im1SDhtdxoNpA56aSCOlYhV34XyQUyu5Ble4n/FMgMbdxrvAD2hEdLJ5M2ezSM60v6mBANyHMBpdlYSTRkaXMGO+lq/XkLQzvCe1Ww07VoVPzqOpqoIUjpSWxfOpuYdo0IrVWRXlV9CPV2IczNligXa/q62Yh2FCAlaEA6mwiQRoTYGhFqbUg3ayMB0VhANKClTT6aW+ehvnURalmYUtPMlhomdgKoLa1LetGgfDEqetli"
Data "X+QbalnmZ0fnmnwc2Y0DdYszx8OQaJNv6K2mM9kWYWKY3LdaDUCZrDkA5gL5h0gukNnA/UMgvyqEKWmJ8t3PokZf82bTIpJmjALxIzPGhvKwZ12ONy7BnjoezC9lyigPY4KtCrO2v5rzKAX7b4DUyrPWwZ7EsW3L6duxIb0b+xFVrTRd3K2J8LDVVgWIK+6gAdnFohBdRQuGiz+pYOxhY0x3CwMCCuWhg2i/AGsTCQUEpoLUsCiCv5kZ5fXM8TO1"
Data "o6a1Nf4OFpQR01e/oBrjWYRWUmlsDfbnXkxT9tT1ZqqLHuO8zYlyN6auWT4OLFYDAuLJSFad8OpmRdTr1yFXfhfJBVKRImz8NZBZ53I+U99L1Ya9KSDf8m7rcuKni4acMZyU0aHcD6nN0Ybe7K7tycIylozxMqWrnR47Rw6QSBMkjqw+yKz4s8tzNpBn9q9jalw34trXo1NZJ9o5GhHuaa0BGCbHvdxMCbLIT6BFPjpbF6aLpa6mJZXW7GYnIJob"
Data "0sRKnyaiIRtIqGlrQE1Heyqa21HG0IJaTo54GRXEVO9bShS3wEY0YR13XTZ1rcLHSV3ZWUeAVFvPie/Yp4Q1dcwLcHPPOrm3eDJVJZRzv+rP1yFXfhfJBfJXAKm+lqyt3yoFNOUdCXs28Gn6GJimgOwpQNblaOOS7KztwcJy1owqpoDU59SsCX8FZE4rrlaelW8mQB7ZsYIlkwcwIaoDwVW8aOtsTA9PczpZ6xJsV4huYv4G2eYh2KkAXd106epc"
Data "kO7OojEd8tPK5Hvx+fRpal+YuhY6VDbUoYJZHirbmkpwpLSJJaVNjbDI/xeKF7PBwrYAjvYFaVHZhocLevN0VCBbansz2dWI/vZF6C8VQmOJL/X+ZblR0Y7KTM+5X/UnJ/wsKpFy5beUXCBVmZLwT4GUoL6mAamWKRQg04/s5N1UAXLyEDInRPFTRCNONCujAbnIx4bhHkbaMLZbqxb8DKQC8e+AlAK/bd1ipo/uz5yh0YzsEkBwGReC3M3o4qJP"
Data "sFsROrvmI9DlOwFVh+Z2OjSz1qGVow7tJTS30dGWcfQz0qGKgQ4+ErwFSuu8OtqOxc5F9SltaSrmqjV2TiYUMPiO73/QYfvCkXBmNZ9n92VznZKMdtQj1tGAvmUd6VbJU25U/N5UNahbjQHOSgbtntUf7SBHcoH8rSUXyGwtmAWkAuefAKkAUmNl1QySswd5M3U0qeMHiZbsy/OYAM62qqABuaSCHUNcDWkvpt+rPZv+DkgF/c/xi295YM9Ohgzo"
Data "y7QhcSwcNoDQGhVo7SF+Y0kzAr0KEdfAgdk9y7NlbEMOzGrJ4Xkt2DmlDov7ejM2yIa5vcozI8KH+X3KMiumIn06lMTT4i+4mxammKU5xa1M8LSzwMTaGDMnCzy9XSH+JVw9xOc5w9ha34dBVgUY5m1FRHEbJnYOEBjVYAZlrv4yPe1nFrU/OZIL5G8tuUBmlzb18uuAfA/XTvN68mgSx4qPOL2fBuS51hXZXtONZZWcfgbyy8WT8n3VuZ6lGf8e"
Data "SDh2/AxDBo9k1IDBzBw6hO51qxJQ3JaOZa1o5PotxxaFcHNXDHcO9OLyriCu7evI7SNB3DzYlmt72nJ3b0+ubg7myuYOHFvVjomxftiJpjTX1cHeqAhOxnpYGBbG1s0ZY0dHGjRpLjcjz3H/Ok/GDmRHYz/6m+ZlQkV3QotZsn3CQHlMAVJNecoF8g+XXCCzS5t6+UdAqskD6n2S9mUpyGr2xp2LvJw4kngxNTPEZH0c1ZhTAeXYWt2Flb6ujPA0"
Data "pbONPrx4KIU/q+vgnwE5a+4axoxfwNjhkxkSFUPHmjVoUdaN1uUsqeOuw4l1ETw4O5BHl2K4cqIjV0+34tb5llw51YArRxtyfW8rzm9qyok1tdg2z4/hvb2x0tfBwfQ73GyM8bI1x8vViXz6huhaOvBdHn0+3hMN+eQ1CfPmsLNZTfqb52OynzeRJR24skbM7E9qUHkWkOpeVVBPr0LWnxzJBfK3lv9tIH8WBeEvQRNVCpUdKwyqQqh2TNPeKHPu"
Data "wVVeCZCJI2NIHNVDa2U91cibnb4ObPRzY4yYf2o5DbVrluprzNE0KrqcaHMAbd5+BGOnHGDq1J2EBQ+kRc3GNKlcloblrald6gc2L2rNpcMhXD/dmdMHG3JR7YB8oQFXz9Tg+qmaXN5XiwvbqnNsXSXWz/ZhaO/iWIqGtDLKh1EhXRysrNAXGA0s7ShkbMt33xixbPxiqSw+82z6NHYG1CDOMg/T/IsT7ePO3T2byVA7WqklU9SUJi0BsiqpnPv/"
Data "hclcIH9r+Z8GUsGnJisna4UuuwAq01SVOnVKqTNFjYRUKYXp6mTKSzKvHuXF6IEkDOzJl/E9uNGhLJfrunCsohVbfGyZWtqBsQF15Uef5MdKt6aQoibTqlZLiTtRLiPv6DfnKuXqLyR21APWb8+ke/gyOnaMw7diJYq7FcG3zHdsWtmGW2fDeHI9hBsnG2vbkd86VoMr+ysJjBW4frgSRzd4cmprBTbNr0yH+uY4mRTA3sQFZ7tyGJvZU8TQFFMb"
Data "JwwMbLDVd8OzqDMJJy7xbMkczvVsxgBTHSb7uNCnfAmeX7mq7eirUaf6UNPVxO8P8uxqUndWcqSrz7SgEM2F8reU/2kg1YrZnwUytSqARqCajKv6B1U5UypMAakszo9ZfCaobg/e8fHMdh7FRZA5JJJ3/QO436UCV2rbc9bPlt2+Lkwo5cCGIX0lnnjhT61bJ5GozX1UQ4lEpLZDPPgEKnXdRqn62/FveojoYY8ZM/sB7XtMp2K1hlTy9cTZSYeN"
Data "68Q/PBvFvashXD7WVLRlXa4fqc2VA9W4fKA6R7dV5MAWP47tasqiGfUJqOmNu7WnaMZqmFvWwMiqJAVMbDG2csHa0h2rgk4Y6ugyqkNXrs+dxPWYloyy0WFiSVviKvtw//wlktXDKs5Uy3KaGmn0WpIja3FklQKqctI+V1o0F8jfVP7ngVRLefysIXOAzNGQCkplcUpQjCapLcx4TfyJzdyKDIIRvXgaVp9LrUpy1NeC7aUN2VHTS5u7+Hj3Rm1y"
Data "slo0JF6tKSuRZKr9EyX6BCnQQ5fcxrneAso1OYy77zaqt9rP+kOwbt9HVm07x/RF8+jUvQ4r1kZz8vQgbt4cyNXLoVy+0IkLZ9pw8nADDuxtysFDkeza05/V66KJHdAO38q18fRohrNrMAUNG2HiUoeCFiXJo+eAmXkxrIu6Y65jiNM3eTkwrC/PRnVjtLUOwxyKMK6WL3dOnkZtzZGWLH9UeqSrBp53WrWSA6SmITUgpcbSZujnym8l/+MmqzLB"
Data "VEOOFDxlfuUAqcqY+lCVxw/yRo6zfEsx4RIekXRkHTdC2sDIXjzuUY/9dZzY7W/FSgFye0BFYss5wvN7UqoTiU9NzDLz5PcJyRmadjl/G2p3XESxBkvwqLUNn6ZH8ai+hrhprzhwGc7KTyct2EXkgKGMmDSchcvGs3bzRFZvGM7KNf1ZvjKaBYt6Mm12OFEDuxEYEUyjDm2pUKslxX26Ub7qaIpXmkQRu1B0HVtQxLk2Pxh5o2fiLf5lcTyMPDHQ"
Data "0WFNVAhvxkcw0lyHodb5WdKmMed27NLMUW2RBC0N1ACBT1o6KQNcPUuGAlJLK2U+yGuu/GbyPw2kKldKCWqw5QCpfEj1QU5QmlJes3ZmEn8q/gH3F4/mfrgCMpI7HWuwp64bm6vbs76+J8tbVmb74BApucr3SlNMa5pFUNY2qHkpZXj0zBN4+Y3EvdpsjEpNx73uRmx9F+BVeylhw2/Rd9wtKjWYTtXGU3Hy7ol78Z64eYVg5xSEpW0gTs5d8fSK"
Data "xMU7HAefMIxKdMKkRBccK8VSstY8KjbahHeNdRh7j+VHx2CMSndGz60Bhnb+6OuVwKaoFxbfGzC5QxveTolhvO03DLfJx9rApuxbspiUpPRflqbRoEvQNGMOkNrmVmr6mNL8uUD+pvI/D6RSAuo1y1TNBlJK4tefpaklBZXdqvypT3fZ3LMpL/t1grhunGtWkT2NSjKjnDHrAn0Z1bAU709tF9LVSJesAQHPpRS/l1fxIpm6+gLlag/Co9xQXMpN"
Data "wrPuMgzLTcXefwHmPtMo03ANvs034l5xJh4VZlKiyjw8y03HrdQMHItNwdplAs7es/D2WYp7+UU4VpXfVZqOje8M3Gstx6PmZhyrbMSq/GpMfOZi4TsWK79YgbYjph4BmFhWx6hICez1PWnlVZqUpRNZVMaE3oV1mFG7Auc3rZPnlKfWYFRBVUQpWmWigFQp8TOoas+MXCB/U/mfBvJn0ehTQErQClhW94eCSQWtdTV71bnkM1tZ0LQ8n4f14Em3"
Data "xhxsUI41NYoxqrwF+4d1YcPonvLVh9nzILPieCl/bkmJnnfgDv4dxmEhWs+r9AjKVJqBb+stmPpMxqbyTByqzMTZbyZe1eZoms6y2BA8fSfgUHYYLhWH4eE7AvvycThVHoir/1CsKwzHvtoyrKqsxqryCmwrrcbaZy3mpVdiWXE1TrXWULLlaoo1n4mdf6yc74add0fsnZthb1Ed+2+NeT1vEgda+RGlq8OIMs5k3L0m960lAdrGyFoFleU/KiDV"
Data "qSwg5YHU/FAtbXLlt5JcIBWMWgFTIQdI1cifKdogk9fJHzUgU9QuSskvODtrKMvET0wcG8GJpj6iHSsxtYIzs1v78eLgcim14iBmvhWF+lFcyFRSJH7VFDR3/21cGvbBxq8PpepOxLPEMHyrz8Gs2GCsKozBpORQbMuPFeDG4lJpPJUbL8a5/Ci8/MdhUyoWm7L9sa/QT6CKwLJ8FA5V+2FRIRYH//k4+q7CqcpKXKqswqvqerxrbsCrzjq8RdsW"
Data "a7acaj22ULnjEux8B2BbNoJiFXth69AKXR2pRPrHcq1PF8a7mDC+khckvhPGUon/lJHlK0pQS2cqIFXQ9KGWXlJB5QL5m0sukDlAaiEHSOX7/bKgsmAl56UApojJevcU7FjI0yHB7BFNOd/Pi7F+3nD7iJTWJ1JQX0gUAqS21H6WRjl2/RPlWg/CtdkQTCv1o1yjmVTyn4aHZxzmnuEUcuyIkXsoNiVjcCobR/la0yjpO1HAGYeV2wBsBFoH0ahO"
Data "ZUeIthyOTZmhWJURkEsPwclntJwfg1elyfgI4GX8p+NZaRyeVSdRuvE8ijeeT40e2+kw/Cx1w7aKnzqeUhJK+ooPa9uc6e1DuT16CEurldP2E/lp31apVKQKkXtPVA6jiLIWlMmqgqq3stIqF8jfQ3KB/CdAqkUbFZBvpNBpQKrWxic3xRl8yOdlE9gbVJPNbarQ18OCp2q4WYoa3SIg8kGiTJBokrSoPieK37jkKMWbDMK6lpiaDSfjWWuSmKzD"
Data "REuFYGDbEj2HAAydWmPs1A77YiFUqD6Msr7DcCsugHr1wcW7n/iQA3CR4FCiHzbF+2Bdog+2JXth6RqErUsHrcHH3rkzLp5d8SwjJnGlaFyr9MOv7RJKNVtEg6iDjN+czrz90Kr3QRzLj8HPbwidKgRwe+ZcVjauRx9Xa2aGdZZnTcra9UCeRkkWkKqLKCu5stJK4SlQShrlym8nuUDmAKleVdOiWof0i5p2JGaqhM9S4JJUg47ymdTY1Gd3eDp7"
Data "BBuCajCqmivbYkNFdajpSmLqSQHNkO+mfEkgQW08KtG9fQ+h/eZTtskorAQAt4YzcK46HjOnMCztOqFv3ZiiVnUobFELc6emFPfpSrkqPSlZNhhr+ybyKpB5tMLerRk+/iF0CpvOuDn7WbLlGmt33eLCtffcvPmJa5c+cfLwM3bvuM7KVScZNn4DgWHz8G0+nUahO6ncYSPN+51i6XFYehSahR3Fo1Qc1TxbsH/MfPaE9aJfCQ9GdWghdcqrLBq1"
Data "NFH/syyFRHkgDUjtj2rekXTJBfI3lf95ILPLXFYZUwRpCwMrMyxNNKMaxZMuQQpekmjIhA+k7N7CySFRTG9ZkeFNysLrOwLjJz68fCRxpJGYkcjnVOVtqbjEf5SfxQxeRYfem3CpMR7zCsNx9BtLUfsuYo52xlpgM7KrQ1EzP6yd6+HgVo+iRmVw86pLufJNCYsYxZx5m7l09TmfxIRUGChLUgV1rGkxdfOKC3VCvcrJFHl9IddetOktU1Yn0qjn"
Data "ARqEH2TVGTgslnXcnHf4N1lEjSq96dU4ipMjBfTadZgeKhpSDaCXONJVp6nW/6EqpxS5ZrZ5qiWWupB6rz7Pld9K/qeBVOVKFWgVVPHSCpfW4S0FTexNZba+To8XMOVcgkD26TPvN29gWVALxrb15/7BpfJd5S8qTZG1KsB7+V5qpooxk4zkL9reLwuWnmfplnjKNpiLdflRWFccilGxbhi7t6OAaQ2KWlbH1K42riVEQ5ZpSpVqrdmy7Siv34m2"
Data "FSgSxJlLSErM3o8/675UQ1N8apZ5rJGouMi6rPYwqq9QDbY5dQ2mr0igXpddBA+7wtpzsOY09JnykAYdN+BfZwwV3VuyJXYay7uGElmnqlQwYorKNb+kSISaCZ8kaZCQZborkXiz0ixbY+bKbyb/80Cq4qYaXlRQrYkakNrqAGqGRpaZpqZkqTmEaZeusCd2ABOb1uXEstHyg8fyq08aIOr3n9N+2b8jI0V0mJTaZCnbu/c859RlqNZ8BaUbLMS0"
Data "zAAsK0VQ0LUpeo6NMHNujIlDHUzs/bB1rkK9Jp149vJTVjxaP6AKCoYUcXMT5ZyCUJ1LIj7tpYCpejhFFIwCkNr1KTlF7lve338Gq7ZDy54HiRx3k53XYdNFGDznPg27bKRs7Sn4V+nLgIZhbO03lO7+lTi/bb1Y33LjqfIA2jIeCfIo8fJsquJR18hKL/VJLpC/rfzPA5lTsFTQRuxkb6mdtX1AVkOGGjZGajovDxxhQccgDowcBO+uijX3UApp"
Data "giCZNRPig0SifqUkNVGgUT+Tl6NH3rNqXTyN222iYuOl2FQagnHF7ugWb0FRlyYUtauPnk119G18MbcvT4PmXUiUG9MKu/ojZqPahu9LmsSuoFNBWElIUJpLGZNqpGnWLatV0dNSk0mXzxWQR07Byi3QtuchYqfc5ch9mLXtKa3C11C5+Rzcqk+nRt1JNHJryMgm7RkXHMjA4LbZaSCRqAEAAuMXreJRFUGWVswxm+UbufIbSq6GlKBgVGBqQGoa"
Data "UoJ6lfdZoIqoKUlPXvLT9l1SPt/LR6/l5Ds+f/nMR/mGKpwqDm3j0WyIMlO+aFsWnjj+jIjIVbQPXk7pqoMpWTsW/RKNsanckqIO1ShkVh5Dm4oSyqDzo4loyZI8evJa7ZNKcqJEoPpHc0CUc2ppH+3G5ToJYi6r1uCs+/9FPn1K5faDBKr4xzBz4SMGjjnH8OmXOXkblmx/SMtucyhbazCuleNwK96Vyvb+lNI1ZVpMNAfWLstOA3VdlQIKRKUl"
Data "s0xz9Xjq7M9pkyu/meQ26khQhUpjSDshhTAniOR8psGgCqimhkR7aJuIqu6RrMm7fxWHkpw3Enr2jCE8Yihe3tXJW8gWS4cyGFq7YmLnTmEjG77Lo0ehomYUKmKMibkNOjrfsWix+Kc58lVcfxVE1PUT0xWSWYymiCZXH6kZGcNGzsDEtDSmFlXw8G5OnUbRVK/bk/K+nShTvgOexZvh4F6dEqVrYG/qQJHv87Jn00aJW3xUbWNciUhLh6zYlQmf"
Data "I18/c678dvI/D+QfIUlJSVSsWBFdXV0MDAwwNzfH0dFROzYxMUFfX58iRYpgZGSEnp6eAKnDhg0bhP1fAPhnovxe1cyj4EgTeBLF78uBZdWaHTRs3J7mAd0YNnw2kVGj6Nt3Ku3b96VQIVfsbcvi6OCBsbGxvC/E6NHiF4uoXYaVqB2Hc+WPlVwg/wDJKeCqwOfLl4/ChQtjaGj4M5zW1tYakOpYfa6APHbs2M+/+1eSIdosa2dodZxJatoXzdRV"
Data "ZvPly3cJD4+lWdOOrFyxg+heIyhbui4OduXIl8caA31H8ucrTMGCBTl48KAWX6o2gFWZvJ9+1fVz5beVXCD/AHn//j0fPnwgIyODffv24eTkRN68eTUgzczMsLGx0TSj0lQ5QF6/fv1Xaah0be3UbCCVpS2vSclZZuuDB8/p3XsQzZt3pE2brpibuZDnRyO+/84QE2NXjI0ccLB34fTp03z+rPpOs+TXaOZc+X0kF8jfWXI0joIxRx4+fKiZrEor"
Data "KpNVQak0pjIb1TkF5MWLF7O//a9FacUcGHOATExK0zTl1Wu3GTpsNBERfRk8eDTlyvlToIAhefLoY2rqKNf5kXPnLpCsVjLIllevXmmvqgLJufdc+eMkF8g/SL5oTa/8rIn27NlDdHS0ZqYqGJX/qLSj0prffPMNa9as0b737yQHyPSMLz8DmZySJloylZOnzhHQog3rN2xhydKVFNUzwsTUChtbJ3QLG9C+Q5BUFFn3lZCQ8PM9KolX/ZC58odL"
Data "LpC/s3xtdqpCr0T5ZoMHD9Y0ob29vaYlFYhKQyrT9ccffyQqKkr77r8TbbpituQc52g2ZYq2bt2aI0eOcOLECWrWrImdnR0uLi6iKQtolUCO5Pzma834tebMlT9GcoH8A+TAgQPcunVLK+A3btxg//79WsOOMlXd3NywtLTUQFStrQpKBUudOnWyf/2vJUfDKVEKTvl/OZXAlSuXaNeujfiS9zh79jQdAttQoGAeihQtSOUq5XFxdaBZsybs2rVL"
Data "+/7XolqGcxt1/njJBfJ3FuU7tmnTRjNDFYCenp5aI44yU1XrpnpVGlIBaWtrq2lH1bjz3Xffce/evexY/rmkpqZrUOY0xPzi92WyadMGunbtwr79u9iydQObNq9F5y86GBkXRd9AV3stWDC/dr26devi5+dHvXr1tF8r8zUxUY0/ypU/UnKB/ANEmafKV1QF38PDg+LFi+Ps7KyZjD/88IPWP6mCatBRsCotqT4/d+5cdgy/XpR2VFCmp6eKn7qL"
Data "kaOGMnTYQDp2aktw146iHfOJD2mKuYWBBCPRzuaa2azMWFUpNGjQIDumrMokV/5YyQXydxalaTZu3EjDhg01IPPnz6+ZplZWVjg4OGgaU2nGgIAAqlatqvl4SksuWrQoO4Z/LWrsqmrJyVTjTjXrNZN0bVGuTB7cv0toSFdKlvDCztYC72JucuyJm5iqpib66OvpYmFhprX4qntTfmzv3r01UzXXf/zvSC6Qv7MobZWZmcmLFy84efKk5j8ePnyY"
Data "Cxcu8PjxY+3z+fPnM3HiRBo1aqQNEnB1deXOnTvZMfxrSU0W+ATEDG00gDrzC5Dqde6cGbi7OQmM7sQN6MvpU8eYPWsa0b3CGTN6OCNGDGPWrFmsWrWK48ePqwg0USbw162uufLHSC6Qv7P8o0KtzqlGkxzJaX39v4lqWv3rkJyUoM34UMcfP7z7+TgpMZ4vagK2+t4XZY6q72c14KiQ44f+Z/eTK/93gf8Ps6j35iFJl+wAAAAASUVORK5CAIC="

   

Print this item

  PSET "hat" graphic from old ad in BYTE
Posted by: dcromley - 04-26-2022, 03:29 PM - Forum: Programs - Replies (25)

Years ago there were ads in computer magazines, I think including BYTE, that had a neat little graphic BASIC program creating a "hat", one pixel at a time.  I don't know if it advertised hardware or software or Geico, but I entered it and ran it and was impressed. 

This code is my recreation of it, but it's not as good as the original.  I think the colors are right, but the texture is wrong and the backside shows through.  The original somehow PSET the near stuff over the far stuff.  When it ran on a BASIC interpreter on a 2MHz computer, is was a pleasure to watch it for the many seconds it took to run.  With the QB64 compiler on a xGHz computer it is TOO FAST.  I put in a _DELAY .03 to allow the thrill to last 12-seconds or so.

I would like to get the original code.  If somebody else was impressed with it like I was and has the magazine issue or has the code on a 8" floppy, I would appreciate it.  I've browsed a few issues from https://archive.org/download/BYTE-MAGAZINE-COMPLETE but haven't come across it.

(Are images restricted to 1x1?  Is there a way to get the images side by side?)
[Image: hat1.jpg]


[Image: hat2.jpg]

Print this item

  BASFILE - Converts small files to BAS code.
Posted by: Dav - 04-26-2022, 01:52 PM - Forum: Dav - Replies (3)

BASFILE is a utility I use often when wanting to put small files INSIDE my EXE programs.  It does this by converting the file to BAS code that, when run, will recreate the file.  This tool is helpful when wanting to distribute/post just BAS code instead of extra files with your program.  The BASFILE program will ask you for a file to convert and then for an BAS output filename to create.  The source is below.   I've also posted a modified program that displays my avatar image as an example of what you can do with BASFILE output.  

- Dav

Code: (Select All)
    '==================
    ' BASFILE.BAS v0.21
    '==================
    'Coded by Dav for QB64GL 1.4, MAY/2020
    
    'Fixed in v0.21: Replaced the @ symbol in encoded BAS output to a forum
    '                friendly character so code can be pasted in the QB64 forum
    '                without breaking it.
    
    'Added in v0.20: Now uses _DEFLATE/INFLATE to make smaler output
    
    '======
    'ABOUT :
    '======
    
    'BASFILE helps you include binary files INSIDE your QB64 compiled programs.
    'It does this by converting file to BAS code that you add to your program
    'that will recreate the file when you wish to use it.
    
    'BASFILE will ask you for a file to convert, and will output the BAS code.
    
    '=========================================================================
    
    DEFINT A-Z
    DECLARE FUNCTION E$ (B$)
    
    PRINT
    PRINT "============="
    PRINT "BASFILE v0.21"
    PRINT "============="
    PRINT
    
    INPUT "INPUT File --> ", IN$: IF IN$ = "" THEN END
    INPUT "OUTPUT File -> ", OUT$: IF OUT$ = "" THEN END
    OPEN IN$ FOR BINARY AS 1
    IF LOF(1) = 0 THEN
        CLOSE: KILL IN$
        PRINT UCASE$(IN$); " not found!": END
    END IF
    
    'Grab whole file as a string
    INDATA$ = (INPUT$(LOF(1), 1))
    
    'Compress it
    INDATA$ = _DEFLATE$(INDATA$)
    
    OPEN OUT$ FOR OUTPUT AS 2
    PRINT: PRINT "Encoding file...";
    
    Q$ = CHR$(34) 'quotation mark
    PRINT #2, "A$ = "; Q$; Q$
    PRINT #2, "A$ = A$ + "; Q$;
    
    BC& = 1
    
    DO
        a$ = MID$(INDATA$, BC&, 3)
        BC& = BC& + 3: LL& = LL& + 4
        IF LL& = 60 THEN
            LL& = 0
            PRINT #2, E$(a$);: PRINT #2, Q$
            PRINT #2, "A$ = A$ + "; Q$;
        ELSE
            PRINT #2, E$(a$);
        END IF
        IF LEN(INDATA$) - BC& < 3 THEN
            a$ = MID$(INDATA$, LEN(INDATA$) - BC&, 1): B$ = E$(a$)
            SELECT CASE LEN(B$)
                CASE 0: a$ = Q$
                CASE 1: a$ = "%%%" + B$ + Q$
                CASE 2: a$ = "%%" + B$ + Q$
                CASE 3: a$ = "%" + B$ + Q$
            END SELECT: PRINT #2, a$;: EXIT DO
        END IF
    LOOP: PRINT #2, ""
    
    PRINT #2, "btemp$="; Q$; Q$
    PRINT #2, "FOR i&=1TO LEN(A$) STEP 4:B$=MID$(A$,i&,4)"
    PRINT #2, "IF INSTR(1,B$,"; Q$; "%"; Q$; ") THEN"
    PRINT #2, "FOR C%=1 TO LEN(B$):F$=MID$(B$,C%,1)"
    PRINT #2, "IF F$<>"; Q$; "%"; Q$; "THEN C$=C$+F$"
    PRINT #2, "NEXT:B$=C$:END IF:FOR j=1 TO LEN(B$)"
    PRINT #2, "IF MID$(B$,j,1)="; Q$; "#"; Q$; " THEN"
    PRINT #2, "MID$(B$,j)="; Q$; "@"; Q$; ":END IF:NEXT"
    PRINT #2, "FOR t%=LEN(B$) TO 1 STEP-1"
    PRINT #2, "B&=B&*64+ASC(MID$(B$,t%))-48"
    PRINT #2, "NEXT:X$="; Q$; Q$; ":FOR t%=1 TO LEN(B$)-1"
    PRINT #2, "X$=X$+CHR$(B& AND 255):B&=B&\256"
    PRINT #2, "NEXT:btemp$=btemp$+X$:NEXT"
    PRINT #2, "BASFILE$=_INFLATE$(btemp$):btemp$="; Q$; Q$
    PRINT #2, "'==================================="
    PRINT #2, "'EXAMPLE: SAVE BASFILE$ TO DISK"
    PRINT #2, "'==================================="
    PRINT #2, "'OPEN "; Q$; IN$; Q$; " FOR OUTPUT AS #1"
    PRINT #2, "'PRINT #1, BASFILE$;"
    PRINT #2, "'CLOSE #1"
    
    PRINT "Done!"
    PRINT UCASE$(OUT$); " saved."
    END
    
    FUNCTION E$ (B$)
    
        FOR T% = LEN(B$) TO 1 STEP -1
            B& = B& * 256 + ASC(MID$(B$, T%))
        NEXT
    
        a$ = ""
        FOR T% = 1 TO LEN(B$) + 1
            g$ = CHR$(48 + (B& AND 63)): B& = B& \ 64
            'If @ is here, replace it with # to fix the
            'problem posting code with @ in the QB64 forum.
            'It wil be restored during the decoding process.
            IF g$ = "@" THEN g$ = "#"
            a$ = a$ + g$
        NEXT: E$ = a$
    
    END FUNCTION
    

Here is an example of using some BASFILE output.  The code below decodes/loads an image to screen without extracting it to disk first to use, so the image data stays in the EXE.   The companion program BASIMAGE makes this kind of image loader code automatically.  

Code: (Select All)
SCREEN _NEWIMAGE(150, 150, 32)
DIM m AS _MEM: m = _MEMIMAGE(0)

'decode screen memory...

A$ = ""
A$ = A$ + "haIkMf2NDld4479BTHAR49FT8AR59BTaR4ITHA69B\AR49FT8o;OOc\I[iZ]"
A$ = A$ + "fJV\Kb]g7QBDll`Mk]O<c_=m<MgC??i9?iomToaeKNe;6dkNm;gKje_l53ji"
A$ = A$ + "?kY32GSR>f?_AQ[R>o4jWOe;NnPn`KOEEGmU?nPdWNg[7TbG<SM\OnS2G5MJ"
A$ = A$ + ";fN4dWo`K7dg_lCEmkOnS1mgonW1mOogOW[bWOSnc_oEEolkOK#Gmi?<X?N3"
A$ = A$ + "KmAR_:j5?oI3:leS75^:J;hYgoVGEeGodk64HYol[OF5HWKnWkDP_H6kGohZ"
A$ = A$ + "1Qc=\;bf6En:<fiW2G55^:jDG:?1FZXOle??8UUF:?II\aOoOoc_7TbG5QaL"
A$ = A$ + "Qk]<Gac?5^:J;iY_lag>8`B<?Qil]FfI9LUbG51OL1njE_likdX_d2OMJZ`E"
A$ = A$ + "AkKFRSe7h9e_D3nVJ\?_>^KSM#`L<SPaVScc?onG[2O6kC[K?f[[27;la5kW"
A$ = A$ + "O<VNU_2S5^:LeS;5^:J[h98h[8`Cojj_?8f7EEF1\39`GEfiZ_FeeGMiDm]M"
A$ = A$ + "273c_gZ[9=mLbcA5lU6Cl<V[`EQ[>_5JWOk=fk:RmYM?N2ZjKYKVKFA8nc5Q"
A$ = A$ + "nGH7Uo^;_YooBR1`e_8fVFAhg`c7D_?HV]5OEDRGMhZ`EWGRKWAOY;?GVaC8"
A$ = A$ + "^MSONAJ>\`nm6OfG_hM3RIF8HORoM#?KD_l6>X8<6mRV=fNVa67C?la6cc]h"
A$ = A$ + "[`HQ[2GMJZ`EQ[f2NR7;36WCUULSQAle4O<>N#So;^6<?YS13mc5m\Wnd1YW"
A$ = A$ + "?V?`eogojj1YnjRiO>^C]h[<V[`EQ[>=d<oWOCk:Tj3M^O1nV2Og?nfG64WW"
A$ = A$ + "ijeRkkA\Qal1Mf1aa0KU5QhLScYJGM`fZV?Qlm]hOOf7HhI`Ucl9?K2G5^jh"
A$ = A$ + "bB\#Kig_lRZZS=gH71m5`?h`N6\CETN^In0<Sj[:fWDhnPmg>l56j_Oi=S[_"
A$ = A$ + "8fn=4HFff\6OB>VU]h;Ua::lEhZ`EQ[2GMn9dF`]?khYkN>O^lc4n<2mUleC"
A$ = A$ + "W?YKm`kRSc5_o=32SCRi:dWc7OAlj0Jfk:S\HAmh:T??8nehJeJ<G<Om_<S5"
A$ = A$ + "^:LeF`CJ>^`cib5cfMcIjjI2mcPWPo_inJhG8L=HK\P7EOFETnI>kW87J`iS"
A$ = A$ + "c56=gmH>H9i>_bG3<fhcB;njOAKSQ[2G]5\4N^EFbaCjjLQma3KS4L5\mX\T"
A$ = A$ + "CC\1>bEmlOEUE^H^HKS5aa7\>VnaH7bi^gJFoRLN8Rf0H?EGSR>M\IP`EQ[>"
A$ = A$ + "eUkiC[UIL>7h6CN[e_`TeXgHO8h9]ONX_F6S^S?LSK72OWc>84HFf>84jkal"
A$ = A$ + "0:BmknBG3fk\=>U_Li3aSA6;LEhZ`EQ[>eE;FJPW6I0`B<kX[;MW?eA^`acW"
A$ = A$ + "Ci9dob7SZNLE?inMcHFRWZafNliV_7`l8achB6WE?nZGNflHXNS4^:LeF`CH"
A$ = A$ + "n>8OGhi7QJb9J;MebCGNSDS1hHO1O>QDKOLkLG^JT1P?iMl4^6;Q[Le:IU_^"
A$ = A$ + "]]HL]C?^nLL]5;R_TH:b<Vc^hiFn16^:LeFHc3nXAiY9ai3lTY>9\4^bEW3F"
A$ = A$ + "ToZ46da7:Wan[bI73BIGnjZSOW_7#K2NGKBmTHUeCYFnhZgJb0mGWRSY?LEh"
A$ = A$ + "Z`EQ[>ei:mN[8d?3oYhb5_FS=H:?MKlEIN4S5AI9N<;:;=9fbM63TjC[NcO\"
A$ = A$ + "gHfLLU^61Mbi_=d6h6WejlaedHEk6c5g7N\i[`EQ[fBNR]71NZngb5oBibQ]"
A$ = A$ + "NaF6f7:2]ghJ=afRT_:]\m=83?EI2:WkZJ<?0A>ein^F7KAeLF^^n\9oG1>J"
A$ = A$ + "lnfmNdmM>Rggi:N\ZCBQ[2G]_I9njZ\d4NZgnG4hYaSIBMlAfo6hJ^X>nIGn"
A$ = A$ + "0[n3b=^oNZGl9M_SDS;`hm_kLf:nV\Z[9JcWe;WQLe8>]]_f>gImEco]QFle"
A$ = A$ + "F`HQ[2G5^:LeY>Ge=?GThbDD[W9FefgajPQ;_?aHAnf5__:egBL<Fdj;<?o6"
A$ = A$ + "84cEgcYN<\dS5i>?[Fe]8^f5ilETV;>lcKMm3=n>k\jL:9gkAcGSUkb?N`E^"
A$ = A$ + "HRY]UKA>c7^:LenT[FDN^dI=c0^Bok^3o]gAKF8Gdic=F?=mZQImh3Emnm;E"
A$ = A$ + "hLQHeRed<;UWjMOjh_NGOgk8J^bSf=NM;b[?jR0WFDM^ZVJl<jOMi<o3U_2G"
A$ = A$ + "5^JOaE>KN^mK=gH<[n5Iln5gohifI?J=laBUN>i[SngdMe#1^OAkOP]:]oRU"
A$ = A$ + "^6Win2\G;ee6;E?907kn>XedF`2WKlnl4KZSSY1nHcEG8FS?^2G5^:LEhZCM"
A$ = A$ + "^BmG1kK:`BL]\Gm_2cL:kdKl3K1?]TaKDG?ldmmUMdRbWV6iMZCLoTbN;U;f"
A$ = A$ + "G2l5?WDMNTL<YdhnPfk`EQ[fJ^Bo>gJ67\4?O^Z_`7o^]d?omH8nc0?36bEo"
A$ = A$ + ">D>aa>;9GJJ^FlGH>h`nM3l5N?NY_gMOH^NWKnm_FcY_8<WAdVjNO8LEhZm5"
A$ = A$ + "GiRcG]nKHFW8mRU5>g7:fAI8N<hcbMV5`9flaSnKnZLiNG;ekgg;G3IOim#H"
A$ = A$ + "Xe:^]4LU;_;1OQkGT_iQ[2G]5L5[IkaJDLj#LTZaYO<FN51kOJ];o#9ln0og"
A$ = A$ + "^eh[i\CYmmL^B<GO[SL7g]oO^=DGC4hHV>WnYO6Gk6ZcmI1nD#I`kb76jnTa"
A$ = A$ + "4kPMF_6hk2G5^:LEhZ73L5n>GlSgUWJcGG<J]ll#aCX=#gKC;Z6?e>[iUiSW"
A$ = A$ + "Jgn<WVWi^mWImM]YiaglJNJ[O_K\ZJKKAZ?0GBKdBm5_:NLgmbQNlMQ[2GM\"
A$ = A$ + "h:=7PMi2fTmWm>LeQ`Wj`W?CZ97`NghlIQm#VS`WiZIJEoeIFgamTV_dmbWH"
A$ = A$ + "ggYfOI^BcEXmEkWkLaLeBFK?Q[2GMdh:3?=[FVALUFGcfJkOJkB]n:#agCcM"
A$ = A$ + "fNiZPVORlJ:4f<kaB^eoG;oW[[cA]n<dc?Q?di5Y<Tc69>6^oM9[Aa`EQ[2G"
A$ = A$ + "5^ja4GiF?kjlMji[W3ELW1chR1B]NM<^fELgWJ^L?Y^K8Ogdl2b_WYhl5Vco"
A$ = A$ + "E:_dcWHlkdH\O^L<J=aVFm36kg:TOn^eMHhZ`EWbLeTh;:n_RkODO]`c[jHa"
A$ = A$ + "EEkHbjNVm]M_lMA[G#<GEk[7KC\<K7OhgK=AgjH;2nTcaCJnB^F^27SjcZkZ"
A$ = A$ + "fR\Vi36^:LeF`Efego\J:`e4S9akR\7\4O`g[]0?g8GHh_[VSoM\3eJ?RHX^"
A$ = A$ + "[;SKfi;NLnhnN=NI>OY[nbW_7de_WSSLmUXMfa5]lYnB]ARkKG=Y^Wm?=?I`"
A$ = A$ + "cHhZ`EQ[2GMFcE^JNSD?LhH]f;f3#^lYo^h\RdmiI>?61OhReRFCodl#aYNn"
A$ = A$ + "XRONefKgHALeEYMjfk=MM1DD_n#LlH<#LnhSfTNnXB5cj[I^OCb_mafE7?5^"
A$ = A$ + ":LeQP[LkoA]ZgWgZYcAdaE86_^ehL;OnbL5H87G];GFVc1jl\hi3ZnCJbk=R"
A$ = A$ + "mNGMD[glSj=^1MnT]ZAKZ`m9j3ifGegF;InPLKQF7YL?CjJ`Q_^JmI9LEhZ]"
A$ = A$ + "V[dhT=YOB6?gD6KjHFmiX;FSogVgLleMFM7Pl7SjS:G=J7laBkkGSL_CY]g?"
A$ = A$ + "d[Q[?\WM#W=mFc?R[36`VIUU`nkQ97SM[i6eV7cCJ=R;LEhZ`EQ[>Gh:GM^d"
A$ = A$ + "Ug8^aPd<VdVLXYeh]haLi670n>7GQ?cM_iJO^?<PkmX7:WLO_Gj5coFcgV7?"
A$ = A$ + "j^im>Mo#a=gfNciSceXFke9Q[2G]5LUKn2hHhjW3H0e^HAmm5oDkP>>3a6fE"
A$ = A$ + "kRef4ng1KZcVW5I_N]miZdWaebE?Dan#4m_hnPW?W>gJ]nicmIfJknXFB]8J"
A$ = A$ + "]k9CQ[2G]5LE;nR]=jZ[J;9_UW_VOKWK9ljhCGke>OZkRYeJhZMn7RlaT\VT"
A$ = A$ + "h_K9lenJ<mlH[e[kTj_>JO`j#gl^F_mR2llZ\Tc7jgglf<LEhZ]P[j=VNL^i"
A$ = A$ + "ln_7OY?O^eOh<nRnkkhi\G\kLnZ^5kh4nmm^WLiAL_mPVm6GeiM5G<?Vi3o>"
A$ = A$ + "ahU[a6]\iamik[L;?LEhZ`EQ[>Gh:FjiV]g>S_<kcK]6gUO\GcmG_6[Hf_cF"
A$ = A$ + "O4QaUHlodlh4d^fLhZKO:[a_7POWNmg7Le\L\dd>?kM63GQkaNcic=NZm9?5"
A$ = A$ + "^:LeQH=kaomAEfi:fH?HdaJcmeUFcbV^7^S?[W]]NB]WblA[lJVWg:no;a_I"
A$ = A$ + "[ef8>FgNHUe6GSlbcmNTK>O]\iMXZYeQ[2GMXi;gHjKUSPCHZ>[=aFl5;GoU"
A$ = A$ + "NMjaE>NF]oi_fccoiFcKH]foL\o\WU5<_1ff^^G5ibIhS1;5^:LEhZ`EWSL5"
A$ = A$ + ";\OWQk9No?ASoiBjWW6[VYmQ^aldMlEBk=ccJmnHbn1P\>jMiW^SedL#I]lD"
A$ = A$ + "_a7^4OaYS;SK_>GhY`EQ[>Ff61OYeW\Uj?YInRg\FOLf5JIcPIf9eA=EcZK8"
A$ = A$ + "6OZ9[=A>gPEOc_di3ZnVbaEmnmjk<KIlS3G5^jLV[F2OY[eQQj4_`0^adk6o"
A$ = A$ + ">Jk\eKnk`OBFK>6OCk\a<kgKhIM?oL]LeJ^n\mmSELn2G5^:LEhZ`ENYkOV^"
A$ = A$ + "J2L=_?=aZFWGhTaF9kGjCleCSHOd[?eaL^iXRk=GokB?ogeeME_?lWMijna>"
A$ = A$ + "naQ[2GmH#hI2i9X[NV_K>DccG5Gnf]c?Fc]AfZVN`i;NCONamGVh>3]6F]7["
A$ = A$ + "dcFWC`V;?FR7;ci;LEhZC9Yl5cH:OaLQOMl<e7l^nNml`fHenEKOXh?9f>M_"
A$ = A$ + "JjC?VYga\6NR7;aiToc3G5^jLAQ[2GM8h[R#=Nc=GaFl5W7l^hYXnfb]^FGc"
A$ = A$ + "HPNXbaE^acY7?kK<LOgRUnGVW2G5^j#cH8OKhi:Rl\YbBlndjEGfD]b1`NiP"
A$ = A$ + "gF:;Ge8Glh_S_Oem0?lnHAQW2G5^jh`GHoK\8=^Rm6K^M<m;PgLn=CG[#^nl"
A$ = A$ + "U`A>KMch9bWJm6K^^GMn_R_Y2G5^jDF^lP0R[OTml_`lH8fnH\O7nML=K#T;"
A$ = A$ + "W3jUGN]h:nkDNRO7CiYSModiV2G5^:LEhZcAeR_:2kS9XVnibmmk[de?XkHL"
A$ = A$ + "caD[YOjoWi:<f=foJ:?aech`CQ[2GMN8=_0IYlEA]Z?JmZY8>oPYeHTNaNTU"
A$ = A$ + "enWTWemRcWF?k2?5^:LeiWL[93dGlUbn\kXjUcO]I]i<SCJN?g]F2ITbCLlm"
A$ = A$ + "^?e5mX`EQ[>=EhZX35SifS>em4]:G<FgT:JF^g#O76OV;6AJ^gkZG#]H97?M"
A$ = A$ + "OgG#R2G5^jlCX_PgobJ5_JgJ<dE[CGRZn=gXMn_JJ>^`a?f]6o>f]UAQ[R>\"
A$ = A$ + "l5gGQmi^eFG8j>fkE`C`N<k_=MN77kf]X`EAQ[2GmhCJOG]NWbkYQ=ZEcJ^_"
A$ = A$ + "dDB>NjFc<J>NF4n\SMKDDhZXC;eR_6V[hH=4M;T;?GJ]Wa7MnY`EA72nb]6Q"
A$ = A$ + "gWZ5?M\OnS2G5MnX`E7FmoAY%%L2"
btemp$ = ""
FOR i& = 1 TO LEN(A$) STEP 4: B$ = MID$(A$, i&, 4)
    IF INSTR(1, B$, "%") THEN
        FOR C% = 1 TO LEN(B$): F$ = MID$(B$, C%, 1)
            IF F$ <> "%" THEN C$ = C$ + F$
        NEXT: B$ = C$: END IF: FOR j = 1 TO LEN(B$)
        IF MID$(B$, j, 1) = "#" THEN
    MID$(B$, j) = "@": END IF: NEXT
    FOR t% = LEN(B$) TO 1 STEP -1
        B& = B& * 64 + ASC(MID$(B$, t%)) - 48
        NEXT: X$ = "": FOR t% = 1 TO LEN(B$) - 1
        X$ = X$ + CHR$(B& AND 255): B& = B& \ 256
NEXT: btemp$ = btemp$ + X$: NEXT
BASFILE$ = _INFLATE$(btemp$,m.SIZE): btemp$ = ""

'Load to screen memory
_MEMPUT m, m.OFFSET, BASFILE$
_MEMFREE m

SLEEP

Print this item

  QB64lite 2.2
Posted by: Keybone - 04-26-2022, 01:42 PM - Forum: Programs - No Replies

After a few long and busy days work, QB64lite is more or less complete.
This is a linux specific build, and might not work properly on windows or mac.

EDIT: Updated to 2.2.1 (added bare compiler for setup program)

[Image: Screenshot-2022-04-26-15-48-24.png]

Try it out, you know you want to...
Once you go QB64lite, you never go back.



Attached Files
.7z   QB64lite.7z (Size: 5.48 MB / Downloads: 83)
Print this item

  Monopoly Game Board - Based on the Parker Brothers Classic Game.
Posted by: Pete - 04-26-2022, 03:08 AM - Forum: TheBOB - No Replies

Monopoly.bas by Bob Seguin

[Image: Screenshot-634.png]
[Image: Screenshot-635.png]
Description: Monopoly Game Board and display area for two players.


Code: (Select All)
_TITLE "Monopoly Board by Bob Seguin"

TYPE CharTYPE
    Char AS INTEGER
    Colr AS STRING * 2
END TYPE
DIM SHARED Board(1 TO 3000) AS CharTYPE
DIM SHARED BackCOLOR%
DIM SHARED Doubles%
BackCOLOR% = 7

CONST FALSE = 0: CONST TRUE = NOT FALSE

WIDTH 80, 50
CLS

SetBOARD
Opening
PlayAREA
LOCATE 5, 54: COLOR 4, 7: PRINT CHR$(21)
InJAIL = FALSE

RANDOMIZE TIMER

DO
    k$ = UCASE$(INKEY$)
    SELECT CASE k$
        CASE "D"
            LOCATE 5, 54: COLOR 4, 7: PRINT CHR$(21)
            LOCATE 45, 6: COLOR 8, 7: PRINT CHR$(186)
            InJAIL = FALSE
            LOCATE 22, 66: COLOR 1
            PRINT STRING$(8, 219)
            Doubles% = FALSE
            DiceTOTAL% = RollDICE%(14, 14)
            COLOR 15, 1: LOCATE 28, 64
            PRINT "You rolled"; DiceTOTAL%
            IF Doubles% = TRUE THEN COLOR 13, 1: LOCATE 22, 66: PRINT "DOUBLES!"
        CASE "J"
            'GO TO JAIL routine (set game piece value to suit sentenced player)
            IF InJAIL = FALSE THEN
                GamePIECE$ = CHR$(21) 'for example
                GotoJAIL GamePIECE$
                InJAIL = TRUE
            END IF
        CASE CHR$(27)
            SYSTEM
    END SELECT
LOOP

TitleDATA:
DATA "ÛÛÿÛÛ ÛÛÛ ÛÿÿÛ ÛÛÛ ÛÛÛ ÛÛÛ ÛÿÿÛ Û"
DATA "Û Û Û Û Û ÛÛ Û Û Û Û Û Û ÛÿÛ ÿÛ Û"
DATA "Û Û Û Û Û ÛÛ Û Û Û Û Û Û Û ÛÿÿÛ Û"
DATA "Û Û Û Û Û Û ÛÛ Û Û ÛÛÛ Û Û ÛÿÿÿÛ"
DATA "Û Û Û Û Û ÛÿÛÛ Û Û ÛÿÿÿÛ Û ÛÿÿÿÛ"
DATA "Û Û Û ÛÛÛ Û ÿÛ ÛÛÛ ÛÿÿÿÛÛÛ ÛÛÛ Û"

SUB GotoJAIL (GamePIECE$)
    Row = 5: Col = 54 'go to jail square

    LOCATE 5, 54: COLOR 7, 7: PRINT CHR$(219)

    DO
        IF OldCHAR <> 0 THEN
            Fore% = VAL("&H" + MID$(OldCOLR$, 2, 1))
            Back% = VAL("&H" + MID$(OldCOLR$, 1, 1))
            COLOR Fore%, Back%
            LOCATE OldROW, OldCOL: PRINT CHR$(OldCHAR)
        END IF
        IF Col MOD 6 THEN Row = Row + 1
        Col = Col - 1

        OldCHAR = SCREEN(Row, Col)
        OldCOLR$ = HEX$(SCREEN(Row, Col, 1))
        OldROW = Row: OldCOL = Col

        LOCATE Row, Col: COLOR 4, 7: PRINT GamePIECE$
        WAIT &H3DA, 8
        WAIT &H3DA, 8, 8
    LOOP UNTIL Col = 6 'player in jail

END SUB

SUB Opening

    COLOR 1, 7
    LOCATE 19, 32: PRINT "W E L C O M Eÿÿ T O"
    LOCATE 30, 30: PRINT "PRESS ANY KEY TO BEGIN..."

    a$ = "ÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿÿ*ÿ"
    COLOR 14, 1
    DO
        k$ = INKEY$
        IF LEN(k$) THEN EXIT DO
        FOR a = 1 TO 3
            LOCATE 1, a
            PRINT a$;
            LOCATE 50, 4 - a
            PRINT a$;
            FOR y = 50 - a TO 4 - a STEP -3
                LOCATE y, 1: PRINT "*";
                LOCATE y + 1, 1: PRINT " ";
                LOCATE 50 - y, 80: PRINT " ";
                LOCATE 51 - y, 80: PRINT "*";
            NEXT y
            FOR Reps = 1 TO 5
                WAIT &H3DA, 8
                WAIT &H3DA, 8, 8
            NEXT Reps
        NEXT a
        LOCATE 2, 1: PRINT " ": LOCATE 49, 80: PRINT " ";
        LOCATE 1, 79: PRINT " ": LOCATE 50, 2: PRINT " ";
    LOOP

END SUB

SUB PlayAREA

    COLOR , 1
    CLS
    FOR Row = 2 TO 48
        FOR Col = 2 TO 59
            Count = Count + 1
            LOCATE Row, Col
            Colr$ = Board(Count).Colr
            Fore% = VAL("&H" + MID$(Colr$, 2, 1))
            Back% = VAL("&H" + MID$(Colr$, 1, 1))
            COLOR Fore%, Back%
            PRINT CHR$(Board(Count).Char);
        NEXT Col
    NEXT Row

    COLOR 7, 1
    FOR Row = 2 TO 48
        LOCATE Row, 1: PRINT CHR$(179);
        LOCATE Row, 80: PRINT CHR$(179);
    NEXT Row
    LOCATE 1, 2: PRINT STRING$(78, 196);
    LOCATE 49, 2: PRINT STRING$(78, 196);

    LOCATE 1, 1: PRINT CHR$(218);
    LOCATE 1, 80: PRINT CHR$(191);
    LOCATE 49, 1: PRINT CHR$(192);
    LOCATE 49, 80: PRINT CHR$(217);

    COLOR 5
    FOR Row = 3 TO 19
        LOCATE Row, 60: PRINT CHR$(186)
        LOCATE Row, 79: PRINT CHR$(186)
    NEXT Row
    LOCATE 2, 61: PRINT STRING$(18, 205)
    LOCATE 20, 61: PRINT STRING$(18, 205)

    LOCATE 2, 60: PRINT CHR$(201)
    LOCATE 2, 79: PRINT CHR$(187)
    LOCATE 20, 60: PRINT CHR$(200)
    LOCATE 20, 79: PRINT CHR$(188)

    LOCATE 17, 61: PRINT CHR$(179);
    LOCATE 17, 78: PRINT CHR$(179);
    LOCATE 16, 62: PRINT STRING$(16, 196);
    LOCATE 18, 62: PRINT STRING$(16, 196);
    LOCATE 16, 61: PRINT CHR$(218);
    LOCATE 16, 78: PRINT CHR$(191);
    LOCATE 18, 61: PRINT CHR$(192);
    LOCATE 18, 78: PRINT CHR$(217);

    COLOR 7
    FOR Row = 22 TO 28
        LOCATE Row, 60: PRINT CHR$(179)
        LOCATE Row, 79: PRINT CHR$(179)
    NEXT Row
    LOCATE 21, 61: PRINT STRING$(18, 196)
    LOCATE 29, 61: PRINT STRING$(18, 196)

    LOCATE 21, 60: PRINT CHR$(218)
    LOCATE 21, 79: PRINT CHR$(191)
    LOCATE 29, 60: PRINT CHR$(192)
    LOCATE 29, 79: PRINT CHR$(217)

    COLOR 5
    FOR Row = 31 TO 47
        LOCATE Row, 60: PRINT CHR$(186)
        LOCATE Row, 79: PRINT CHR$(186)
    NEXT Row
    LOCATE 30, 61: PRINT STRING$(18, 205)
    LOCATE 48, 61: PRINT STRING$(18, 205)

    LOCATE 30, 60: PRINT CHR$(201)
    LOCATE 30, 79: PRINT CHR$(187)
    LOCATE 48, 60: PRINT CHR$(200)
    LOCATE 48, 79: PRINT CHR$(188)

    LOCATE 33, 61: PRINT CHR$(179);
    LOCATE 33, 78: PRINT CHR$(179);
    LOCATE 32, 62: PRINT STRING$(16, 196);
    LOCATE 34, 62: PRINT STRING$(16, 196);
    LOCATE 32, 61: PRINT CHR$(218);
    LOCATE 32, 78: PRINT CHR$(191);
    LOCATE 34, 61: PRINT CHR$(192);
    LOCATE 34, 78: PRINT CHR$(217);

    COLOR 15, 1
    LOCATE 19, 65: PRINT "-PLAYER 1-"
    LOCATE 31, 65: PRINT "-PLAYER 2-"
    COLOR 10, 1
    LOCATE 17, 65: PRINT "$1,500.00"
    LOCATE 33, 65: PRINT "$1,500.00"

    COLOR 13, 7
    LOCATE 10, 38: PRINT "PRESS [D]"
    LOCATE 11, 38: PRINT "TO ROLL DICE"
    LOCATE 12, 38: PRINT "(RESETS JAIL)"
    LOCATE 14, 38: PRINT "PRESS [J]"
    LOCATE 15, 38: PRINT "TO GO TO JAIL"
    LOCATE 17, 38: PRINT "PRESS [ESC]"
    LOCATE 18, 38: PRINT "TO EXIT"




END SUB

FUNCTION RollDICE% (RRow%, CCol%)

    FOR ROLL = 1 TO 24
        Row = RRow% + FIX(RND * 2) - 1
        Col = CCol% + FIX(RND * 2) - 1
        Number1 = FIX(RND * 6) + 1
        Number = Number1
        GOSUB ShowDIE
        GOSUB Sides
        Row = RRow% + FIX(RND * 2) - 1
        Col = CCol% + 7 + FIX(RND * 2) - 1
        Number2 = FIX(RND * 6) + 1
        Number = Number2
        GOSUB ShowDIE
        GOSUB Sides
        PLAY "MBT160L64O6b"
        FOR Slow = 1 TO 6
            WAIT &H3DA, 8
            WAIT &H3DA, 8, 8
        NEXT Slow
    NEXT ROLL
    RollDICE% = Number1 + Number2
    IF Number1 = Number2 THEN Doubles% = TRUE

    EXIT FUNCTION

    ShowDIE:
    COLOR BackCOLOR%
    FOR x = Col - 2 TO Col + 4
        FOR y = Row - 1 TO Row + 4
            LOCATE y, x
            PRINT CHR$(219)
        NEXT y
    NEXT x
    COLOR 15, 4
    SELECT CASE Number
        CASE 1
            LOCATE Row, Col: GOSUB NoDOTS
            LOCATE Row + 1, Col: GOSUB OneDOT
            LOCATE Row + 2, Col: GOSUB NoDOTS
            LOCATE
        CASE 2
            LOCATE Row, Col: GOSUB Dot
            FOR Reps = 1 TO 2: GOSUB Blank: NEXT Reps
            LOCATE Row + 1, Col: GOSUB NoDOTS
            LOCATE Row + 2, Col
            FOR Reps = 1 TO 2: GOSUB Blank: NEXT Reps
            GOSUB Dot
        CASE 3
            LOCATE Row, Col: GOSUB Dot
            FOR Reps = 1 TO 2: GOSUB Blank: NEXT Reps
            LOCATE Row + 1, Col: GOSUB OneDOT
            LOCATE Row + 2, Col
            FOR Reps = 1 TO 2: GOSUB Blank: NEXT Reps
            GOSUB Dot
        CASE 4
            LOCATE Row, Col: GOSUB TwoDOTS
            LOCATE Row + 1, Col: GOSUB NoDOTS
            LOCATE Row + 2, Col: GOSUB TwoDOTS
        CASE 5
            LOCATE Row, Col: GOSUB TwoDOTS
            LOCATE Row + 1, Col: GOSUB OneDOT
            LOCATE Row + 2, Col: GOSUB TwoDOTS
        CASE 6
            LOCATE Row, Col: GOSUB TwoDOTS
            LOCATE Row + 1, Col: GOSUB TwoDOTS
            LOCATE Row + 2, Col: GOSUB TwoDOTS
    END SELECT
    RETURN

    OneDOT:
    GOSUB Blank
    GOSUB Dot
    GOSUB Blank
    RETURN

    TwoDOTS:
    GOSUB Dot
    GOSUB Blank
    GOSUB Dot
    RETURN

    NoDOTS:
    FOR Reps = 1 TO 3: GOSUB Blank: NEXT Reps
    RETURN

    Blank:
    PRINT CHR$(32);
    RETURN

    Dot:
    PRINT CHR$(254);
    RETURN

    Sides:
    COLOR 4, BackCOLOR%
    LOCATE Row, Col - 1: PRINT CHR$(222)
    LOCATE Row + 1, Col - 1: PRINT CHR$(222)
    LOCATE Row + 2, Col - 1: PRINT CHR$(222)
    LOCATE Row, Col + 3: PRINT CHR$(221)
    LOCATE Row + 1, Col + 3: PRINT CHR$(221)
    LOCATE Row + 2, Col + 3: PRINT CHR$(221)
    RETURN

END FUNCTION

SUB SetBOARD

    PALETTE 4, 36
    PALETTE 5, 29

    OUT &H3C8, 1
    OUT &H3C9, 0
    OUT &H3C9, 0
    OUT &H3C9, 32

    OUT &H3C8, 7
    OUT &H3C9, 50
    OUT &H3C9, 63
    OUT &H3C9, 50

    OUT &H3C8, 20
    OUT &H3C9, 63
    OUT &H3C9, 48
    OUT &H3C9, 10

    OUT &H3C8, 56
    OUT &H3C9, 35
    OUT &H3C9, 35
    OUT &H3C9, 35

    OUT &H3C8, 59
    OUT &H3C9, 45
    OUT &H3C9, 60
    OUT &H3C9, 45

    COLOR , 1
    CLS
    COLOR 7
    FOR Row = 2 TO 47
        FOR Col = 12 TO 68
            LOCATE Row, Col
            PRINT CHR$(219)
        NEXT Col
    NEXT Row

    COLOR 8, 7
    FOR Col = 13 TO 68
        LOCATE 2, Col
        PRINT CHR$(205);
        LOCATE 48, Col
        PRINT CHR$(205);
    NEXT Col
    FOR Row = 3 TO 47
        LOCATE Row, 12
        PRINT CHR$(186);
        LOCATE Row, 69
        PRINT CHR$(186);
    NEXT Row

    LOCATE 2, 12: PRINT CHR$(201)
    LOCATE 48, 12: PRINT CHR$(200)
    LOCATE 2, 69: PRINT CHR$(187)
    LOCATE 48, 69: PRINT CHR$(188)

    FOR Row = 8 TO 42
        LOCATE Row, 18
        PRINT CHR$(186)
        LOCATE Row, 63
        PRINT CHR$(186)
    NEXT Row
    FOR Col = 19 TO 62
        LOCATE 7, Col
        PRINT CHR$(205)
        LOCATE 43, Col
        PRINT CHR$(205)
    NEXT Col

    LOCATE 7, 18: PRINT CHR$(201)
    LOCATE 43, 18: PRINT CHR$(200)
    LOCATE 7, 63: PRINT CHR$(187)
    LOCATE 43, 63: PRINT CHR$(188)

    RESTORE TitleDATA
    COLOR 4, 7
    FOR Row = 21 TO 28
        FOR Col = 24 TO 58
            LOCATE Row, Col
            PRINT CHR$(219)
        NEXT Col
    NEXT Row


    COLOR 15, 4
    FOR y = 22 TO 27
        READ a$
        LOCATE y, 25: PRINT a$
    NEXT y

    COLOR 8, 7
    FOR Row = 44 TO 47
        FOR Col = 18 TO 63 STEP 5
            LOCATE Row, Col: PRINT CHR$(179)
            LOCATE Row - 41, Col: PRINT CHR$(179)
        NEXT Col
    NEXT Row
    FOR Row = 7 TO 43 STEP 4
        FOR Col = 13 TO 17
            LOCATE Row, Col: PRINT CHR$(196)
            LOCATE Row, Col + 51: PRINT CHR$(196)
        NEXT Col
    NEXT Row

    COLOR 4, 7
    LOCATE 47, 64: PRINT CHR$(27); CHR$(27); CHR$(27); "GO"
    COLOR 3, 7
    FOR Col = 59 TO 62
        LOCATE 44, Col: PRINT CHR$(219)
        LOCATE 44, Col - 10: PRINT CHR$(219)
        LOCATE 45, Col: PRINT CHR$(223)
        LOCATE 45, Col - 10: PRINT CHR$(223)
    NEXT Col
    COLOR 5, 7
    FOR Col = 19 TO 22
        LOCATE 44, Col: PRINT CHR$(219)
        LOCATE 44, Col + 5: PRINT CHR$(219)
        LOCATE 44, Col + 15: PRINT CHR$(219)
        LOCATE 45, Col: PRINT CHR$(223)
        LOCATE 45, Col + 5: PRINT CHR$(223)
        LOCATE 45, Col + 15: PRINT CHR$(223)
    NEXT Col
    COLOR 4, 7
    FOR Col = 19 TO 22
        LOCATE 5, Col: PRINT CHR$(220)
        LOCATE 5, Col + 10: PRINT CHR$(220)
        LOCATE 5, Col + 15: PRINT CHR$(220)
        LOCATE 6, Col: PRINT CHR$(219)
        LOCATE 6, Col + 10: PRINT CHR$(219)
        LOCATE 6, Col + 15: PRINT CHR$(219)
    NEXT Col
    COLOR 14, 7
    FOR Col = 44 TO 47
        LOCATE 5, Col: PRINT CHR$(220)
        LOCATE 5, Col + 5: PRINT CHR$(220)
        LOCATE 5, Col + 15: PRINT CHR$(220)
        LOCATE 6, Col: PRINT CHR$(219)
        LOCATE 6, Col + 5: PRINT CHR$(219)
        LOCATE 6, Col + 15: PRINT CHR$(219)
    NEXT Col

    COLOR 6
    FOR Row = 8 TO 10
        LOCATE Row, 16: PRINT CHR$(219)
        LOCATE Row, 17: PRINT CHR$(219)
        LOCATE Row + 4, 16: PRINT CHR$(219)
        LOCATE Row + 4, 17: PRINT CHR$(219)
        LOCATE Row + 12, 16: PRINT CHR$(219)
        LOCATE Row + 12, 17: PRINT CHR$(219)
    NEXT Row
    COLOR 13
    FOR Row = 28 TO 30
        LOCATE Row, 16: PRINT CHR$(219)
        LOCATE Row, 17: PRINT CHR$(219)
        LOCATE Row + 4, 16: PRINT CHR$(219)
        LOCATE Row + 4, 17: PRINT CHR$(219)
        LOCATE Row + 12, 16: PRINT CHR$(219)
        LOCATE Row + 12, 17: PRINT CHR$(219)
    NEXT Row
    COLOR 2
    FOR Row = 8 TO 10
        LOCATE Row, 64: PRINT CHR$(219)
        LOCATE Row, 65: PRINT CHR$(219)
        LOCATE Row + 4, 64: PRINT CHR$(219)
        LOCATE Row + 4, 65: PRINT CHR$(219)
        LOCATE Row + 12, 64: PRINT CHR$(219)
        LOCATE Row + 12, 65: PRINT CHR$(219)
    NEXT Row

    COLOR 1
    FOR Row = 32 TO 34
        LOCATE Row, 64: PRINT CHR$(219)
        LOCATE Row, 65: PRINT CHR$(219)
        LOCATE Row + 8, 64: PRINT CHR$(219)
        LOCATE Row + 8, 65: PRINT CHR$(219)
    NEXT Row

    COLOR 8, 7
    FOR Col = 15 TO 17
        LOCATE 44, Col
        PRINT CHR$(210)
        LOCATE 45, Col
        PRINT CHR$(186)
        LOCATE 46, Col
        PRINT CHR$(208)
    NEXT Col
    COLOR 1: LOCATE 47, 13: PRINT "JAIL"
    LOCATE 3, 65: PRINT "GOTO"
    LOCATE 6, 65: PRINT "JAIL"
    LOCATE 3, 13: PRINT "FREE"
    LOCATE 6, 13: PRINT "PKNG"
    COLOR 9
    LOCATE 36, 16: PRINT "EL"
    LOCATE 37, 16: PRINT "CO"
    LOCATE 38, 16: PRINT "MP"
    COLOR 6
    LOCATE 44, 29: PRINT "????"
    LOCATE 6, 24: PRINT "????"
    LOCATE 28, 64: PRINT "??"
    LOCATE 29, 64: PRINT "??"
    LOCATE 30, 64: PRINT "??"
    COLOR 0
    LOCATE 6, 39: PRINT "B&OR"
    LOCATE 44, 39: PRINT "R-RR"
    LOCATE 24, 64: PRINT "SH"
    LOCATE 25, 64: PRINT "LN"
    LOCATE 26, 64: PRINT "RR"
    LOCATE 24, 16: PRINT "PE"
    LOCATE 25, 16: PRINT "NN"
    LOCATE 26, 16: PRINT "RR"
    COLOR 1
    LOCATE 16, 17: PRINT "C"
    LOCATE 17, 17: PRINT "O"
    LOCATE 18, 17: PRINT "M"
    LOCATE 16, 64: PRINT "C"
    LOCATE 17, 64: PRINT "O"
    LOCATE 18, 64: PRINT "M"
    LOCATE 44, 54: PRINT "COMM"
    COLOR 8
    LOCATE 6, 54: PRINT "WATR"
    LOCATE 44, 44: PRINT "ITAX"
    COLOR 13
    LOCATE 36, 64: PRINT "L"
    LOCATE 37, 64: PRINT "U"
    LOCATE 38, 64: PRINT "X"
    COLOR 6
    LOCATE 36, 65: PRINT "T"
    LOCATE 37, 65: PRINT "A"
    LOCATE 38, 65: PRINT "X"

    COLOR 8
    LOCATE 3, 19: PRINT "KTY"
    LOCATE 3, 29: PRINT "IND"
    LOCATE 3, 34: PRINT "ILL"
    LOCATE 3, 44: PRINT "ATL"
    LOCATE 3, 49: PRINT "VEN"
    LOCATE 3, 59: PRINT "MAR"

    LOCATE 47, 19: PRINT "CON"
    LOCATE 47, 24: PRINT "VER"
    LOCATE 47, 34: PRINT "ORI"
    LOCATE 47, 49: PRINT "BAL"
    LOCATE 47, 59: PRINT "MED"

    LOCATE 8, 68: PRINT "P"
    LOCATE 9, 68: PRINT "A"
    LOCATE 10, 68: PRINT "C"
    LOCATE 12, 68: PRINT "N"
    LOCATE 13, 68: PRINT "C"
    LOCATE 14, 68: PRINT "L"
    LOCATE 20, 68: PRINT "P"
    LOCATE 21, 68: PRINT "E"
    LOCATE 22, 68: PRINT "N"
    LOCATE 32, 68: PRINT "P"
    LOCATE 33, 68: PRINT "K"
    LOCATE 34, 68: PRINT "P"
    LOCATE 40, 68: PRINT "B"
    LOCATE 41, 68: PRINT "W"
    LOCATE 42, 68: PRINT "K"

    LOCATE 8, 13: PRINT "N"
    LOCATE 9, 13: PRINT "E"
    LOCATE 10, 13: PRINT "W"
    LOCATE 12, 13: PRINT "T"
    LOCATE 13, 13: PRINT "E"
    LOCATE 14, 13: PRINT "N"
    LOCATE 20, 13: PRINT "S"
    LOCATE 21, 13: PRINT "T"
    LOCATE 22, 13: PRINT "J"
    LOCATE 28, 13: PRINT "V"
    LOCATE 29, 13: PRINT "I"
    LOCATE 30, 13: PRINT "R"
    LOCATE 32, 13: PRINT "S"
    LOCATE 33, 13: PRINT "A"
    LOCATE 34, 13: PRINT "V"
    LOCATE 40, 13: PRINT "S"
    LOCATE 41, 13: PRINT "T"
    LOCATE 42, 13: PRINT "C"

    COLOR 3
    FOR Row = 9 TO 41
        LOCATE Row, 19: PRINT CHR$(179)
        LOCATE Row, 62: PRINT CHR$(179)
    NEXT Row
    FOR Col = 20 TO 61
        LOCATE 8, Col: PRINT CHR$(196)
        LOCATE 42, Col: PRINT CHR$(196)
    NEXT Col
    LOCATE 8, 19: PRINT CHR$(218)
    LOCATE 8, 62: PRINT CHR$(191)
    LOCATE 42, 19: PRINT CHR$(192)
    LOCATE 42, 62: PRINT CHR$(217)


    t1$ = "°°°°°°°°°°°ÛÛÛÛÛÛÛÛ°"
    t2$ = "°°°ÛÛÛÛ°°°°°Û°°°°Û°°"
    t3$ = "°°°°²²°°ÛÛ°°Û°°°°Û°°"
    t4$ = "°°°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°°"
    t5$ = "°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°°"
    t6$ = "°°²²²²²²²²²²ÛÛÛÛÛÛ°°"
    t7$ = "°ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°"
    t8$ = "Û±±±±ÛÛÛ±±ÛÛÛ±±ÛÛÛ°°"
    t9$ = "°Û°Û°²Û²°°²Û²°°²Û²°°"
    COLOR 11, 7
    LOCATE 32, 32: PRINT t1$
    LOCATE 33, 32: PRINT t2$
    LOCATE 34, 32: PRINT t3$
    LOCATE 35, 32: PRINT t4$
    LOCATE 36, 32: PRINT t5$
    LOCATE 37, 32: PRINT t6$
    LOCATE 38, 32: PRINT t7$
    LOCATE 39, 32: PRINT t8$
    LOCATE 40, 32: PRINT t9$

    m1$ = "°°°°°Û°°°°°"
    m2$ = "°°°ÛÛÛÛÛ°°°"
    m3$ = "°°°Û°Û°Û°°°"
    m4$ = "°°°Û°Û°°°°°"
    m5$ = "°°°ÛÛÛÛÛ°°°"
    m6$ = "°°°°°Û°Û°°°"
    m7$ = "°°°Û°Û°Û°°°"
    m8$ = "°°°ÛÛÛÛÛ°°°"
    m9$ = "°°°°°Û°°°°°"
    LOCATE 10, 36: PRINT m1$
    LOCATE 11, 36: PRINT m2$
    LOCATE 12, 36: PRINT m3$
    LOCATE 13, 36: PRINT m4$
    LOCATE 14, 36: PRINT m5$
    LOCATE 15, 36: PRINT m6$
    LOCATE 16, 36: PRINT m7$
    LOCATE 17, 36: PRINT m8$
    LOCATE 18, 36: PRINT m9$

    FOR Row = 2 TO 48
        FOR Col = 12 TO 69
            Count = Count + 1
            Board(Count).Char = SCREEN(Row, Col)
            Board(Count).Colr = HEX$(SCREEN(Row, Col, 1))
        NEXT Col
    NEXT Row

END SUB

Print this item

  G_Buttons_32
Posted by: James D Jarvis - 04-26-2022, 02:38 AM - Forum: Works in Progress - Replies (1)

Here's a buttons ui scheme and demo I've been fiddling with on and off the past few weeks. It's rude crude and a little ugly. I'm likely going to wrap this up into another UI scheme I'm working on but there's enough functionality here to share for someone else to get some use out of.   The main gimmick is the use a color image buffer used to track button locations graphically. You can pretty much draw and forget their specific x and y coordinates elsewhere in a program with this setup.

Code: (Select All)
'G_Buttons_32
' a graphical UI demo by James D. Jarvis
' this program uses 2 calls to new image to create a pair of screens at the same size
' s1&     is the display screen that the user will see
'bt& is the button tracking screen
'
'the button tracking screen duplicates the positions of each button on the display screen
'on the display screen buttons can be drawn in any manner the user wishes
'on the tracking screen each button is drawn as a solid shape in the same color reference as the button number
' there are currently 256 reference colors setup in the program and as such 255 buttons are allowed
'0 is ignored as it is used to cleanup inactive buttons on the button tracking screen
' more buttons can probably be created by altering the buttoncount variable   and using additional reference colors
' when  creating additional reference colors please keep in mind the colors values defined previously to avoid duplication
'
'the mouse positions on the display screen is identical to the position on the button tracking screen
'a call to pset(x,y) where x and y are the mouse position will return the coloron the button tracking screen
'   buttons can be resized, moved, erased,   as the programmer wishes. it is even possibl1 to pair a button with sprites
' or image click areas in a largere graphic should the technique be programmed to do so,  Just use a 1 color version of the sprite or click area
' current commands are
' drawallbuttons    which draws all buttons on the display scrren s1& and the button tracking screen bt%
'  draw button(b) which draw a specific button at its previouslt defiend coordinates
'  hidebutton(b) will chnage a button.state  to off and erase the button from both screens, a call to drawallbutton is alwasy made in this subroutine
'  turnonbutton(b) will changethe state of a button and redraw it on the both screens. this will bring an overlapping button to the top
' erasbutton(b) is normally called from inside hidebutton(b) but is its own subroutine this will remove a button
' from both screens but WILL NOT change the button state
'
'button type
'   name  is a String   that hold the name of the button  , this is not normally the displayed text
'   shape is an Integer    this is a flag 1- simple box button 2- round button 3- text button
'   text is a String     this is the button text that will be printed on the display screen inside the button is SHOWTEXT is in the container
'   x is an Integer     this is the topleft X coordinate of a button
'   y is an Integer     this is the topleft Y coordinate of a button
'   HH i an Integer      the button height in pixels
'   WW is an Integer    the button width in pixels
'   state is a String     the button state "OFF" and "ON" are the usualy values,
'   container is a String   this is a multi puroiose datat store for the button that will include the SHOWTEXT flag or any other fstrign data the porgrammer wishes
'   borderK is an long the outline color of the button  this will also be the text color of a button
'   fillK is an long        the fill color of the button this is ignored with textbuttons
'
'   currently the program supports very simple buttons
' bbox : is a simple box button
' bcircle is a simple circle
' btext alows a text string to be used as a button
' btbevel is a rectangle image that look lile a slightly fancier button
' not YET FULLY IMPLEMENTED    ....   there is aholder function that gives a big old ugly button
' BTFRAME is an expanded text box with a frame structure of defined charcters held in the button container
'...............#FCTRnnn#  frame value for top right corner of frame nnn is ascii value
'...............#FCTLnnn#  top left
'...............#FCBRnnn#  bottom right
'...............#FCBLnnn#  bottom left
'...............#FCHHnnn# horizontal rule
'...............#FCVVnnn#  verticalrule

_Title "G_Buttons_32"
Dim Shared ff&
Dim Shared S1&, bt&
Dim Shared block$, fsize
Dim Shared buttoncount
buttoncount = 255
Dim Shared Klr&(0 To 255), kl As _Unsigned Long
block$ = Chr$(219)
S1& = _NewImage(640, 480, 32)
Screen S1&
bt& = _NewImage(640, 480, 32)
rootpath$ = Environ$("SYSTEMROOT") 'normally "C:\WINDOWS"
fontname$ = "comic" 'oh yeah an ugly font for an ugly demo
fontfile$ = rootpath$ + "\Fonts\" + fontname$ + ".ttf" 'TTF file in Windows
fsize = 16
style$ = ""
ff& = _LoadFont(fontfile$, fsize, style$)
_Font ff&
_PrintMode _KeepBackground

'building the reference colors  this is to keep track of them probably don't have to actually do this
Klr&(0) = _RGB32(0, 0, 0)
Klr&(1) = _RGB32(0, 0, 168)
Klr&(2) = _RGB32(0, 168, 0)
Klr&(3) = _RGB32(0, 168, 168)
Klr&(4) = _RGB32(168, 0, 0)
Klr&(5) = _RGB32(168, 0, 168)
Klr&(6) = _RGB32(168, 84, 0)
Klr&(7) = _RGB32(168, 168, 168)
Klr&(8) = _RGB32(84, 84, 84)
Klr&(9) = _RGB32(84, 84, 252)
Klr&(10) = _RGB32(84, 252, 84)
Klr&(11) = _RGB32(84, 252, 252)
Klr&(12) = _RGB32(252, 84, 84)
Klr&(13) = _RGB32(252, 84, 252)
Klr&(14) = _RGB32(252, 252, 84)
Klr&(15) = _RGB32(252, 252, 252)

For c = 16 To 255
    Klr&(c) = _RGB32(1, 1, c)
Next c

Const bbox = 1 'plain box buttons
Const bcircle = 2 'a circle button
Const btext = 3 ' text as button
Const bframe = 4 'a framed text button.... still not implemented
Const btbevel = 5 'a rectangular button with a bevelish look
Const bzone = 6 'a whole panel zone as a button  used to note a click in a panel or the area of a panel, panel buttons drawn under all other buttons

Type buttontype
    name As String
    shape As Integer
    text As String
    x As Integer
    y As Integer
    HH As Integer
    WW As Integer
    state As String
    container As String
    borderK As Long 'border and type color of a button, this uses one of the reference colors for now, might ditch this idea entirely
    fillK As Long
End Type
Dim Shared btn(buttoncount) As buttontype

btn(1).name = "One"
btn(1).text = "BEEP"
btn(1).state = "ON"
btn(1).shape = bbox
btn(1).x = 50: btn(1).y = 50: btn(1).HH = 50: btn(1).WW = 50
btn(1).container = "SHOWTEXT SHOWFILL"
btn(1).borderK = Klr&(14)
btn(1).fillK = Klr&(1)

btn(2).name = "Two"
btn(2).state = "ON"
btn(2).text = "4?"
btn(2).shape = bbox
btn(2).x = 50: btn(2).y = 100: btn(2).HH = 50: btn(2).WW = 50
btn(2).container = "SHOWTEXT SHOWFILL"
btn(2).borderK = Klr&(14)
btn(2).fillK = Klr&(7)


btn(3).name = "Three"
btn(3).text = "Move4"
btn(3).state = "ON"
btn(3).shape = bcircle
btn(3).x = 200: btn(3).y = 200: btn(3).HH = 30: btn(3).WW = 0
btn(3).container = "SHOWFILL SHOWTEXT"
btn(3).borderK = Klr&(14)
btn(3).fillK = Klr&(4)


btn(4).name = "Four"
btn(4).text = "Button 4"
btn(4).state = "ON"
btn(4).shape = btext
btn(4).x = 200: btn(4).y = 200: btn(4).HH = 30: btn(4).WW = 0
btn(4).container = ""
btn(4).borderK = Klr&(14)
btn(4).fillK = Klr&(5)

btn(5).name = "Five"
btn(5).state = "ON"
btn(5).text = "+6"
btn(5).shape = bbox
btn(5).x = 50: btn(5).y = 151: btn(5).HH = 50: btn(5).WW = 50
btn(5).container = "SHOWTEXT"
btn(5).borderK = Klr&(14)
btn(5).fillK = Klr&(6)

btn(6).name = "Six"
btn(6).state = "OFF"
btn(6).text = "Beep2"
btn(6).shape = bbox
btn(6).x = 50: btn(6).y = 201: btn(6).HH = 50: btn(6).WW = 50
btn(6).container = ""
btn(6).borderK = Klr&(14)
btn(6).fillK = Klr&(7)

btn(7).name = "Seven"
btn(7).text = "Shrink8"
btn(7).state = "ON"
btn(7).shape = btbevel
btn(7).x = 250: btn(7).y = 50: btn(7).HH = 30: btn(7).WW = 120
btn(7).container = "SHOWFILL SHOWTEXT"
btn(7).borderK = Klr&(14)
btn(7).fillK = Klr&(5)

btn(8).name = "zone"
btn(8).text = ""
btn(8).state = "ON"
btn(8).shape = bzone
btn(8).x = 10: btn(8).y = 10: btn(8).HH = 50: btn(8).WW = 120
btn(8).container = ""
btn(8).borderK = Klr&(0)
btn(8).fillK = Klr&(0)


bbx = 400
by = 1
For z = 9 To buttoncount
    If z = 97 Then
        bbx = 450
        by = 1
    End If
    If z = 187 Then
        bbx = 500
        by = 1
    End If


    btn(z).name = "Button" + Str$(z)
    btn(z).state = "ON"
    btn(z).shape = bbox
    btn(z).x = bbx: btn(z).y = by * 5: btn(z).HH = 4: btn(z).WW = 20
    btn(z).container = "SHOWFILL"
    btn(z).borderK = Klr&(z)
    btn(z).fillK = Klr&(Int(z / 2))
    by = by + 1
Next z

btn(8).name = "Seven"
btn(8).text = "Kill 7"
btn(8).state = "ON"
btn(8).shape = btbevel
btn(8).x = 250: btn(8).y = 85: btn(8).HH = 30: btn(8).WW = 120
btn(8).container = "SHOWFILL SHOWTEXT"
btn(8).borderK = Klr&(14)
btn(8).fillK = Klr&(5)


_PrintString (10, 360), "Simple graphic buttons demo"
_PrintString (10, 375), "Press Q to quit at any time"
_PrintString (10, 390), "for no good reason at all you cna scribble"
_PrintString (10, 405), " on the screen  by holding down the mouse button"
_PrintString (10, 420), "when you do quit the program exits to"
_PrintString (10, 435), " a view of the button buffer"


drawallbuttons



kl = 14
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
mainloop:
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Do
    _Limit 1000
    Line (10, 50)-(15, 55), Klr&(kl), BF
    ask$ = InKey$
    If ask$ <> "" Then
        Select Case ask$
            Case Chr$(27)
                GoTo exitmain

            Case "<", Chr$(44)
                kl = kl - 1
                If kl < 0 Then kl = 255

            Case ">", Chr$(46)
                kl = kl + 1
                If kl > 255 Then kl = 0

        End Select

        ask$ = ""
    End If
    Mouser mx, my, mb
    If mb Then
        PSet (mx, my), Klr&(kl)
        Locate 2, 2
        _PrintMode _FillBackground
        Print "                                                      "
        _PrintMode _KeepBackground
        Do While mb 'wait for button release
            Mouser mx, my, mb
            PSet (mx, my), Klr&(kl)
            _Source bt&
            bk& = Point(mx, my)

            _Dest S1&

        Loop
        ' button handling code

        For kc = 0 To buttoncount
            If bk& = Klr&(kc) Then
                bk& = kc
            Else
                kb& = -1
            End If
        Next kc
        If bk& > 0 And bk& < buttoncount + 1 Then
            If btn(bk&).state <> "OFF" Then
                Select Case bk&
                    Case 1
                        Locate 2, 2
                        _PrintMode _FillBackground
                        Print "Click  on BUTTON ONE          "
                        _PrintMode _KeepBackground
                        Beep
                        bk& = -1
                    Case 2
                        Locate 2, 2
                        _PrintMode _FillBackground
                        Print "click on Button TWO           "
                        _PrintMode _KeepBackground
                        turnonbutton 4
                        remove_container 4, "_LOCKED"
                        bk& = -1
                    Case 3
                        Locate 2, 2
                        _PrintMode _FillBackground
                        Print "click on Button Three           "
                        _PrintMode _KeepBackground
                        move_button 4, 4, 4
                        bk& = -1
                    Case 4
                        Locate 2, 2
                        _PrintMode _FillBackground
                        Print "click on Button Four          "
                        _PrintMode _KeepBackground
                        bk& = -1
                        hidebutton 4
                    Case 5
                        Locate 2, 2
                        _PrintMode _FillBackground
                        Print "click on Button Five           "
                        _PrintMode _KeepBackground
                        bk& = -1
                        add_container 6, "SHOWTEXT"
                        turnonbutton (6)

                    Case 6

                        Locate 2, 2
                        _PrintMode _FillBackground
                        Print "Click  on BUTTON six          "
                        _PrintMode _KeepBackground
                        Beep
                        Beep
                        bk& = -1
                    Case 7
                        Locate 2, 2
                        _PrintMode _FillBackground
                        Print "Click  on BUTTON Seven          "

                        erasebutton (8)
                        btn(8).x = btn(8).x + 1
                        btn(8).WW = btn(8).WW - 2
                        _PrintMode _KeepBackground
                        drawbutton (8)


                    Case 8
                        Locate 2, 2
                        _PrintMode _FillBackground
                        Print "Click  on BUTTON Eight          "
                        _PrintMode _KeepBackground

                        bk& = -1
                        hidebutton 7


                    Case 9 TO 255
                        Locate 2, 2
                        _PrintMode _FillBackground
                        Print "Click  on BUTTON "; Str$(bk&)
                        _PrintMode _KeepBackground

                End Select
            End If

        End If
    End If

Loop Until InKey$ = Chr$(27)
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
exitmain:
Screen bt&


End
Sub Mouser (x, y, b)
    mi = _MouseInput
    b = _MouseButton(1)
    x = _MouseX
    y = _MouseY
End Sub
Sub drawallbuttons ()
    For b = 1 To buttoncount
        kl = b
        If btn(b).state = "OFF" Then
            '  erasebutton (b)
        End If
        If btn(b).state = "ON" Then
            drawbutton (b)

        End If

    Next b

End Sub

Sub drawbutton (b)
    If btn(b).state <> "OFF" Then
        Select Case btn(b).shape

            Case bbox
                Line (btn(b).x, btn(b).y)-(btn(b).x + btn(b).WW, btn(b).y + btn(b).HH), btn(b).borderK, B
                _Dest bt&
                Line (btn(b).x, btn(b).y)-(btn(b).x + btn(b).WW, btn(b).y + btn(b).HH), Klr&(b), BF
                _Dest S1&
                If InStr(btn(b).container, "SHOWFILL") > 0 Then Line (btn(b).x + 1, btn(b).y + 1)-(btn(b).x + btn(b).WW - 1, btn(b).y + btn(b).HH - 1), btn(b).fillK, BF


                If InStr(btn(b).container, "SHOWTEXT") > 0 Then
                    cx = (btn(b).x * 2 + btn(b).WW) / 2
                    cy = btn(b).y + btn(b).HH / 2 - (fsize / 2)
                    pw = _PrintWidth(btn(b).text)
                    pw = Int(pw / 2)
                    Color btn(b).borderK
                    _PrintString (cx - pw, cy), btn(b).text

                End If
            Case bcircle
                _Dest bt&
                Circle (btn(b).x, btn(b).y), btn(b).HH, Klr&(b)
                Circle (btn(b).x, btn(b).y), btn(b).HH - 1, Klr&(0)
                Paint (btn(b).x, btn(b).y), Klr&(0), Klr&(0)

                Paint (btn(b).x, btn(b).y), Klr&(b), Klr&(b)
                _Dest st&
                Circle (btn(b).x, btn(b).y), btn(b).HH, btn(b).borderK
                If InStr(btn(b).container, "SHOWFILL") > 0 Then
                    Circle (btn(b).x, btn(b).y), btn(b).HH - 1, Klr&(0)
                    Paint (btn(b).x, btn(b).y), Klr&(0), Klr&(0)
                    Paint (btn(b).x, btn(b).y), btn(b).fillK, btn(b).borderK
                End If
                pw = _PrintWidth(btn(b).text)
                pw = Int(pw / 2)

                If InStr(btn(b).container, "SHOWTEXT") > 0 Then _PrintString (btn(b).x - pw + 1, btn(b).y - (fsize / 2) + 1), btn(b).text
            Case btext
                _Dest bt&
                kl = b
                Color Klr&(kl)
                btxt$ = ""
                btxt$ = btn(b).text
                tl = Len(btxt$)
                btxt$ = ""
                For tt = 1 To tl: btxt$ = btxt$ + block$: Next tt
                _PrintString (btn(b).x, btn(b).y), btxt$
                _Dest S1&
                pw = _PrintWidth(btn(b).text)
                Color btn(b).borderK
                _PrintString (btn(b).x, btn(b).y), btn(b).text
            Case btframe
                _Dest bt&
                kl = b
                Color Klr&(kl)
                btxt$ = ""
                btxt$ = Chr$(186) + btn(b).text + Chr$(186)

                ' tl = _PrintWidth(btxt$)
                thl = _FontHeight: th = thl * 3
                cw = Len(btn(b).text)
                ft$ = Chr$(201): fb$ = Chr$(200)
                For r = 1 To cw
                    ft$ = ft$ + Chr$(205): fb$ = fb$ + Chr$(205)
                Next r
                ft$ = ft$ + Chr$(187): fb$ = fb$ + Chr$(188)
                tl = _PrintWidth(ft$) + 18

                Line (btn(b).x, btn(b).y)-(btn(b).x + tl, btn(b).y + th), Klr&(kl), BF
                _Dest S1&
                ' pw = _PrintWidth(btn(b).text)
                Color btn(b).borderK
                _PrintMode _FillBackground
                If InStr(btn(b).container, "SHOWFILL") > 0 Then Line (btn(b).x, btn(b).y)-(btn(b).x + tl, btn(b).y + th), btn(b).fillK, BF
                _PrintMode _KeepBackground
                _PrintString (btn(b).x, btn(b).y), ft$
                _PrintString (btn(b).x, btn(b).y + thl), btxt$
                _PrintString (btn(b).x, btn(b).y + thl + thl), fb$

            Case btbevel
                Line (btn(b).x, btn(b).y)-(btn(b).x + btn(b).WW, btn(b).y + btn(b).HH), btn(b).borderK, B
                _Dest bt&
                Line (btn(b).x, btn(b).y)-(btn(b).x + btn(b).WW, btn(b).y + btn(b).HH), Klr&(b), BF
                _Dest S1&
                If InStr(btn(b).container, "SHOWFILL") > 0 Then Line (btn(b).x + 1, btn(b).y + 1)-(btn(b).x + btn(b).WW - 1, btn(b).y + btn(b).HH - 1), btn(b).fillK, BF
                bevoff = Int(btn(b).HH / 5)
                inxl = btn(b).x + bevoff: inxr = btn(b).WW + btn(b).x - bevoff
                inytop = btn(b).y + bevoff: inybot = btn(b).y + btn(b).HH - bevoff
                Line (btn(b).x, btn(b).y)-(inxl, inytop), btn(b).borderK
                Line (btn(b).x, btn(b).y + btn(b).HH)-(inxl, inybot), btn(b).borderK
                Line (btn(b).x + btn(b).WW, btn(b).y)-(inxr, inytop), btn(b).borderK
                Line (btn(b).x + btn(b).WW, btn(b).y + btn(b).HH)-(inxr, inybot), btn(b).borderK
                Line (inxl, inytop)-(inxr, inybot), btn(b).borderK, B

                If InStr(btn(b).container, "SHOWTEXT") > 0 Then
                    cx = btn(b).x + (btn(b).WW) / 2
                    cy = btn(b).y + btn(b).HH / 2 - (fsize / 2) + bevoff / 3
                    pw = _PrintWidth(btn(b).text)
                    pw = Int(pw / 2)
                    Color btn(b).borderK
                    _PrintString (cx - pw, cy), btn(b).text

                End If


        End Select
    End If
    skiploop:
End Sub
Sub hidebutton (bb)

    _Dest bt&
    erasebutton (bb)
    btn(bb).state = "OFF"
    drawallbuttons

End Sub
Sub erasebutton (bb)
    b = bb
    If btn(b).state <> "OFF" Then
        _Dest bt&
        Select Case btn(b).shape
            Case bbox
                Line (btn(b).x, btn(b).y)-(btn(b).x + btn(b).WW, btn(b).y + btn(b).HH), Klr&(0), BF
                _Dest S1&
                Line (btn(b).x, btn(b).y)-(btn(b).x + btn(b).WW, btn(b).y + btn(b).HH), Klr&(0), BF

            Case bcircle

                Circle (btn(b).x, btn(b).y), btn(b).HH, Klr&(0)
                Paint (btn(b).x, btn(b).y), Klr&(0), Klr&(0)
            Case btext
                _Dest bt&
                pw = _PrintWidth(btn(b).text)
                Line (btn(b).x, btn(b).y)-(btn(b).x + pw, btn(b).y + 16), Klr&(0), BF
                _Dest S1&
                Line (btn(b).x, btn(b).y)-(btn(b).x + pw, btn(b).y + 16), Klr&(0), BF
            Case btbevel

                Line (btn(b).x, btn(b).y)-(btn(b).x + btn(b).WW, btn(b).y + btn(b).HH), Klr&(0), BF
                _Dest S1&
                Line (btn(b).x, btn(b).y)-(btn(b).x + btn(b).WW, btn(b).y + btn(b).HH), Klr&(0), BF
        End Select
        _Dest S1&
    End If
End Sub
Sub turnonbutton (bb)
    btn(bb).state = "ON"
    drawbutton bb
End Sub
Sub replace_container (b, a$, c$)
    'repalces string a$ in a buttons container with  c$
    'if a$ is not in contiar the string is simnply added to the container"
    pc = InStr(btn(b).container, a$)
    If pc > 0 Then
        wl = Len(a$)
        ec = Len(btn(b).container)
        fr$ = Mid$(btn(b).container, 1, pc - 1)
        bck$ = Mid$(btn(b).container, pc + wl, ec - wl)
        btn(b).container = fr$ + c$ + bck$
    End If


End Sub
Sub add_container (b, a$)
    'adds the string a$ to the container of a button
    btn(b).container = btn(b).container + a$
End Sub
Sub remove_container (b, a$)
    pc = InStr(btn(b).container, a$)
    If pc > 0 Then
        wl = Len(a$)
        ec = Len(btn(b).container)
        fr$ = Mid$(btn(b).container, 1, pc - 1)
        bck$ = Mid$(btn(b).container, pc + wl, ec - wl)
        btn(b).container = fr$ + bck$
    End If

End Sub

Sub move_button (bb, mvx, mvy)
    'lckc = InStr(btn(b).container, "_LOCKED")
    ' If lckc < 1 Then
    erasebutton (bb)
    btn(bb).x = btn(bb).x + mvx
    btn(bb).y = btn(bb).y + mvy
    drawallbuttons
    '  End If
End Sub

Print this item

  Mystify - Screen Saver Similar to Windows 98 Mystify from the 1990's.
Posted by: Pete - 04-26-2022, 02:15 AM - Forum: TheBOB - No Replies

Mystify.bas by Bob Seguin
[Image: Screenshot-633.png]
Description: Screen saver.

Code: (Select All)
_TITLE "Mystify.bas by Bob Seguin"
_FULLSCREEN

TYPE MovingPolyType
    x AS INTEGER
    y AS INTEGER
    IncX AS INTEGER
    IncY AS INTEGER
END TYPE

TYPE HoldingPolysType
    x AS INTEGER
    y AS INTEGER
END TYPE

DIM Co(1 TO 8) AS MovingPolyType
DIM Slots(1 TO 11, 1 TO 8) AS HoldingPolysType

DEFINT A-Z

'Establish random starting coordinates and x/y increments for polygons

SCREEN 12

RANDOMIZE TIMER

FOR n = 1 TO 8
    Co(n).x = INT(RND * 400) + 1
    Co(n).y = INT(RND * 240) + 1
    Rand = INT(RND * 2) + 1
    SELECT CASE Rand
        CASE 1
            Co(n).IncX = -INT(RND * 12) + 1
        CASE 2
            Co(n).IncX = INT(RND * 12) + 1
    END SELECT
    Rand = INT(RND * 2) + 1
    SELECT CASE Rand
        CASE 1
            Co(n).IncY = -INT(RND * 12) + 1
        CASE 2
            Co(n).IncY = INT(RND * 12) + 1
    END SELECT
NEXT n

FOR Reps = 1 TO 8
    Slots(1, Reps).x = Co(Reps).x + 119: Slots(1, Reps).y = Co(Reps).y + 119
NEXT Reps

OneSwitch = 1
ThreeSwitch = 1

One = 16
Three = 52

PALETTE 0, 655360
PALETTE 4, 63

GOSUB ColorSet

ON TIMER(1) GOSUB ColorSet

TIMER ON

DO

    FOR n = 1 TO 8
        GOSUB Direction
    NEXT n

    FOR Reps = 11 TO 2 STEP -1
        FOR Pots = 1 TO 8
            Slots(Reps, Pots).x = Slots(Reps - 1, Pots).x
            Slots(Reps, Pots).y = Slots(Reps - 1, Pots).y
        NEXT Pots
    NEXT Reps
    'For this small-area-of-activity version, new coordinates are assigned
    'and set to occur center screen (+ 119).
    FOR Pots = 1 TO 8
        Slots(1, Pots).x = Co(Pots).x + 119
        Slots(1, Pots).y = Co(Pots).y + 119
    NEXT Pots
    'Erase last polygon
    LINE (Slots(11, 1).x, Slots(11, 1).y)-(Slots(11, 2).x, Slots(11, 2).y), 0
    LINE (Slots(11, 2).x, Slots(11, 2).y)-(Slots(11, 3).x, Slots(11, 3).y), 0
    LINE (Slots(11, 3).x, Slots(11, 3).y)-(Slots(11, 4).x, Slots(11, 4).y), 0
    LINE (Slots(11, 4).x, Slots(11, 4).y)-(Slots(11, 1).x, Slots(11, 1).y), 0
    LINE (Slots(11, 5).x, Slots(11, 5).y)-(Slots(11, 6).x, Slots(11, 6).y), 0
    LINE (Slots(11, 6).x, Slots(11, 6).y)-(Slots(11, 7).x, Slots(11, 7).y), 0
    LINE (Slots(11, 7).x, Slots(11, 7).y)-(Slots(11, 8).x, Slots(11, 8).y), 0
    LINE (Slots(11, 8).x, Slots(11, 8).y)-(Slots(11, 5).x, Slots(11, 5).y), 0

    'Draw new first polygons and redraw existing polygons so that all the
    'erasures are overdrawn, all polygons take on the updated color, and
    'the second-color polygons overdraw the first-color polygons.

    WAIT &H3DA, 8
    WAIT &H3DA, 8, 8

    FOR Reps = 1 TO 10
        IF Slots(Reps, 1).x <> 0 THEN
            LINE (Slots(Reps, 1).x, Slots(Reps, 1).y)-(Slots(Reps, 2).x, Slots(Reps, 2).y), 1
            LINE (Slots(Reps, 2).x, Slots(Reps, 2).y)-(Slots(Reps, 3).x, Slots(Reps, 3).y), 1
            LINE (Slots(Reps, 3).x, Slots(Reps, 3).y)-(Slots(Reps, 4).x, Slots(Reps, 4).y), 1
            LINE (Slots(Reps, 4).x, Slots(Reps, 4).y)-(Slots(Reps, 1).x, Slots(Reps, 1).y), 1
        END IF
    NEXT Reps
    FOR Reps = 1 TO 10
        IF Slots(Reps, 1).x <> 0 THEN
            LINE (Slots(Reps, 5).x, Slots(Reps, 5).y)-(Slots(Reps, 6).x, Slots(Reps, 6).y), 2
            LINE (Slots(Reps, 6).x, Slots(Reps, 6).y)-(Slots(Reps, 7).x, Slots(Reps, 7).y), 2
            LINE (Slots(Reps, 7).x, Slots(Reps, 7).y)-(Slots(Reps, 8).x, Slots(Reps, 8).y), 2
            LINE (Slots(Reps, 8).x, Slots(Reps, 8).y)-(Slots(Reps, 5).x, Slots(Reps, 5).y), 2
        END IF
    NEXT Reps

LOOP UNTIL INKEY$ <> ""
TIMER OFF
CLS
SYSTEM

Direction:
SELECT CASE Co(n).x
    CASE IS <= 0
        Co(n).IncX = INT(RND * 12) + 1
    CASE IS >= 399
        Co(n).IncX = -INT(RND * 12) + 1
END SELECT
SELECT CASE Co(n).y
    CASE IS <= 0
        Co(n).IncY = INT(RND * 12) + 1
    CASE IS >= 239
        Co(n).IncY = -INT(RND * 12) + 1
END SELECT
Co(n).x = Co(n).x + Co(n).IncX
Co(n).y = Co(n).y + Co(n).IncY
RETURN

ColorSet:
SELECT CASE OneSwitch
    CASE 1
        One = One + 1
        IF One = 63 THEN OneSwitch = 0
    CASE 0
        One = One - 1
        IF One = 0 THEN OneSwitch = 1
END SELECT
SELECT CASE ThreeSwitch
    CASE 1
        Three = Three + 1
        IF Three = 63 THEN ThreeSwitch = 0
    CASE 0
        Three = Three - 1
        IF Three = 0 THEN ThreeSwitch = 1
END SELECT
PALETTE 1, 2490368 + ((63 - Three) * 256) + One
PALETTE 2, (Three * 65536) + ((63 - One) * 256) + 38
RETURN

Print this item

  Paging Demo - A SCREEN 9 Paging Demo with a Space Ship and a Surprise.
Posted by: Pete - 04-26-2022, 02:03 AM - Forum: TheBOB - No Replies

Paging.bas by Bob Seguin
[Image: Screenshot-631.png]
Description: A SCREEN 9 paging demo with a space ship flying through a meteor shower. The Surprise? See the second code example, Joker.bas, which uses this example, mixed with TheBOB's White Cake Recipe program.

Code: (Select All)
'******************************************************
'---------------- P A G I N G . B A S -----------------
'------------- SCREEN 9 PAGING EXAMPLE ----------------
'--------- Uses compressed DATA to draw Ship ----------
'******************************************************

_TITLE "Paging.bas Demo by Bob Seguin"

DEFINT A-Z
DIM ShipBOX(6000)

ShipDATA:
DATA 34,0,1,5,73,0,7,5,4,7,1,15,73,0,6,5,1,7,77,0,6,5,1,7,77,0,6,5,1,7
DATA 77,0,5,5,2,7,77,0,4,5,3,7,77,0,3,5,5,7,76,0,8,7,76,0,9,7,75,0,10,7
DATA 74,0,11,7,73,0,12,7,69,0,2,5,1,2,7,7,3,5,3,7,3,5,2,7,61,0,1,8,3,5
DATA 1,2,6,7,1,5,3,7,1,5,3,7,10,5,55,0,1,8,2,7,2,2,6,7,1,2,3,7,1,2
DATA 4,7,7,5,2,2,1,15,54,0,1,8,2,7,2,2,6,7,1,2,3,7,1,2,5,7,6,5,2,2
DATA 1,15,54,0,1,8,1,7,3,2,7,7,3,2,12,7,2,2,1,5,46,0,1,8,7,5,1,8,4,2
DATA 22,7,2,2,1,5,46,0,1,8,7,5,1,8,4,2,22,7,2,2,47,0,1,8,12,5,22,7,44,0
DATA 4,4,2,8,6,7,8,5,2,7,11,2,7,7,1,5,41,0,2,4,4,14,2,8,6,7,6,2,3,5
DATA 1,7,1,2,9,7,1,2,8,7,1,5,39,0,1,4,2,14,4,15,2,8,6,7,9,2,1,5,1,2
DATA 9,7,1,2,8,7,2,5,37,0,1,4,1,14,6,15,2,8,6,7,21,2,7,7,5,5,2,9,1,15
DATA 1,4,1,15,2,9,1,7,1,5,27,0,1,4,2,14,4,15,2,8,6,7,13,2,13,7,10,5,8,7
DATA 1,15,25,0,2,4,4,14,2,8,7,7,15,2,9,7,13,5,6,7,1,5,27,0,4,4,2,8,25,2
DATA 36,5,21,0,2,8,10,2,36,5,2,10,4,9,1,15,2,9,2,7,6,5,1,15,18,0,2,8,8,7
DATA 2,2,36,7,4,10,2,9,1,5,4,9,1,5,6,12,1,5,17,0,2,8,8,7,2,2,36,7,4,10
DATA 2,9,1,7,4,9,1,5,6,12,1,5,6,15,11,0,2,8,8,7,2,2,36,7,4,10,2,9,1,7
DATA 4,9,1,5,6,12,1,5,17,0,2,8,8,5,38,2,2,10,4,9,1,2,2,9,8,7,1,5,14,0
DATA 4,4,2,8,25,5,36,2,15,0,2,4,4,14,2,8,7,7,15,5,12,7,10,5,6,7,1,5,24,0
DATA 1,4,2,14,4,15,2,8,6,7,13,5,13,7,10,5,8,7,1,15,23,0,1,4,1,14,6,15,2,8
DATA 5,7,1,2,11,5,10,2,2,7,10,5,2,9,1,15,1,4,1,15,2,9,1,7,1,5,27,0,1,4
DATA 2,14,4,15,2,8,4,7,2,2,9,5,2,2,9,7,1,2,1,7,9,5,39,0,2,4,4,14,2,8
DATA 3,7,3,2,6,5,3,2,1,7,1,2,9,7,1,2,9,5,42,0,4,4,2,8,2,7,12,2,2,7
DATA 11,2,8,5,48,0,1,8,14,2,8,7,12,5,49,0,1,8,7,2,1,8,3,5,1,2,9,7,15,5
DATA 47,0,1,8,7,2,1,8,3,5,1,2,8,7,10,5,1,7,3,5,2,2,1,15,54,0,1,8,3,5
DATA 1,2,6,7,1,5,1,7,2,15,7,5,1,7,4,5,2,2,1,15,54,0,1,8,8,7,2,5,1,7
DATA 3,5,1,15,5,5,2,7,4,5,2,2,1,5,54,0,1,8,2,7,2,2,4,7,2,5,1,7,3,5
DATA 1,7,4,5,2,7,5,5,2,2,1,5,54,0,1,8,1,7,3,2,3,7,3,5,1,7,3,5,1,7
DATA 3,5,3,7,5,5,2,2,57,0,3,2,3,7,4,5,3,7,3,5,5,2,66,0,4,7,8,5,72,0
DATA 6,7,5,5,73,0,5,7,5,5,74,0,5,7,4,5,75,0,5,7,3,5,76,0,6,7,2,5,76,0
DATA 7,7,77,0,7,7,77,0,7,7,77,0,7,7,77,0,7,7,76,0,11,7,1,15,82,0,1,5,49,0
DATA 16,0,6,4,3,0,3,4,5,14,2,0,2,4,2,14,5,15,1,0,2,4,1,14,7,15,2,0,2,4
DATA 2,14,5,15,3,0,3,4,5,14,5,0,6,4,60,0,6,4,3,0,3,4,5,14,2,0,2,4,2,14
DATA 5,15,1,0,2,4,1,14,7,15,2,0,2,4,2,14,5,15,3,0,3,4,5,14,5,0,6,4,11,0

SCREEN 9

'Set all attributes to black to hide draw/GET process
FOR n = 1 TO 15
    PALETTE n, 0
NEXT n

'Ships differ in that the ship 2 rocket blasts are slightly larger
'Draw and GET ship 1 and mask
x = 0: y = 0
MaxWIDTH = 83
MaxDEPTH = 60
GOSUB DrawSHIP
GET (0, 0)-(MaxWIDTH, MaxDEPTH), ShipBOX()
GOSUB Mask
GET (0, 0)-(MaxWIDTH, MaxDEPTH), ShipBOX(1500)

'Redraw ship, add different rocket blasts,GET ship/mask
RESTORE ShipDATA
LINE (0, 0)-(83, 60), 0, BF
x = 0: y = 0
GOSUB DrawSHIP
'Draw different rocket blasts
x = 0: y = 20
MaxWIDTH = 10
MaxDEPTH = 40
GOSUB DrawSHIP
GET (0, 0)-(83, 60), ShipBOX(3000)
GOSUB Mask
GET (0, 0)-(83, 60), ShipBOX(4500)

TYPE RockTYPE 'establish data TYPE for meteors
    Mx AS INTEGER 'meteor x coordinate
    My AS INTEGER 'meteor y coordinate
    Mr AS INTEGER 'meteor radius (fixed)
    Ms AS INTEGER 'meteor speed (fixed)
END TYPE
DIM Rocks(1 TO 100) AS RockTYPE 'holds the location, size
'and speed of 100 meteors

FOR n = 1 TO 100 'loop to initialize meteor array

    Rocks(n).Mx = FIX(RND * 640) 'initial x coordinates
    Rocks(n).My = FIX(RND * 350) 'initial y coordinates
    Rocks(n).Mr = FIX(RND * 5) + 2 'permanent radius (2-6 pixels)

    SELECT CASE n 'speed variations create perspective
        CASE 1 TO 30: Rocks(n).Ms = 12 'background meteors
        CASE 31 TO 65: Rocks(n).Ms = 18 'midground meteors
        CASE 66 TO 100: Rocks(n).Ms = 24 'foreground meteors
    END SELECT

NEXT n
Rocks(50).Mr = 10 'meteor 50 specially sized (large)
Rocks(100).Mr = 16 'meteor 100 specially sized (larger)

ActivePAGE = 0: VisualPAGE = 1 'establish page variables for SWAP

SCREEN 9, , ActivePAGE, VisualPAGE 'page 0 active, page 1 visual

PALETTE
PALETTE 10, 0 'set palette values for attributes
PALETTE 12, 35 'which do not respond to OUT

'set palette values for attributes
'that respond to OUT
OUT &H3C8, 0
OUT &H3C9, 0
OUT &H3C9, 0 'background: midnight blue
OUT &H3C9, 12

OUT &H3C8, 1
OUT &H3C9, 16
OUT &H3C9, 8 'meteor: dark brown
OUT &H3C9, 2

OUT &H3C8, 2
OUT &H3C9, 32
OUT &H3C9, 32 'medium ship gray
OUT &H3C9, 32

OUT &H3C8, 3
OUT &H3C9, 22
OUT &H3C9, 12 'meteor highlight brown
OUT &H3C9, 5

OUT &H3C8, 4
OUT &H3C9, 63
OUT &H3C9, 0 'bright red
OUT &H3C9, 0

OUT &H3C8, 5
OUT &H3C9, 52
OUT &H3C9, 52 'ship light gray
OUT &H3C9, 52

'MAIN LOOP BEGINS -------------------------------

Count = 0

FOR x = 6 TO 546 STEP 2 'main loop wherein ship will
    'travel 540 pixels in steps
    'of two
    b$ = INKEY$: IF b$ = CHR$(32) THEN b$ = CHR$(27)
    CLS 'active screen cleared

    OUT &H3C8, 0 'background color reestablished
    OUT &H3C9, 0 'in case "space lightning" has
    OUT &H3C9, 0 'flashed
    OUT &H3C9, 12

    'The following loop draws/updates x/y's of first 80 meteors
    FOR n = 1 TO 80
        GOSUB DrawMETEORS 'see DrawMETEORS subroutine
    NEXT n

    'Variable (Swerve) which causes ship to drift left and right
    'is established and directional rockets are fired accordingly
    SELECT CASE Switch 'both Swerve and Switch = 0 initially
        CASE 0
            Swerve = Swerve + 1
            IF Swerve > 24 AND Swerve < 30 THEN 'directional rocket fired
                LINE (x + 14, 171 + Swerve)-(x + 18, 173 + Swerve), 4, B
                LINE (x + 10, 172 + Swerve)-(x + 18, 172 + Swerve), 14
                LINE (x + 17, 172 + Swerve)-(x + 18, 172 + Swerve), 15
            END IF
            IF Swerve = 30 THEN Switch = 1 'pass to CASE 1
        CASE 1
            Swerve = Swerve - 1
            IF Swerve > -30 AND Swerve < -26 THEN 'directional rocket fired
                LINE (x + 14, 143 + Swerve)-(x + 18, 145 + Swerve), 4, B
                LINE (x + 10, 144 + Swerve)-(x + 18, 144 + Swerve), 14
                LINE (x + 17, 144 + Swerve)-(x + 18, 144 + Swerve), 15
            END IF
            IF Swerve = -30 THEN Switch = 0 'pass to CASE 0
    END SELECT

    'Ship masks/sprites PUT, variable "Count" toggling two sprites with
    'differing degrees of rocket blast (to create sense of active rockets)
    Count = Count + 1
    IF Count MOD 2 THEN
        PUT (x, 128 + Swerve), ShipBOX(1500), AND 'mask
        PUT (x, 128 + Swerve), ShipBOX() 'sprite
    ELSE
        PUT (x, 128 + Swerve), ShipBOX(4500), AND 'mask
        PUT (x, 128 + Swerve), ShipBOX(3000) 'sprite
    END IF

    'Second meteor-drawing loop draws last 20 meteors so that they *may*
    'overdraw the ship (creating sense of its 'involvement' in meteor storm)
    FOR n = 81 TO 100
        GOSUB DrawMETEORS 'see DrawMETEORS subroutine
    NEXT n

    'PRINT section -------------------------------------
    COLOR 8: LOCATE 24, 32: PRINT "Press SPACE to end...";

    'Blurbs are printed (with gaps) based on the ship's x location
    COLOR 13
    SELECT CASE x
        CASE IS < 150
            LOCATE 21, 20: PRINT "The mission so far had been free of incident..."
        CASE 161 TO 300
            LOCATE 21, 20: PRINT "But on the seventeenth day, we encountered"
            LOCATE 22, 20: PRINT "a meteor storm..."
        CASE 311 TO 440
            LOCATE 21, 20: PRINT "With every moment, we came closer to almost"
            LOCATE 22, 20: PRINT "certain destruction..."
    END SELECT
    '-----------------------------------------------------

    'Border line
    LINE (0, 0)-(639, 349), 8, B

    '"Space lightning" flash (1 chance in 25)
    Flash = FIX(RND * 25)
    IF Flash = 0 THEN
        OUT &H3C8, 0
        OUT &H3C9, 63 'set background (briefly) to bright red
        OUT &H3C9, 0
        OUT &H3C9, 0
    END IF

    REM IF INP(96) = 57 THEN EXIT FOR 'check for spacebar being pressed to exit
    IF b$ = CHR$(27) THEN SYSTEM

    'PAGING SECTION --------------------------------
    SWAP ActivePAGE, VisualPAGE 'SWAP values of page variables...
    SCREEN 9, , ActivePAGE, VisualPAGE 'which toggles active/visual page
    '-----------------------------------------------

    _DELAY .05
    IF b$ = CHR$(27) THEN END
NEXT x 'main loop ends

RUN

'- SUBROUTINE SECTION BEGINS -------------------------

DrawMETEORS:

'If the meteor's x coordinate has moved off-screen to the left, it is as-
'signed a new random y coordinate, then reset to the right of the screen
IF Rocks(n).Mx < 0 THEN
    Rocks(n).My = FIX(RND * 350)
    Rocks(n).Mx = 642
END IF

'Meteors are drawn with lighter highlight circle offset +1/-1 pixel
CIRCLE (Rocks(n).Mx, Rocks(n).My), Rocks(n).Mr, 1
PAINT STEP(0, 0), 1
CIRCLE (Rocks(n).Mx + 1, Rocks(n).My - 1), Rocks(n).Mr - 2, 3
PAINT STEP(0, 0), 3

'Establish new location for each meteor by subtracting their
'individual speed (Ms) from their current x coordinate (Mx) ...
Rocks(n).Mx = Rocks(n).Mx - Rocks(n).Ms

RETURN

DrawSHIP:
DO
    READ Count, Colr
    FOR Reps = 1 TO Count
        PSET (x, y), Colr
        x = x + 1
        IF x > MaxWIDTH THEN
            x = 0
            y = y + 1
        END IF
    NEXT Reps
LOOP UNTIL y > MaxDEPTH
RETURN

Mask:
FOR xx = 0 TO 83
    FOR yy = 0 TO 60
        IF POINT(xx, yy) = 0 THEN PSET (xx, yy), 15 ELSE PSET (xx, yy), 0
    NEXT yy
NEXT xx
RETURN

... And the surprise, Joker.bas

Description: Whenever we had a graphics emergency at The QBasic Forum, we always put up the Bat Signal ^^0^^ to call on TheBOB (aka The Batman) for help. One of Bob's creations, a recipe for White cake, and his Page Flipping Screen 9 demo were combined in the following code, but something went amiss that day in Gotham City...

Code: (Select All)
DEFINT A-Y
TYPE RockTYPE 'establish data TYPE for meteors
    Mx AS INTEGER 'meteor x coordinate
    My AS INTEGER 'meteor y coordinate
    Mr AS INTEGER 'meteor radius (fixed)
    Ms AS INTEGER 'meteor speed (fixed)
END TYPE

SCREEN 12, 0, 0, 0
_FULLSCREEN

FOR n = 1 TO 9
    READ Attribute: OUT &H3C8, Attribute
    FOR Reps = 1 TO 3
        READ Intensity: OUT &H3C9, Intensity
    NEXT Reps
NEXT n

PRINT
PRINT
COLOR 15
PRINT SPACE$(4); "W H I T E"; SPACE$(3); "C A K E"; SPACE$(3); "R E C I P E"
LINE (16, 60)-(620, 60), 9
LINE (16, 62)-(620, 62), 9
LINE (418, 60)-(542, 62), 0, BF
PRINT
PRINT
COLOR 12
PRINT SPACE$(4); "Heat oven to 350 degrees"
PRINT SPACE$(4); "Grease and flour 2 circular pans (8-9 inches)"
PRINT
COLOR 15
PRINT SPACE$(4); "CAKE:";
COLOR 11
PRINT SPACE$(9); "Flour: 2-1/4 cups"
PRINT SPACE$(18); "Sugar: 1-2/3 cups"
PRINT SPACE$(13); "Shortening: 2/3 cup"
PRINT SPACE$(19); "Milk: 1-1/4 cups"
PRINT SPACE$(10); "Baking powder: 3-1/2 tsps"
PRINT SPACE$(19); "Salt: 1 tsp"
PRINT SPACE$(16); "Vanilla: 1 tsp"
PRINT SPACE$(13); "Egg whites: 5 (reserve yolks for icing)"
PRINT
COLOR 12
PRINT SPACE$(4);
PRINT "Combine all ingredients except the egg whites in a bowl. Beat for 1/2"
PRINT SPACE$(4);
PRINT "minute at low speed, scraping bowl constantly, then 2 minutes at high"
PRINT SPACE$(4);
PRINT "speed, scraping bowl occasionally. Beat in egg whites, 2 minutes at"
PRINT SPACE$(4);
PRINT "high speed. Pour into pans. Bake until a toothpick inserted comes out"
PRINT SPACE$(4);
PRINT "clean or cake springs back when touched lightly (30 - 35 minutes)."
PRINT
COLOR 15
PRINT SPACE$(4); "ICING:";
COLOR 11
PRINT SPACE$(3); "Shortening: 2/3 cup"
PRINT SPACE$(17); "Butter: 2/3 cup"
PRINT SPACE$(14); "Egg yolks: 5"
PRINT SPACE$(16); "Vanilla: 1-1/2 tsps"
PRINT SPACE$(12); "Icing sugar: 3/4 cup or to taste"

CIRCLE (480, 86), 74, 1, , , .4
PAINT STEP(0, 0), 1
CIRCLE (480, 80), 72, 15, , , .4
PAINT STEP(0, 0), 15
CIRCLE (480, 79), 67, 9, , , .4
PAINT STEP(0, 0), 9
CIRCLE (480, 80), 72, 14, , , .4
CIRCLE (480, 78), 48, 15, , , .4
CIRCLE (480, 40), 60, 7, -4.5, -3.5, .4
PSET (423, 46), 7: DRAW "F2"
PAINT STEP(0, -10), 7
CIRCLE (480, 80), 60, 7, -4.5, -3.5, .4
PSET (423, 86), 7: DRAW "F2"
PAINT STEP(0, -10), 7
LINE (540, 40)-STEP(0, 40), 7
LINE (420, 40)-STEP(0, 40), 7
PAINT (430, 60), 7
PAINT (530, 60), 7
LINE (420, 40)-STEP(0, 40), 7
LINE STEP(4, -33)-STEP(0, 40), 7
LINE STEP(43, -24)-STEP(0, 40), 7
PAINT STEP(8, -18), 7
CIRCLE (480, 40), 60, 15, -4.5, -3.5, .4
LINE (540, 40)-STEP(0, 40), 15
LINE (420, 40)-STEP(0, 40), 15
LINE (420, 40)-STEP(0, 40), 15
LINE STEP(4, -33)-STEP(0, 40), 15
LINE STEP(43, -24)-STEP(0, 40), 15
PSET (430, 52), 4
DRAW "M+47,-7 M-9,+14 M-38,+6 U12 BR12 P4,4 BL13 D12 LU13Ld13"
PSET (427, 70), 4
DRAW "M+40,-7 D19 M-40,+7 U19 BF8 P4,4"
DIM Box(1000)
GET (427, 53)-(467, 78), Box()
PUT (427, 55), Box(), PSET
PSET (481, 40), 15
DRAW "M-13,+21"
PAINT (470, 30), 13, 15
FOR Reps = 1 TO 1200
    X = FIX(RND * 60) + 420
    y = FIX(RND * 54) + 40
    IF POINT(X, y) = 4 THEN PSET (X, y), 15
NEXT Reps
PSET (427, 70), 2
DRAW "bM+40,-7 bD19 M-40,+7"
PSET (427, 70), 2
DRAW "bM+40,-7 bD20 M-30,+5"
CIRCLE (480, 80), 60, 2, 4.5, 6, .4
LINE (4, 4)-(635, 475), 9, B
FOR X = 524 TO 525
    FOR y = 30 TO 100
        IF POINT(X, y) = 7 THEN PSET (X, y), 13
    NEXT y
NEXT X
FOR X = 528 TO 540
    FOR y = 30 TO 100
        IF POINT(X, y) = 7 THEN PSET (X, y), 13
    NEXT y
NEXT X

CALL BSU
CALL SPACE
SYSTEM

PaletteDATA:
DATA 0,0,0,36,1,0,0,24,2,48,36,44,4,54,54,63,7,63,48,48,8
DATA 54,54,54,9,60,48,63,12,42,42,42,13,63,52,52,14,63,42,24

DEFSNG Z
SUB BSU

    LOCATE 27, 60: PRINT CHR$(24);
    LOCATE 28, 60: PRINT CHR$(219);: FIREPIN = 1
    _DELAY 1

    DO
        b$ = INKEY$
        _LIMIT 30
        LOCATE 28, 62
        PRINT "Press arrow up.";
        LOCATE 28, 62
        IF b$ = CHR$(0) + "H" THEN EXIT DO
        _DELAY .45
        PRINT "               ";
        IF b$ = CHR$(0) + "H" THEN EXIT DO
        _DELAY .45
        IF b$ = CHR$(27) THEN SYSTEM
    LOOP UNTIL b$ = CHR$(0) + "H"
    b$ = CHR$(13)
    LOCATE 28, 60: PRINT "                 ";

    FIREMISSILE:
    FOR I = 1 TO 25
        LOCATE 28 - I, 60: PRINT " ";
        LOCATE CSRLIN - 1, 60: PRINT CHR$(24);
        Z = TIMER
        DO
        LOOP UNTIL ABS(Z - TIMER) >= .02: 'DELAY LOOP
    NEXT
    FOR I = 1 TO 5
        SOUND 2000, 2: SOUND 500, 2

        WAIT &H3DA, 8
        WAIT &H3DA, 8, 8

        OUT &H3C8, 12
        IF I >= 3 THEN
            IF I / 2 <> I \ 2 THEN OUT &H3C8, 33 ELSE OUT &H3C8, 0
        ELSE
            OUT &H3C8, 0
            OUT &H3C9, 63 'set background (briefly) to bright red
            OUT &H3C9, 0
            OUT &H3C9, 0
        END IF
    NEXT I
    Z = TIMER
    DO
    LOOP UNTIL ABS(Z - TIMER) >= 1.5: 'DELAY LOOP

END SUB

SUB SPACE
    SCREEN 9

    'Set all attributes to black to hide draw/GET process
    FOR n = 1 TO 15
        PALETTE n, 0
    NEXT n

    'Ships differ in that the ship 2 rocket blasts are slightly larger
    'Draw and GET ship 1 and mask
    X = 0: Y = 0
    MaxWIDTH = 83
    MaxDEPTH = 60

    DIM Rocks(1 TO 100) AS RockTYPE 'holds the location, size
    'and speed of 100 meteors

    IF X < 326 THEN
        FOR n = 1 TO 100 'loop to initialize meteor array

            Rocks(n).Mx = FIX(RND * 640) 'initial x coordinates
            Rocks(n).My = FIX(RND * 350) 'initial y coordinates
            Rocks(n).Mr = FIX(RND * 5) + 2 'permanent radius (2-6 pixels)

            SELECT CASE n 'speed variations create perspective
                CASE 1 TO 30: Rocks(n).Ms = 12 'background meteors
                CASE 31 TO 65: Rocks(n).Ms = 18 'midground meteors
                CASE 66 TO 100: Rocks(n).Ms = 24 'foreground meteors
            END SELECT

        NEXT n
        Rocks(50).Mr = 10 'meteor 50 specially sized (large)
        Rocks(100).Mr = 16 'meteor 100 specially sized (larger)
    ELSE
        Z = TIMER: DO: IF ABS(Z - TIMER) > .1 THEN EXIT DO
        LOOP
    END IF

    ActivePAGE = 0: VisualPAGE = 1 'establish page variables for SWAP

    SCREEN 9, , ActivePAGE, VisualPAGE 'page 0 active, page 1 visual

    PALETTE
    PALETTE 10, 0 'set palette values for attributes
    PALETTE 12, 35 'which do not respond to OUT

    'set palette values for attributes
    'that respond to OUT
    OUT &H3C8, 0
    OUT &H3C9, 0
    OUT &H3C9, 0 'background: midnight blue
    OUT &H3C9, 12

    OUT &H3C8, 1
    OUT &H3C9, 16
    OUT &H3C9, 8 'meteor: dark brown
    OUT &H3C9, 2

    OUT &H3C8, 2
    OUT &H3C9, 32
    OUT &H3C9, 32 'medium ship gray
    OUT &H3C9, 32

    OUT &H3C8, 3
    OUT &H3C9, 22
    OUT &H3C9, 12 'meteor highlight brown
    OUT &H3C9, 5

    OUT &H3C8, 4
    OUT &H3C9, 63
    OUT &H3C9, 0 'bright red
    OUT &H3C9, 0

    OUT &H3C8, 5
    OUT &H3C9, 52
    OUT &H3C9, 52 'ship light gray
    OUT &H3C9, 52

    'MAIN LOOP BEGINS -------------------------------

    Count = 0

    FOR X = 6 TO 546 STEP 2 'main loop wherein ship will
        _DELAY .115 ' Reading speed
        'travel 540 pixels in steps
        'of two

        CLS 'active screen cleared

        OUT &H3C8, 0 'background color reestablished
        OUT &H3C9, 0 'in case "space lightning" has
        OUT &H3C9, 0 'flashed
        OUT &H3C9, 12

        'The following loop draws/updates x/y's of first 80 meteors
        IF X < 326 THEN
            FOR n = 1 TO 80
                GOSUB DrawMETEORS 'see DrawMETEORS subroutine
            NEXT n

            'Second meteor-drawing loop draws last 20 meteors so that they *may*
            'overdraw the ship (creating sense of its 'involvement' in meteor storm)
            FOR n = 81 TO 100
                GOSUB DrawMETEORS 'see DrawMETEORS subroutine
            NEXT n
        ELSE
            ''Z = TIMER: DO: IF ABS(Z - TIMER) > .1 THEN EXIT DO
            ''LOOP
        END IF

        Z = TIMER: DO: IF ABS(Z - TIMER) > .05 THEN EXIT DO
        LOOP

        'PRINT section -------------------------------------
        'Blurbs are printed (with gaps) based on the ship's x location
        COLOR 13: A1 = 30
        SELECT CASE X
            CASE 10 + A1 TO 100 + A1
                LOCATE 21, 19: PRINT "Kirk to Spock. What are those strange looking"
                LOCATE 22, 31: PRINT "blobs on the screen?"
            CASE 101 + A1 TO 170 + A1
                LOCATE 21, 21: PRINT "Sensors indicate they are the remains of"
                LOCATE 22, 23: PRINT "TheBob's White Cake Recipe, Captain."
            CASE 171 + A1 TO 240 + A1
                LOCATE 21, 15: PRINT "Kirk to Scottie. Beam those pieces of cake on board!"
            CASE 241 + A1 TO 317 + A1
                LOCATE 21, 19: PRINT "Aye Captain, I'll get right on it, as soon as"
                LOCATE 22, 28: PRINT "I finish my Dunkin Donuts."
            CASE 336 + A1 TO 435 + A1
                LOCATE 21, 15: PRINT "Kirk to Sick Bay. Bones, MEDICAL EMERGENCY! Report to"
                LOCATE 22, 13: PRINT "the Transporter Room and put TheBob's cake back together!"
            CASE IS > 440 + A1
                LOCATE 21, 19: PRINT "Dammit Jim. I'm a doctor, not Martha Stewart!"
        END SELECT
        '-----------------------------------------------------

        'Border line
        LINE (0, 0)-(639, 349), 8, B

        '"Space lightning" flash (1 chance in 25)
        'Flash = FIX(RND * 25)
        IF X = 326 THEN
            SOUND 1000, .5: SOUND 2000, .5: SOUND 3000, .5: SOUND 4000, .5: SOUND 5000, .5: SOUND 6000, .5
            SOUND 6000, .5: SOUND 7000, .5: SOUND 8000, .5: SOUND 4000, .5: SOUND 9000, .5
            OUT &H3C8, 0
            OUT &H3C9, 63 'set background (briefly) to bright red
            OUT &H3C9, 0
            OUT &H3C9, 0
        END IF

        'PAGING SECTION --------------------------------
        SWAP ActivePAGE, VisualPAGE 'SWAP values of page variables...
        SCREEN 9, , ActivePAGE, VisualPAGE 'which toggles active/visual page
        '-----------------------------------------------

        WAIT &H3DA, 8
        WAIT &H3DA, 8, 8

    NEXT X 'main loop ends

    SCREEN 9, 0, 0, 0
    LOCATE 21, 5: PRINT SPACE$(70);
    LOCATE 22, 5: PRINT SPACE$(70);
    _DELAY 1
    LEVEL1 = 10
    A1$ = " [Sometimes The Joker Wins!]"
    REDIM BAT$(3)
    BAT$(3) = "^^o^^"
    BAT$(2) = "--o--"
    BAT$(1) = "vvovv"
    LOCATE LEVEL1, 2
    _DELAY 1
    FOR I = 1 TO 12
        FOR J = 1 TO 3
            IF I = 1 AND J = 1 THEN LOCATE , 3 ELSE PRINT " ";
            PRINT BAT$(J);
            LOCATE , POS(1) - 5
            Z = TIMER
            DO: IF ABS(Z - TIMER) > .1 THEN EXIT DO
            LOOP
        NEXT J
    NEXT I
    _DELAY 1
    FOR I = 2 TO LEVEL1
        IF I = LEVEL1 - 1 THEN SOUND 3000, .7: SOUND 358, 1.5: SOUND 5000, 1
        IF I <> 2 THEN LOCATE I - 1, 27: PRINT SPACE$(28);
        LOCATE I, 27: PRINT A1$;
        Z = TIMER
        DO: IF ABS(Z - TIMER) > .1 THEN EXIT DO
        LOOP
    NEXT

    _DELAY 4
    SYSTEM

    '- SUBROUTINE SECTION BEGINS -------------------------

    DrawMETEORS:

    'If the meteor's x coordinate has moved off-screen to the left, it is as-
    'signed a new random y coordinate, then reset to the right of the screen
    IF Rocks(n).Mx < 0 THEN
        Rocks(n).My = FIX(RND * 350)
        Rocks(n).Mx = 642
    END IF

    'Meteors are drawn with lighter highlight circle offset +1/-1 pixel
    CIRCLE (Rocks(n).Mx, Rocks(n).My), Rocks(n).Mr, 1
    PAINT STEP(0, 0), 1
    CIRCLE (Rocks(n).Mx + 1, Rocks(n).My - 1), Rocks(n).Mr - 2, 3
    PAINT STEP(0, 0), 3

    'Establish new location for each meteor by subtracting their
    'individual speed (Ms) from their current x coordinate (Mx) ...
    Rocks(n).Mx = Rocks(n).Mx - Rocks(n).Ms

    RETURN

    Mask:
    FOR xx = 0 TO 83
        FOR yy = 0 TO 60
            IF POINT(xx, yy) = 0 THEN PSET (xx, yy), 15 ELSE PSET (xx, yy), 0
        NEXT yy
    NEXT xx
    RETURN

END SUB

Print this item

  Changing Avatar
Posted by: bplus - 04-26-2022, 01:12 AM - Forum: Programs - Replies (11)

I get an idea in my head and I got to play with it...

Code: (Select All)
Option _Explicit
_Title "Changing Avatar" 'b+ need to keep total bytes below 1MB
Const xmax = 300 ' screen width
Const ymax = 300 ' screen height
Screen _NewImage(xmax, ymax, 32)
_Delay .25 ' wait for screen to load
_ScreenMove _Middle ' center in screen
ReDim As Long i1, i2, j1, j2, x, y
ReDim As _Unsigned Long c1, c2
ReDim f
i1 = _LoadImage("phoenix100.png") ' Wikimedia commons Public Domain
'  https://commons.wikimedia.org/w/index.php?search=Phoenix+art+images&title=Special:MediaSearch&go=Go&type=image
i2 = _LoadImage("qb64.png")
j1 = _NewImage(xmax, ymax, 32)
j2 = _NewImage(xmax, ymax, 32)
_PutImage , i1, j1
_PutImage , i2, j2
_FreeImage i1
_FreeImage i2
_PutImage , j1, 0
restart:
_PutImage , j1, 0
For f = 0 To 1.01 Step .01
    Cls
    For y = 0 To ymax
        For x = 0 To xmax
            _Source j1
            c1 = Point(x, y)
            _Source j2
            c2 = Point(x, y)
            PSet (x, y), Ink~&(c1, c2, f)
        Next
    Next
    _Display
    _Limit 20
Next
_PutImage , j2, 0
For f = 1 To 0 Step -.01
    Cls
    For y = 0 To ymax
        For x = 0 To xmax
            _Source j1
            c1 = Point(x, y)
            _Source j2
            c2 = Point(x, y)
            PSet (x, y), Ink~&(c1, c2, f)
        Next
    Next
    _Display
    _Limit 20
Next
GoTo restart

Function Ink~& (c1 As _Unsigned Long, c2 As _Unsigned Long, fr##)
    Dim R1, G1, B1, A1, R2, G2, B2, A2
    cAnalysis c1, R1, G1, B1, A1
    cAnalysis c2, R2, G2, B2, A2
    Ink~& = _RGB32(R1 + (R2 - R1) * fr##, G1 + (G2 - G1) * fr##, B1 + (B2 - B1) * fr##, A1 + (A2 - A1) * fr##)
End Function

Sub cAnalysis (c As _Unsigned Long, outRed, outGrn, outBlu, outAlp)
    outRed = _Red32(c): outGrn = _Green32(c): outBlu = _Blue32(c): outAlp = _Alpha32(c)
End Sub

zip contains 2 images, the source and a Windows compiled exe



Attached Files Thumbnail(s)
   

.zip   QB64+Phoenix.zip (Size: 757.94 KB / Downloads: 61)
Print this item