import  java.util.* ; 
import  java.lang.* ; 
import  java.util.concurrent.* ; 
 
class  Main
{ 
	{ 
        ExecutorService executorService =  Executors.newFixedThreadPool ( 1 ) ; 
		FutureTask
< Object
>  futureTask 
=  new  FutureTask
< Object
> ( new  Runnable ( )  {             public  void  run( ) 
            { 
                System .
out .
println ( "Hello async world!" ) ;              try 
            { 
            } 
            { 
                System .
out .
println ( "Err: "  +  interruptedException
) ;              } 
                System .
out .
println ( "I'm finally done" ) ;              } 
		} , null ) ; 
        System .
out .
println ( "Defined" ) ;          executorService.execute ( futureTask) ; 
        System .
out .
println ( "Running" ) ;          while  ( ! futureTask.isDone ( ) ) 
        { 
            System .
out .
println ( "Task not yet completed." ) ;   
            try 
            { 
            } 
            { 
            } 
        } 
	} 
} 
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC4qOwoKY2xhc3MgTWFpbgp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkJlZm9yZSIpOwogICAgICAgIEV4ZWN1dG9yU2VydmljZSBleGVjdXRvclNlcnZpY2UgPSBFeGVjdXRvcnMubmV3Rml4ZWRUaHJlYWRQb29sKDEpOwoJCUZ1dHVyZVRhc2s8T2JqZWN0PiBmdXR1cmVUYXNrID0gbmV3IEZ1dHVyZVRhc2s8T2JqZWN0PihuZXcgUnVubmFibGUoKSB7CiAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSGVsbG8gYXN5bmMgd29ybGQhIik7CiAgICAgICAgICAgIHRyeQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVGhyZWFkLnNsZWVwKDEwMDApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBpbnRlcnJ1cHRlZEV4Y2VwdGlvbikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFcnI6ICIgKyBpbnRlcnJ1cHRlZEV4Y2VwdGlvbik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSSdtIGZpbmFsbHkgZG9uZSIpOwogICAgICAgICAgICB9CgkJfSwgbnVsbCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJEZWZpbmVkIik7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKG5ldyBEYXRlKCkpOwogICAgICAgIGV4ZWN1dG9yU2VydmljZS5leGVjdXRlKGZ1dHVyZVRhc2spOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUnVubmluZyIpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgRGF0ZSgpKTsKICAgICAgICB3aGlsZSAoIWZ1dHVyZVRhc2suaXNEb25lKCkpCiAgICAgICAgewogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRhc2sgbm90IHlldCBjb21wbGV0ZWQuIik7CgogICAgICAgICAgICB0cnkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFRocmVhZC5zbGVlcCgzMDApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBpbnRlcnJ1cHRlZEV4Y2VwdGlvbikKICAgICAgICAgICAgewogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRG9uZSIpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuZXcgRGF0ZSgpKTsKCX0KfQ==