package Ġme . fab ian fg . play lists Ċ Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . json . Json Configuration Ċ import Ġme . fung ames . j fort n ite parse . file provider . Default File Provider Ċ import Ġme . fung ames . j fort n ite parse . ue 4 . loc res . Fn Language Ċ import Ġme . fung ames . j fort n ite parse . ue 4 . objects . core . i 1 8 n . F Text Ċ import Ġme . fung ames . j fort n ite parse . ue 4 . objects . core . misc . F Guid Ċ import Ġme . fung ames . j fort n ite parse . ue 4 . versions . Ue 4 Version Ċ import Ġjava . io . File Ċ Ċ private Ġval Ġjson Ġ= ĠJson ( Json Configuration . Stable . copy ( pretty Print Ġ= Ġtrue , Ġignore Unknown Keys Ġ= Ġtrue )) Ċ Ċ @ Serializable Ċ private Ġclass ĠConfig ( val Ġinstall Path Ġ: ĠString , Ġval Ġaes Key Ġ: ĠString , Ġval Ġlanguage Ġ: ĠFn Language ) Ċ Ċ @ Experimental Unsigned Types Ċ fun Ġget P ak FilePath Epic Launcher () Ġ: ĠString ? Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= ĠFile ("${ System . getenv (" PROGRAM DATA ") }\\ Epic \\ Un real Engine Launcher \\ Launcher Installed . dat ") ĊĠĠĠ Ġif Ġ( file . exists () Ġ&& Ġfile . can Read ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstalled R Ġ= Ġrun Catch ing Ġ{ Ġjson . parse ( Launcher Installed . serializer (), Ġfile . read Text ()) Ġ} ĊĠĠĠĠĠĠĠ Ġinstalled R . on Failure Ġ{ Ġprintln (" Invalid Ġlauncher Ġinstallation ") Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġinstalled Ġ= Ġinstalled R . get OrNull () Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġinstalled . Installation List . first OrNull Ġ{ Ġit . AppName Ġ== Ġ" Fort n ite " Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( game Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Fort n ite ĠInstallation Ġdetected : Ġ${ game . Install Location }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġgame . Install Location Ġ+ Ġ"\\ Fort n ite Game " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Fort n ite Ġis Ġnot Ġinstalled ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Failed Ġto Ġfind ĠE pic ĠGames ĠLaunch er ĠInstallation ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull Ċ } Ċ Ċ @ Serializable Ċ private Ġdata Ġclass ĠLaunch er Installed ( ĊĠĠĠ Ġval ĠInstallation List Ġ: ĠList < Install Item > Ċ ) Ċ Ċ @ Serializable Ċ private Ġdata Ġclass ĠInstall Item ( ĊĠĠĠ Ġval ĠInstall Location Ġ: ĠString , ĊĠĠĠ Ġval ĠApp Name Ġ: ĠString , ĊĠĠĠ Ġval ĠApp Version Ġ: ĠString Ċ ) Ċ Ċ @ Experimental Unsigned Types Ċ private Ġfun Ġload Config () Ġ= Ġrun Catch ing Ġ{ ĊĠĠĠ Ġjson . parse ( Config . serializer (), ĠFile (" config . json "). read Text ()) Ċ }. getOrElse Ġ{ ĊĠĠĠ Ġval Ġpak Path Ġ= Ġget P ak FilePath Epic Launcher () Ġ?: Ġ"" ĊĠĠĠ Ġval Ġconfig Ġ= ĠConfig ( pak Path , Ġ"", ĠFn Language . EN ) ĊĠĠĠ ĠFile (" config . json "). write Text ( json . stringify ( Config . serializer (), Ġconfig )) ĊĠĠĠ Ġconfig Ċ } Ċ Ċ fun Ġload Files To Look For () Ġ= Ġrun Catch ing Ġ{ ĊĠĠĠ ĠFile (" search . txt "). read Lines () Ċ }. getOrElse Ġ{ ĊĠĠĠ ĠFile (" search . txt "). createNew File () ĊĠĠĠ Ġempty List () Ċ } Ċ Ċ @ Experimental Unsigned Types Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġconfig Ġ= Ġload Config () ĊĊĠĠĠ Ġif Ġ( config . aes Key . trim (). length Ġ!= Ġ 6 6 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Please Ġenter Ġa Ġvalid Ġaes Ġkey Ġin Ġconfig . json ") ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( config . install Path . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Couldn 't Ġget Ġinstallation Ġdir , Ġplease Ġenter Ġmanually Ġin Ġconfig . json ") ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġsearch Ġ= Ġload Files To Look For (). map Ġ{ Ġit . trim (). toLowerCase () Ġ} ĊĠĠĠ Ġif Ġ( search . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" search . txt Ġis Ġempty . ĠPlease Ġadd Ġplaylist Ġcode Ġnames Ġto Ġsearch Ġfor Ġseparated Ġby Ġnew Ġlines ") ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġprovider Ġ= ĠDefault File Provider ( File ( config . install Path ), ĠU e 4 Version . GAME _ UE 4 _ 2 5 ) ĊĠĠĠ Ġval Ġsub Ġ= Ġprovider . submit Key ( F Guid . main Guid , Ġconfig . aes Key . trim ()) ĊĠĠĠ Ġif Ġ( sub Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" The Ġaes Ġkey Ġ'${ config . aes Key }' Ġdoesn 't Ġwork Ġwith Ġany Ġpak Ġfile , Ġplease Ġcheck Ġit ") ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Mount ed Ġ$ sub Ġpak Ġfiles ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġloc res Ġ= Ġprovider . load Loc res ( config . language ) ĊĠĠĠ Ġif Ġ( loc res Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Loaded Ġloc res Ġfor Ġlanguage Ġ${ config . language . name }") ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Failed Ġto Ġload Ġloc res Ġfor Ġlanguage Ġ${ config . language . name }") ĊĠĠĠ Ġ} ĊĠĠĠ Ġprintln () ĊĠĠĠ Ġval Ġfound Ġ= Ġprovider . files (). filter Ġ{ Ġsearch . contains ( it . key . substring After Last ('/ '). substring Before Last ('. ')) Ġ} ĊĠĠĠ Ġfound . forEach Ġ{ Ġentry Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġpkg Ġ= Ġprovider . load Game File ( entry . value ) ĊĠĠĠĠĠĠĠ Ġval Ġplaylist Ġ= Ġpkg ?. export Map ?. first OrNull Ġ{ Ġit . class Index . name . contains (" Fort Playlist A then a ", Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( playlist Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexport Ġ= Ġplaylist . export Object . value . base Object ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdisplayName Ġ= Ġexport . get OrNull < F Text >(" UID is play Name ") ?. text For Loc res ( loc res ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( displayName Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("${ playlist . objectName . text } Ġ--> Ġ$ displayName ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("${ playlist . objectName . text } Ġdidn 't Ġhave ĠUID is play Name Ġproperty ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("${ entry . value . getName Without Extension ()} Ġwas Ġnot Ġa Ġplaylist ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }