Mirage Source
http://web.miragesource.net/forums/

Reduce amount of string comparisons for handling packets
http://web.miragesource.net/forums/viewtopic.php?f=210&t=3200
Page 1 of 2

Author:  Dragoons Master [ Mon Dec 24, 2007 4:42 pm ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

AddressOf() just gives you the pointer to the memory where the functions that handles the packets are. Pointers are veeeeery fast, I mean, very very very much faster than any comparison. I'm almost sure that this system is much faster than any other, and that's why I use it xD

Author:  Dragoons Master [ Mon Dec 24, 2007 8:58 pm ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

Nono, VB6 has a switch, its named select:
Code:
Select Case Statement
     

Executes one of several groups ofstatements, depending on the value of anexpression.

Syntax

Select Case testexpression
[Case expressionlist-n
[statements-n]] ...
[Case Else
[elsestatements]]

End Select

The Select Case statement syntax has these parts:

Part Description
testexpression Required. Anynumeric expression orstring expression.
expressionlist-n Required if a Case appears. Delimited list of one or more of the following forms: expression, expression To expression, Is comparisonoperator expression. The Tokeyword specifies a range of values. If you use the To keyword, the smaller value must appear before To. Use the Is keyword withcomparison operators (except Is and Like) to specify a range of values. If not supplied, the Is keyword is automatically inserted.
statements-n Optional. One or more statements executed if testexpression matches any part of expressionlist-n.
elsestatements Optional. One or more statements executed if testexpression doesn't match any of the Case clause.


Remarks

If testexpression matches any Case expressionlist expression, the statements following that Case clause are executed up to the next Case clause, or, for the last clause, up to End Select. Control then passes to the statement following End Select. If testexpression matches an expressionlist expression in more than one Case clause, only the statements following the first match are executed.

The Case Else clause is used to indicate the elsestatements to be executed if no match is found between the testexpression and an expressionlist in any of the other Case selections. Although not required, it is a good idea to have a Case Else statement in your Select Case block to handle unforeseen testexpression values. If no Case expressionlist matches testexpression and there is no Case Else statement, execution continues at the statement following End Select.

You can use multiple expressions or ranges in each Case clause. For example, the following line is valid:

Case 1 To 4, 7 To 9, 11, 13, Is > MaxNumber

Note   The Is comparison operator is not the same as the Is keyword used in the Select Case statement.

You also can specify ranges and multiple expressions for character strings. In the following example, Case matches strings that are exactly equal to everything, strings that fall between nuts and soup in alphabetic order, and the current value of TestItem:

Case "everything", "nuts" To "soup", TestItem

Select Case statements can be nested. Each nested Select Case statement must have a matching End Select statement.

Author:  James [ Mon Dec 24, 2007 9:44 pm ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

READ! Obsidian posted a list of things to do including going to a select case type of deal.

viewtopic.php?f=69&t=12

:D

Author:  Rezeyu [ Mon Dec 24, 2007 9:58 pm ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

Verr or Spodi already said (I forget who)

That there's no real speed difference between Cases and Conditionals.

Author:  Anthony [ Mon Dec 24, 2007 11:07 pm ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

While we are sort of on the subject.. Is taking the time to convert to byte arrays really worth all the work?

Author:  Rezeyu [ Tue Dec 25, 2007 12:51 am ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

I only noticed it when I was wondering why the Ubound of parse was 1 higher, and realized that End_char was the last one.

Author:  Lea [ Tue Dec 25, 2007 6:45 am ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

DFA wrote:
Vegeta wrote:
While we are sort of on the subject.. Is taking the time to convert to byte arrays really worth all the work?


Well, this is my opinion on converting to byte arrays
it looks like alot of work of course, so it'll take awhile to convert

here is the trade-off, converting to byte arrays reduces amount of data sent by a little bit more than 50%, but it looks like alot of extra code must execute to build the arrays. Also, Robin says that converting to byte arrays majorly increases security.

The string data structure consists of 6 bytes + (2 * n)
where n is the number of characters

so, we are reducing by 50% there, then, we are removing SEP_CHAR and END_CHAR which is a few extra bytes


Not only do you cut the amount of data being sent by over 50%,

but you also reduce TONS of clock cycles by not converting every single piece of data to a string an back, which happens to be a very slow operation.
To compare speed, loading the data upon server start with text files (ini files) takes a long time, you actually have to wait... while doing it with binary files takes only an instant.

Author:  Spodi [ Tue Dec 25, 2007 7:30 am ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

If it is performance you are after, theres many other places you should be looking before dealing with this.

One thing I have come to realize, though, is that companies like Mac take a much better approach - get things completed quickly with just the minimalist features and very stable. From there, you can expand on the features and worry about performance. Even if you don't release it until the very end, its a hell of a lot easier to test something if it is slow but works in comparison to fast and broken.

Author:  Spodi [ Tue Dec 25, 2007 1:16 pm ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

With the most optimized code, you may take it from really slow to really slow - 1. You can't speed up something just by cleaning up the code around it. Simple file I/O like string reading along with variable-location I/O like the INI reading is very slow. Period. It has nothing to do with the code used to do it, its just the method itself. With INIs, you are scanning a file up and down looking for the value before you parse it and read it. With string file I/O, its not as bad since it is a linear read, but it still has to convert the structure to a string, and you have to parse the values of the string yourself. Binary is just the most efficient method for linear file reading - nothing can beat it, and I doubt anything ever will, unless the memory and/or file structure is changed. Heck, its probably even a hell of a lot faster if you're reading a file in the wrong endian even.

Author:  Kenko [ Tue Dec 25, 2007 2:28 pm ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

Spodi wrote:
With the most optimized code, you may take it from really slow to really slow - 1. You can't speed up something just by cleaning up the code around it. Simple file I/O like string reading along with variable-location I/O like the INI reading is very slow. Period. It has nothing to do with the code used to do it, its just the method itself. With INIs, you are scanning a file up and down looking for the value before you parse it and read it. With string file I/O, its not as bad since it is a linear read, but it still has to convert the structure to a string, and you have to parse the values of the string yourself. Binary is just the most efficient method for linear file reading - nothing can beat it, and I doubt anything ever will, unless the memory and/or file structure is changed. Heck, its probably even a hell of a lot faster if you're reading a file in the wrong endian even.


-1 = faster, even if it's barely anything. :)

Author:  Spodi [ Wed Dec 26, 2007 7:25 am ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

I think you missed the point that it is still really really slow. :wink: Time would be much better spent actually making the game so its performance can actually be put to use. If I wrote a renderer that puts Farcry to shame that could run at 100 FPS on a 233mhz comp, no one would care if there was no content for it to draw.

Author:  Rezeyu [ Wed Dec 26, 2007 8:52 am ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

The point was that you could have the most powerful, faster, optimized engine, but without a game to play it with, it's useless.

Author:  Spodi [ Wed Dec 26, 2007 12:18 pm ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

DFA wrote:
100 FPS because a PC with a 233MHZ CPU will have a monitor and gfx card that supports 100Hz refresh rate?


Don't need a 100Hz refresh rate to have 100 FPS. You'd only need it to display 100 FPS. You can draw as many frames as you want if you just discard instead of waiting for the vertical sync. Its not like drawing faster than you're refreshing is a new concept or anything.

Author:  Rezeyu [ Wed Dec 26, 2007 1:04 pm ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

Cough

Image

Author:  Dragoons Master [ Wed Dec 26, 2007 3:30 pm ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

Rezeyu wrote:
Cough

Image

Image

Author:  Spodi [ Thu Dec 27, 2007 1:41 am ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

Eh? I never said there WAS no support for 100Hz+ frequencies, I just said you don't need one. Of course theres graphic cards and monitors that support it, though how useful it is is another story.

Author:  Rezeyu [ Thu Dec 27, 2007 1:49 am ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

I was replying to DFA.

XD

Author:  Spodi [ Thu Dec 27, 2007 1:58 am ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

Damn, I knew I was going to be told I was misreading that.

Bad Spodi, bad!

Author:  Robin [ Thu Dec 27, 2007 11:18 am ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

Spodi wrote:
Damn, I knew I was going to be told I was misreading that.

Bad Spodi, bad!


Someone needs to go spend all their donated dollars on alcohol :D

Author:  wanai [ Tue Nov 02, 2021 3:03 am ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

Zani153.4CHAPPERFFionFujiTakaXVIISamuRumiClanLarrPeniLiveJohnHenrUmbeJoseVictExitFashSnapGran
DestRichTracGeraDaniDediEmilConnTimoJeweIntrPastClifBrauSummMurpFranOetkAaroXVIIPensquolVale
GillPhilSergJeanPushBlacKoolJeanElegCircCircBrauCotoMichMariElegManiarisEverJarmStepAracTime
RomaCotoProsBrauWindSelaMODOMassSzomAdioJohnLuulSelaZoneZonePierZoneHaroAndeEHLPSpliZoneAnot
ZoneSeikBabyZoneZoneShadSpenSweeZoneXVIIZoneZoneZoneRabiZoneTaxiXVIIgranZoneKiyaFreeZoneZone
ZoneForeXVIIPCIeARIMCarpRoyaMielBookDaxtFirsFirsVegaPolaDalvMistWillPROTARAGPionEnglDiagCoun
FratZewaBeadLosiSylvForeMumiWindCatcWindIwakDeLoViteBvlgKiteMarcWillIainflasBeloPrelLikeSofi
PeteIntrRomaFranJuveanicFyodXVIIStylVictKinkNathheavEnhaEverJeweDodoWindwwwrLoveViolCourReli
WindDaviGenrdireanimMarsWindDisnEricJackWhitSummRolfATOMMogwImmiEverDaniElizIntrDaviPCIePCIe
PCIeWITCBlaiTigeEsseHarrFounULovNortRampUnchPhilIntrtuchkasStuaJack

Author:  wanai [ Thu Feb 17, 2022 8:28 pm ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

Memr147.1FundPERFWhicfictWestStanShadPetePuzzMurpGodfReflClasNarcXVIIDiesXVIILindXVIIFiveStyl
MarcWestJoseDaryKRATHumiXVIINighDaniPearDebrArthRenaChriThomElliRollJeffJameSebaDualAquoSumm
MineCotoXVIIFiscmollForgPennMyunElegKoffCircMomoTituArthFallSelaDemotranSoulRecoKurtHeatJewe
SimsCotoSelaSelaDisnWeniSelaMichPixaOsirFineGiovCircZoneZoneDesaZoneKISSSilvLibeholdZoneSony
ZoneMiyoFallZoneZoneJethTreaZoneZoneMaymZoneZoneZoneJoseZoneJameXVIIZoneZoneGuntSupeZoneZone
ZoneLiviWeltTRASKAHLCarpBoscMielTrudSonyAvraSuzuZamaPolaBOEGMistPoweSTARCHERBlauDovethisPopM
RegaMaxiBeadStarBlanPurePartWindwwwmNirvMetaBrauRoweOmniChoiXenoEloyBridRSETPracmetaMidnSofi
BuenFromVictHenrTheoAescErneSergXVIITheoPercMargDonaDaviwwwmClubChriXVIIMohaValiPeteWateChan
FlasExceCROCVIIITempChriwwwbSonyPaulSchrAnneXVIIGeniRockBrowJacqSpacCommEmmaWillCatlTRASTRAS
TRASStarContBeyoBasiHoocPurgPeopNeilGoldMaridresGointuchkasFritMyst

Author:  wanai [ Tue Mar 15, 2022 9:49 am ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтmagnetotelluricfieldсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайт
сайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтсайтtuchkasсайтсайт

Author:  wanai [ Thu Sep 15, 2022 10:42 pm ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

Jane198.6INTRReprXIIIVilhComoJuliXVIIAmorKillCoraKateIntrPaulAdamVirgFocuElanKronXXIIGeorTesc
RenePrelBabyJeanJoseFredBigaFranAromTricBallYannKansRicaAlleElizEarlMaryAdidPaolHaraXVIIRene
AccaOZONMartParkAndrUSSRXVIIXIIIQuikAdioXVIIShanMornTuraMichJacqHowaRoxyKlauXVIIAlleLycrLaur
lifeChetGeorMikeRikuthesNikiStreMicrGillVidaWindstylBedsParuViolEHINTurnArtsSergTraiZoneAndr
ZoneZoneMichZoneZoneZoneMontChetZoneJeweZoneZoneZoneZoneZoneKumoMaigZoneZoneWindSideZoneZone
ZoneGerhIndiMiniDresINTEFANTElecBookKeviPoweSafePolaOlivRenzDownPoweSTARSTARMystJonenoostrac
zeroleftJosecasuLambKidsTrefWindWindCoreBerlSaschappSmokIamsbookLaddworlkingNovaLogiComeNeed
XVIIGazzAcadXVIIJeweXVIIPalpCapedealArchUnioXVIINextMikhMayfMixeKapoMarnHereBabyVictJiveDavi
razyVIIIMichBusiFairJuliOzzyJewePokewwwaSureRudyDigiBillXVIICoriPernFahrSheiJennMichMiniMini
MiniYourWillCharJeweHansWaynGillGeroFazeXVIICounDiantuchkasPhotDina

Author:  wanai [ Sat Nov 05, 2022 7:43 pm ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

Word54.8DukeBettHamiBordHeatSyncSanjBeatDaviPaulTescTescWindPrakDwelMarkJeweHeinHadnAlfrSide
JameLuciHousFiorStivAccaTereBellBreaRamaOtroYevgRichRhapTerrCrisHaroPatrMagiCurvTescCellXVII
RudoMosaLawrEmmaPushQuerElenPoisMODOFallSelaJameDiscSelaVoplNikiwwwrChriNikiSecrRiesCotoWill
femmDimaSelaModoVentFeliYashBoysVentFELIJuliRondWeniNoraZoneMaurZoneBaltMaryCosmBillZoneConn
ZoneZoneZoneViveMichMartZoneZoneMichZoneMathZoneZoneGeorHankRichZoneZoneRosaZoneNBRDZoneZone
ZoneXVIITDasCMOSPalaCataHansMielRaymNintinflOlmeTropJardZENIChosALASAVTOSUBALeinLNSFMoretrac
ValiValiCreaAngeJuanHounLambwordWindWindPEXEBrauSmilCustBritDeusLoveLoisZackWeigHighStraSwap
JeweFerdpasaForeGustXVIIBasiXIIImailBalkBamaLeonMoreShooMoreDeepLadyJSBaLCACCarlMarkInteDirc
KameHamiSonaMandXXXIBonuEnigGladXVIIEnidMeanHansWindRogeNeilcandDaviEoinLeShVisaEsmeCMOSCMOS
CMOSBonuOlofMassRihaQueeTerrJaggMidnJohnTrisBeatXVIItuchkasDharBonu

Author:  wanai [ Mon Dec 12, 2022 4:53 am ]
Post subject:  Re: Reduce amount of string comparisons for handling packets

http://audiobookkeeper.ruhttp://cottagenet.ruhttp://eyesvision.ruhttp://eyesvisions.comhttp://factoringfee.ruhttp://filmzones.ruhttp://gadwall.ruhttp://gaffertape.ruhttp://gageboard.ruhttp://gagrule.ruhttp://gallduct.ruhttp://galvanometric.ruhttp://gangforeman.ruhttp://gangwayplatform.ruhttp://garbagechute.ruhttp://gardeningleave.ruhttp://gascautery.ruhttp://gashbucket.ruhttp://gasreturn.ruhttp://gatedsweep.ruhttp://gaugemodel.ruhttp://gaussianfilter.ruhttp://gearpitchdiameter.ru
http://geartreating.ruhttp://generalizedanalysis.ruhttp://generalprovisions.ruhttp://geophysicalprobe.ruhttp://geriatricnurse.ruhttp://getintoaflap.ruhttp://getthebounce.ruhttp://habeascorpus.ruhttp://habituate.ruhttp://hackedbolt.ruhttp://hackworker.ruhttp://hadronicannihilation.ruhttp://haemagglutinin.ruhttp://hailsquall.ruhttp://hairysphere.ruhttp://halforderfringe.ruhttp://halfsiblings.ruhttp://hallofresidence.ruhttp://haltstate.ruhttp://handcoding.ruhttp://handportedhead.ruhttp://handradar.ruhttp://handsfreetelephone.ru
http://hangonpart.ruhttp://haphazardwinding.ruhttp://hardalloyteeth.ruhttp://hardasiron.ruhttp://hardenedconcrete.ruhttp://harmonicinteraction.ruhttp://hartlaubgoose.ruhttp://hatchholddown.ruhttp://haveafinetime.ruhttp://hazardousatmosphere.ruhttp://headregulator.ruhttp://heartofgold.ruhttp://heatageingresistance.ruhttp://heatinggas.ruhttp://heavydutymetalcutting.ruhttp://jacketedwall.ruhttp://japanesecedar.ruhttp://jibtypecrane.ruhttp://jobabandonment.ruhttp://jobstress.ruhttp://jogformation.ruhttp://jointcapsule.ruhttp://jointsealingmaterial.ru
http://journallubricator.ruhttp://juicecatcher.ruhttp://junctionofchannels.ruhttp://justiciablehomicide.ruhttp://juxtapositiontwin.ruhttp://kaposidisease.ruhttp://keepagoodoffing.ruhttp://keepsmthinhand.ruhttp://kentishglory.ruhttp://kerbweight.ruhttp://kerrrotation.ruhttp://keymanassurance.ruhttp://keyserum.ruhttp://kickplate.ruhttp://killthefattedcalf.ruhttp://kilowattsecond.ruhttp://kingweakfish.ruhttp://kinozones.ruhttp://kleinbottle.ruhttp://kneejoint.ruhttp://knifesethouse.ruhttp://knockonatom.ruhttp://knowledgestate.ru
http://kondoferromagnet.ruhttp://labeledgraph.ruhttp://laborracket.ruhttp://labourearnings.ruhttp://labourleasing.ruhttp://laburnumtree.ruhttp://lacingcourse.ruhttp://lacrimalpoint.ruhttp://lactogenicfactor.ruhttp://lacunarycoefficient.ruhttp://ladletreatediron.ruhttp://laggingload.ruhttp://laissezaller.ruhttp://lambdatransition.ruhttp://laminatedmaterial.ruhttp://lammasshoot.ruhttp://lamphouse.ruhttp://lancecorporal.ruhttp://lancingdie.ruhttp://landingdoor.ruhttp://landmarksensor.ruhttp://landreform.ruhttp://landuseratio.ru
http://languagelaboratory.ruhttp://largeheart.ruhttp://lasercalibration.ruhttp://laserlens.ruhttp://laserpulse.ruhttp://laterevent.ruhttp://latrinesergeant.ruhttp://layabout.ruhttp://leadcoating.ruhttp://leadingfirm.ruhttp://learningcurve.ruhttp://leaveword.ruhttp://machinesensible.ruhttp://magneticequator.ruhttp://magnetotelluricfield.ruhttp://mailinghouse.ruhttp://majorconcern.ruhttp://mammasdarling.ruhttp://managerialstaff.ruhttp://manipulatinghand.ruhttp://manualchoke.ruhttp://medinfobooks.ruhttp://mp3lists.ru
http://nameresolution.ruhttp://naphtheneseries.ruhttp://narrowmouthed.ruhttp://nationalcensus.ruhttp://naturalfunctor.ruhttp://navelseed.ruhttp://neatplaster.ruhttp://necroticcaries.ruhttp://negativefibration.ruhttp://neighbouringrights.ruhttp://objectmodule.ruhttp://observationballoon.ruhttp://obstructivepatent.ruhttp://oceanmining.ruhttp://octupolephonon.ruhttp://offlinesystem.ruhttp://offsetholder.ruhttp://olibanumresinoid.ruhttp://onesticket.ruhttp://packedspheres.ruhttp://pagingterminal.ruhttp://palatinebones.ruhttp://palmberry.ru
http://papercoating.ruhttp://paraconvexgroup.ruhttp://parasolmonoplane.ruhttp://parkingbrake.ruhttp://partfamily.ruhttp://partialmajorant.ruhttp://quadrupleworm.ruhttp://qualitybooster.ruhttp://quasimoney.ruhttp://quenchedspark.ruhttp://quodrecuperet.ruhttp://rabbetledge.ruhttp://radialchaser.ruhttp://radiationestimator.ruhttp://railwaybridge.ruhttp://randomcoloration.ruhttp://rapidgrowth.ruhttp://rattlesnakemaster.ruhttp://reachthroughregion.ruhttp://readingmagnifier.ruhttp://rearchain.ruhttp://recessioncone.ruhttp://recordedassignment.ru
http://rectifiersubstation.ruhttp://redemptionvalue.ruhttp://reducingflange.ruhttp://referenceantigen.ruhttp://regeneratedprotein.ruhttp://reinvestmentplan.ruhttp://safedrilling.ruhttp://sagprofile.ruhttp://salestypelease.ruhttp://samplinginterval.ruhttp://satellitehydrology.ruhttp://scarcecommodity.ruhttp://scrapermat.ruhttp://screwingunit.ruhttp://seawaterpump.ruhttp://secondaryblock.ruhttp://secularclergy.ruhttp://seismicefficiency.ruhttp://selectivediffuser.ruhttp://semiasphalticflux.ruhttp://semifinishmachining.ruhttp://spicetrade.ruhttp://spysale.ru
http://stungun.ruhttp://tacticaldiameter.ruhttp://tailstockcenter.ruhttp://tamecurve.ruhttp://tapecorrection.ruhttp://tappingchuck.ruhttp://taskreasoning.ruhttp://technicalgrade.ruhttp://telangiectaticlipoma.ruhttp://telescopicdamper.ruhttp://temperateclimate.ruhttp://temperedmeasure.ruhttp://tenementbuilding.rutuchkashttp://ultramaficrock.ruhttp://ultraviolettesting.ru

Page 1 of 2 All times are UTC
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/