1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
17:31SOLVED
SOLVEDFrom the moment I noticed that a JCR entry could not be read, I already suspected the lack of a zlib driver to be the "evil" here.
17:26INVESTIGATION
INVESTIGATIONIt goes wrong when the objects are being loaded.... Let's try to sort this out, shall we?
17:11BUG
BUGTeddyBear crashes when I try to load the level though.... The error indicates a callout to a null value... I'm afraid though that it won't be possible to pinpoint that null value without opening TeddyBear in VisualStudio
16:54CONFIRMED
CONFIRMEDThe converted map did however appear in the map list of TeddyBear, so at is at least right!
16:53TEDDYBEAR
TEDDYBEARI've set up a project, however I used the wizard, and as thus I need to set a few things properly in order, before I can actually get to work!
16:05STATUS
STATUSRebecca I should now set up a proper project file for TeddyBear so I can manually modify the map files. This is needed for serveral reasons. First of all, it is not yet set the enemy table will be the same as in the original version, and second the music needs to be relinked
16:02VISUALSTUDIO
VISUALSTUDIOSkeletons have been set up for the C# CLI tool for JCR6, however this project does not have priority yet!
10:36JCR6
JCR6Re-aliassing again (very irritating as for that I need to rebuild that entire JCR6 file .... again)
10:36CONFIRMED
CONFIRMEDI see what I wanted to see
10:32NOTE
NOTEI don't need to run the game for this to see if this is right... Just checking the data generated by my tools will do
10:32BUBBLE
BUBBLEMade a test building
10:30STATUS
STATUSAs the GO JCR CLI tools are too slow, I'll try to rebuild this later!
10:30FAILURE
FAILUREMusic aliassing failed
10:24FIXED
FIXEDOld "Defs" were still used.... That has been fixed
10:17STUPIDITY
STUPIDITYAnd I should have known too!
10:17BUG
BUGCrap.... That explains why stuff didn't go the way it should and why it takes so much time....
10:11RESULT
RESULTThings that pop up act very very odd....
10:11SITE
SITEAdded tag RESULT
10:11TEST
TESTTesting
9:31NOTE
NOTEThe idea that is going on with me is to rewrite the CLI tools for JCR6 to C#. The main reason is, Go is TOO SLOW... Particularly when packing large files this is becoming more and more of an issue. Even though Go compiles to machine language where C# uses a JIT compiler C# appears to outrank Go on nearly all fronts, which is just sad at best!
9:12MUSIC
MUSICApproved and aliased for quick access from maps
9:07MUSIC
MUSICChecking the sound quality of "Prisoner of War" by Widzy, as that will be the background music for the prison in which the game starts
0:03STATUS
STATUSCalling it a day!
0:02DONE
DONEThe texture extractor works, so that is one issue less to worry about
- = 20 Jul 2019 = -
23:55JUDGMENT
JUDGMENTSo far the results look good
23:55POWERSHELL
POWERSHELLI ran the bubble builder script to see what would happen
23:52CHECKED
CHECKEDWhat I see is what I wanted to see
23:50NOTE
NOTEIt does not yet extract itself... This way I can debug the name of the target... If files are actually being written and wrong, it can be quite hard to repair the damages caused.
23:50VISUALSTUDIO
VISUALSTUDIOMy tool can detect if the target texture exists and announce extracting prior to it actually being done.
23:39JUDGMENT
JUDGMENTAs far as I can see, all's well!
23:39STATUS
STATUSScyndi All the transfer tool can do now is configure itself, as far as I now can judge that works....
23:35NOTE
NOTESince some authors went for multiple license types I need to make sure that authors are sorted in the target as well
23:32NOTE
NOTENote to self.... Prefix all textures with "GFX/Textures/" when transferring!
23:20TECHNO
TECHNOThis will now be more work, but don't forget how many maps the original game actually has... If I need to do this all one by one MANUALLY, this would take an eternity, so that's where the computer is better than humans sometimes....
23:19VISUALSTUDIO
VISUALSTUDIOI've set up a little analyser to the 'defs' reader.... This is where all the textures are being determined, and since those are definitely important in the transfer, I'll make my transfer tool automatically extract them (if needed) into this new project dir....
22:44STUDY
STUDYSome ways I set up Teddybear
22:44SITE
SITEAdded tag STUDY
22:34DONE
DONEThe map names can be listed out for a more adequate overview of things.
20:10FIXED
FIXEDAnd some fixes to the project's xml code
20:10STUPIDITY
STUPIDITYI gotta take better care of what I type here
20:10VISUALSTUDIO
VISUALSTUDIOA project that will have to help me on this has been created
19:57STUPIDITY
STUPIDITYWhat doesn't help is that I neglected to tag the fist chapter maps properly back then, for which I now get the "bill"....
19:52DONE
DONEI've been taking a look on what the best appraoch can be on transferring maps from one game to the other... Of course the course of action will be to write some transfer tools that must also ensure to me that all stuff is properly taken over and that I can easily go for rebuilding, however that is easier said than done, and it will also be a kind of challenge to see what maps are suitable and what maps are not, and that ain't gonna be easy as the FrameWork the original game is written is has been taken out of use ages ago.
19:46STATUS
STATUSWell today I visted Madurodam... I too deserve some relaxation too, don't I?
- = 19 Jul 2019 = -
22:59FIXED
FIXEDAn auto fixer takes care of that now, though....
22:58CONFIRMED
CONFIRMEDAnd the files appear to be properly converted although with pictures there are some issues
22:56CONFIG
CONFIGScenLang has at least been configured to work with all this
22:56FAILURE
FAILUREMicrosoft's logic, don't try to udnerstand!
22:56VISUALSTUDIO
VISUALSTUDIOI've set the scenario editor to work in .NET 4.6 (for some reason my new Windows computer does not accept .NET 4.7 while THIS IS PRESENT AND INSTALLED).
17:19STATUS
STATUSFirst a break
17:10TODO
TODOStill I must configure my scenario editor...

I do know that loads of typos and grammar errors slipped past my notice in the original game, and I want them fixed in the new game (I do not have the illusion I'll catch them all, though).

17:08STATUS
STATUSThis will allow me to quickly transfer scenario from the original game into the current game
17:05CONFIRMED
CONFIRMEDAnd Now I see what I wanted to see! Good!
17:04FIXED
FIXEDAlright that should be fixed now!
17:04STUPIDITY
STUPIDITYBrendor I am a dump moron, I see
17:03COCKROACH
COCKROACHALMOST.....
[scenario]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]

System.Collections.Generic.SortedDictionary`2+ValueCollection[System.String,System.Text.StringBuilder]
17:02SOLVED
SOLVEDI found the little issue!
17:00COCKROACH
COCKROACHRight-o... The data on screen shows that the original scenario file contains nothing but an empty sting.... I doubt this, really
16:56DEBUG
DEBUGHopefully this debug line can shine a light on things.... Clearly no tags are created, but very likely there's nore that isn't done!
16:54INVESTIGATION
INVESTIGATIONSince the skeleton is exported, only the data itself is missing, I know the converter is to blame somehow, so that's where I need to look.
16:54INVESTIGATION
INVESTIGATIONNow I need to sort out why that happens
16:53BUG
BUGBut the result is literally: NOTHING AT ALL!
16:53VISUALSTUDIO
VISUALSTUDIOThe first setup of the converter has been set up now
15:58VISUALSTUDIO
VISUALSTUDIOPreps done for conversion
14:36CONFIG
CONFIGAuto-Licenser reconfigured
14:35JCR6
JCR6And an overload for direct filename access if needed (although this is slower, but sometimes needed).
14:32JCR6
JCR6A feature has been added to the C# version of JCR6 to copy data from one JCR6 file to another, without unpacking and repacking.
13:29VISUALSTUDIO
VISUALSTUDIOSet up a unit to easily ask for a key to be pressed when a (console) program runs from VS in stead of the prompt
11:48VISUALSTUDIO
VISUALSTUDIOAnd of course included the driver for JCR5... I would almost forget that one, but it is essential since Dyrt uses JCR5
11:47VISUALSTUDIO
VISUALSTUDIOUnits linkup
11:42JCR6
JCR6I've now made sure that the LAURA.JCR file for the original Dyrt game is now in the file list of GJCR... It was kinda frustrating having to look up that file every time.
11:35VISUALSTUDIO
VISUALSTUDIOJCR6 methods for lzma and zlib added to my transfer tool
11:35REMOVED
REMOVEDThose links as they can only spook my work up
11:34STUPIDITY
STUPIDITYAh yeah, I forgot the enormous number of files in the .git repository I don't need (at least not for this little sub-project)
11:33STATUS
STATUSFINALLY!
11:33FAILURE
FAILURENow VS is taking its sweet time to link JCR6 in....
11:24VISUALSTUDIO
VISUALSTUDIOProject started for a quick scenario tranfer tool... It does not only need to COPY the data, but also to convert it in order to be compatible with the current system
11:21SITE
SITEAdded tag VISUALSTUDIO
0:28STATUS
STATUSBut that's for later as I am tired now!
0:28TECHNO
TECHNOIrravonia Yup, the original scenario was written in a different system than was used in Star Story and TFTREVAMPED (and Sixty Three Fires of Lung).... Some conversion will be in order....
0:27STATUS
STATUSWell, there is still a lot to do, like a map (+ textures) transfer, some sprites to convert and transfer, and a scenario to convert and transfer
- = 18 Jul 2019 = -
23:27CONFIRMED
CONFIRMEDMy license update tool does work on SASKIA scripts, which is good to know ;)
23:15SASKIA
SASKIAAnd a script (which the game will never use) that shows how to make "Hello World" in SASKIA (or at least how it should work, as I cannot test it yet) should be written.
23:15GITHUB
GITHUBSASKIA doc
23:14FIXED
FIXEDSASKIA command fix
23:08NOTE
NOTENow I don't believe I will ever use more than one sequence, but the reason I put this in, is because you never know about future projects which could be more complex, and there a different approach could still be in order.
23:07TECHNO
TECHNOThis cycle routine will cycle through all the currently started SASKIA sequences, and SASKIA can have multiple sequences open in once. It should be noted though that this should be used as little at possible as SASKIA is pretty slow and the more sequences running the slower the system gets.
23:05SASKIA
SASKIACycle routine has been added
22:58SASKIA
SASKIAGOSUB command added
22:48SASKIA
SASKIASession list added
22:09SASKIA
SASKIAPlease note that SASKIA cannot be tested until the moment I actually start working on the game. It will undoubtedly contain tons of bugs and cockroaches.
22:03SITE
SITEAdded tag SASKIA
22:03DONE
DONEI've set up the basis of a small scripting language called SASKIA...
SASKIA is far from sophisticated, but it doesn't need to be (in fact, if it was sophisticated I didn't do my job well), but it can at least take care of some business I need to deal with.
11:56STATUS
STATUSAnd this is also the hardest part of setting things up. As we don't have anything yet, we must set up tons of things at the time, and each of them is useless until the moment the other things are there. In other words, tons of work without any effect, and only when everything is dumped together we can see if I did it right, and if it isn't right... Well in the worse case scenario I'll have to start all over, but with my experience such a thing should not happen, but still... This ain't very nice...
11:55NOTE
NOTEAnd after that the game will force a crash, because there is nothing to link to yet.
11:54CONFIG
CONFIGLanguage can be chosen now
11:52POWERSHELL
POWERSHELLAnd let's run the build scripts.... AGAIN!
11:52LINK
LINKAnd that links everything together
11:51LUA
LUAAnd I've written the code to allow Lua and NIL to access the Mouse Hit features
11:50SITE
SITEAdded tag LUA
11:50ENHANCEMENT
ENHANCEMENTNow the mouse pointer ONLY appears if the mouse is acutally INSIDE the playing window.... Maybe not needed for NALA as NALA always works full screen (except in debug builds), but for the regular Bubble Game Engine this WILL matter
0:06NOTE
NOTEAnd that will have to do it :P
0:06BACKUP
BACKUPis running!
0:05STATUS
STATUStime to call it a day
0:05DOCUMENTATION
DOCUMENTATIONEric Multilang notes
- = 17 Jul 2019 = -
23:56FIXED
FIXEDAT LAST!!!
23:55TEST
TESTTake IX
23:54FIXED
FIXED.
23:54STUPIDITY
STUPIDITYOr maybe that's because I forgot the style change command
23:54BUG
BUGThe languages appear, but the hovering doesn't appear to do anything
23:53TEST
TESTTake VIII
23:53FIXED
FIXEDCase error!
23:49TEST
TESTTake VII
23:49LINK
LINKAnd the link to the next stage, the language selector has been established as well...
23:49DONE
DONESkill selector now registers the chosen skill
23:43STUPIDITY
STUPIDITYI didn't fully finish the skill selector, so it won't link through..... Oh, man!
23:42TEST
TESTTake VI
23:42FIXED
FIXEDUnclosed class
23:40TEST
TESTTake V
23:40FIXED
FIXEDNow it's fixed for real!
23:40COCKROACH
COCKROACHOh man!
23:39TEST
TESTTake IV
23:39FIXED
FIXEDVariable wrong name
23:38HUH
HUHHuh?
23:37TEST
TESTTake III
23:36FIXED
FIXEDThe parse error I was looking for!
23:29ENHANCEMENT
ENHANCEMENTA bit of a workout for the debug log, due to the woes of the HTML language.
23:25MYSTERY
MYSTERYMysterious parse error
23:21STUPIDITY
STUPIDITYAziella This is NIL, Jeroen.
Not C#!
23:20DONE
DONEForced my way through!
23:20COCKROACH
COCKROACHGRRR!
23:18GENERATION
GENERATIONNew Anyway file generated
23:18NOTE
NOTEThis should fix a certain error
23:18DONE
DONEMoved Language code into new nil file
23:16TEST
TESTTake II
23:16FIXED
FIXEDBad macro
23:15TEST
TESTTake I
23:15DONE
DONEBasis for language selector
23:02CONFIG
CONFIGFor now I've set languages to English and Dutch only... I'll later (when I actually got a bit of a basis up) investigate if adding Phantasarean is possible.
22:34NOTE
NOTE

And of course (spoiler alert)

ScyndiSeelah Gandra will halfway the game be renamed Scyndi, and yes I've taken this into account!
22:32CONFIG
CONFIGI've set up the English names for the characters.... When you play the language in the Dutch language you'll have the same names by the way. Any translators who think it's best to change the names for whatever reason (I can live with it if Irravonia is called "Irravonie" or something like that in French) can easily do so now.
21:06CONFIRMED
CONFIRMEDit works now
21:04TEST
TESTAnother test to make sure!
21:04COSMETIC
COSMETICNot really a bug, but the coordinate issue should also be taken care of now.
21:04FIXED
FIXEDSelection bug should be fixed now
21:04BUG
BUGAnd a little coordinate error
21:03BUG
BUGOne selected all selected
21:02FIXED
FIXEDI fixed it (of course).
21:02STUPIDITY
STUPIDITYEven with NIL wrong variable names can lead to pretty odd bugs
21:00FIXED
FIXEDI think I fixed that
21:00BUG
BUG"nil" value?
20:59FIXED
FIXEDCase error
20:58DONE
DONEAs well as the names
20:58DONE
DONEMerya Skill description should show now
20:39CONFIRMED
CONFIRMEDWorks
20:37LAZY
LAZYLazy fix
20:36DONE
DONEPic list out difficulty settings
20:23CONFIRMED
CONFIRMEDAll bugfixes accounted for...
20:23FIXED
FIXEDGOT THE LITTLE BUGGER!
20:22STATUS
STATUSAlmost there
20:19FIXED
FIXEDI think I fixed that... But I need to check this...
20:18BUG
BUGOkay, the alias routine did work, until the moment it had to put the data into the target record, as that phase is skipped and thus the finalizer could not write it in... :-/
20:16NOTE
NOTEthis is not a bug in the builder, but in JCR6 itself... Most likely....
20:16BUG
BUGAt least it should as the jcr6 lister tells me otherwise
20:15BUBBLE
BUBBLEAnd the builder now supports aliasing in general :P
20:15FIXED
FIXEDAlias issues in builder
19:58CONFIG
CONFIGAnd their descriptions!
19:57CONFIG
CONFIGNames for the difficulty modes
19:48FIXED
FIXEDForgotten compiler directive
19:38NOTE
NOTEAnd the original will be used for the casual setting (of course)
19:37ART
ARTEric in furty.... Boxpic art and difficulty setting picture (hard setting)
19:30ART
ARTManipulation for Eric in fear... Makes a good boxpic art, and will also be used for the skill settings (easy setting)
19:22STATUS
STATUSThe next step will be to set the difficulty setting... Now this is gonna be pretty important!
19:21NOTE
NOTEAs far as I can now check stuff appears to be in order now!
18:54FIXED
FIXEDANd the issue has been fixed too
18:51INVESTIGATION
INVESTIGATIONMOAR hardcoredebugging, as it's beyond odd now!
18:49INVESTIGATION
INVESTIGATIONSomething is wrong with the parser that processes the information Game Jolt provides... The question is... Why!
18:23MYSTERY
MYSTERYEverything works at it should, but C# appears unable to see the success...
18:21DEBUG
DEBUGso hardcore stuff is required
18:21COCKROACH
COCKROACHBut what goes wrong is still beyond me
18:18LINK
LINKMade that link the feature was meant for.
18:18ENHANCEMENT
ENHANCEMENTLink possibility to link error handlers to the GJ API
18:10DEBUG
DEBUGThe faulty line has been found.
17:58COCKROACH
COCKROACHThe key lies in dictionary keys, but where is the invalid key requested....
17:54TECHNO
TECHNOThe result of NIL still being premature.
I do need a kind of forwarding system
17:54FIXED
FIXEDClass conflict issues
17:43OFFTOPIC
OFFTOPIC
16:11STATUS
STATUSTme for a break... I also got a visitor now... I will investigate later where it goes wrong
15:49REMOVED
REMOVEDDernor Some more calles to the deprecated .NEW() method (I wonder how many times I still gotta do that!)
15:46BUG
BUGLogging with correct credentials ALSO doesn't work, and I wonder why... But very likely also the exception thrown somewhere
15:40FIXED
FIXEDAND NOW IT SHOULD BE FIXED!!!
15:39RESEARCH
RESEARCHLet's read up some more
15:38COCKROACH
COCKROACHSTILL NO GOOD!
15:37TEST
TESTTake SEVEN (six was where the last bug came up)
15:37DONE
DONESome more crap
15:36COCKROACH
COCKROACHOr so I thought
15:34FIXED
FIXEDNumbers didn't work in Game Jolt Credential input fields
15:30NOTE
NOTEThese too have not yet been provided with pictures
15:29GAMEJOLT
GAMEJOLTEnemy bio: Kirana
15:29GAMEJOLT
GAMEJOLTEnemy bio: Aldarus
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112