@ file : Jvm Name (" Kotlin Eval ") Ċ package Ġio . github . hot l ava 0 3 . b acl aval ite . util Ċ Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . coroutine Scope Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġnet . dv 8 tion . j da . api . requests . Rest Action Ċ import Ġorg . jetbrains . kotlin . cli . common . repl . Kotlin J sr 2 2 3 Jvm Script Engine Factory Base Ċ import Ġorg . jetbrains . kotlin . cli . common . repl . Script Args With Types Ċ import Ġorg . jetbrains . kotlin . script . js r 2 2 3 . Kotlin J sr 2 2 3 Jvm Local Script Engine Ċ import Ġorg . jetbrains . kotlin . script . js r 2 2 3 . Kotlin Standard J sr 2 2 3 Script Template Ċ import Ġjava . io . File Ċ import Ġjavax . script . Bindings Ċ import Ġjavax . script . Script Context Ċ import Ġjavax . script . Script Engine Ċ Ċ late init Ġvar Ġengine : ĠScript Engine Ċ Ċ private Ġval ĠIMPORT S Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ" io . github . hot l ava 0 3 . b acl aval ite . cle ver bot .* ", ĊĠĠĠĠĠĠĠ Ġ" io . github . hot l ava 0 3 . b acl aval ite . cle ver bot . messages .* ", ĊĠĠĠĠĠĠĠ Ġ" io . github . hot l ava 0 3 . b acl aval ite . commands .* ", ĊĠĠĠĠĠĠĠ Ġ" io . github . hot l ava 0 3 . b acl aval ite . util .* ", ĊĠĠĠĠĠĠĠ Ġ" io . github . hot l ava 0 3 . b acl aval ite .* ", ĊĠĠĠĠĠĠĠ Ġ" java . lang .* ", ĊĠĠĠĠĠĠĠ Ġ" java . io .* ", ĊĠĠĠĠĠĠĠ Ġ" java . math .* ", ĊĠĠĠĠĠĠĠ Ġ" java . time .* ", ĊĠĠĠĠĠĠĠ Ġ" java . awt .* ", ĊĠĠĠĠĠĠĠ Ġ" java . awt . image .* ", ĊĠĠĠĠĠĠĠ Ġ" javax . image io .* ", ĊĠĠĠĠĠĠĠ Ġ" java . time . format .* ", ĊĠĠĠĠĠĠĠ Ġ" kotlin x . coroutines .* ", ĊĠĠĠĠĠĠĠ Ġ" kotlin . reflect .* ", ĊĠĠĠĠĠĠĠ Ġ" kotlin . reflect . jvm .* ", ĊĠĠĠĠĠĠĠ Ġ" kotlin . reflect . full .* ", ĊĠĠĠĠĠĠĠ Ġ" kotlin . system .* ", ĊĠĠĠĠĠĠĠ Ġ" kotlin . io .* ", ĊĠĠĠĠĠĠĠ Ġ" kotlin . random .* ", ĊĠĠĠĠĠĠĠ Ġ" kotlin . concurrent .* ", ĊĠĠĠĠĠĠĠ Ġ" kotlin . properties .* ", Ċ ) Ċ Ċ fun Ġinit Kotlin Eval Engine () Ġ{ ĊĠĠĠ Ġengine Ġ= ĠB acl ava Kotlin Script Engine Factory (). script Engine Ċ } Ċ Ċ suspend Ġfun Ġeval ( code : ĠString , Ġvariables : ĠMap < String , ĠAny >): ĠString Ġ= Ġcoroutine Scope Ġ{ ĊĠĠĠ Ġ// ĠGet Ġthe Ġengine . ĊĠĠĠ Ġ// Ġval Ġengine Ġ= ĠScript Engine Manager (). get Engine By Extension (" k ts ") ĊĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġvariables ) Ġengine . put ( key , Ġvalue ) ĊĊĠĠĠ Ġval Ġscript Prefix Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġengine . get Bindings ( Script Context . ENGINE _ SCOPE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( "." Ġ! in Ġkey ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname : ĠString Ġ= Ġvalue . java Class . name . replace (" object ", Ġ"` object ` ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbind Ġ= Ġ""" val Ġ$ key Ġ= Ġbindings [" $ key "] Ġas Ġ$ name """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend Line ( bind ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġto Eval Ġ= Ġ" import Ġ" Ġ+ ĠIMPORT S . join ToString ("\ n import Ġ") Ġ+ Ġ"\ n " Ġ+ Ġ"\ n " Ġ+ Ġscript Prefix Ġ+ Ġ"\ n " Ġ+ Ġcode ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġevaluated : ĠAny ? Ġ= Ġengine . eval ( to Eval , Ġengine . context ) ĊĠĠĠĠĠĠĠ Ġif Ġ( evalu ated Ġ!== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ coroutine Scope Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( evalu ated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRest Action < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevaluated . queue () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Unit " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUnit Ġ-> Ġ" Unit " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Ġ-> Ġ"\" ${ evalu ated . replace ("\ n ", Ġ"\\ n ") }\ "" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġevaluated . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn @ coroutine Scope Ġ" null " ĊĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġerr Ġ= Ġt . stack Trace ToString () ĊĠĠĠĠĠĠĠ Ġreturn @ coroutine Scope Ġif Ġ( err . length Ġ> Ġ 1 9 9 0 ) Ġt . stack Trace ToString (). substring ( 0 , Ġ 1 9 9 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ("\\ s + at Ġ. +$ ". to Regex (), Ġ"") ĊĠĠĠĠĠĠĠ Ġelse Ġerr ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠB acl ava Kotlin Script Engine Factory Ġ: ĠKotlin J sr 2 2 3 Jvm Script Engine Factory Base () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Script Engine (): ĠScript Engine Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠKotlin J sr 2 2 3 Jvm Local Script Engine ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( get Jar File ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKotlin Standard J sr 2 2 3 Script Template :: class . qualified Name !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġctx , Ġtypes Ġ-> ĠScript Args With Types ( array Of ( ctx . get Bindings ( Script Context . ENGINE _ SCOPE )), Ġtypes Ġ?: Ġempty Array ()) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Bindings :: class ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Jar File (): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFile ( B acl ava Kotlin Script Engine Factory :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. protection Domain . code Source . location . to URI ()) ĊĠĠĠ Ġ} Ċ Ċ } Ċ