Îõ³h, W Þ1.0.0.0NoneÉä Ógrfn/Strategies that may be used with parallel callsgrfnÛTakes an Integer for Bitsize value to operate on range [2 ^ y, 2 ^ y + 1 - 1]. This function leverages parallel execution Provide an integer input and it should generate a tuple of a number in the range [2^y, 2^y+1 -1] and its prime factors In the event that the concurrent call fails, a recovery through a basic parallelised call is attempted.grfn•Parallel preFactored Number given BitSize Provide an integer input. Generate a tuple of a number in the range [2^y, 2^y+1 -1] and its prime factors.grfnÔSpin up t threads of function f in parallel and return the one which completes firstgrfnóSpin up t actions of function f in parallel and return what's executed first for now ignore t; fires up a 2 horse # call from Control.Concurrent.Async grfn…Spin up t Forks of function f in parallel and return what's executed first for now ignore the second paramemter; fires up a 2-horse  call from Data.Unamb grfn*Convert async.race from Either-Or to Maybe grfn Convert Data.Unamb.race to Maybe grfn-Figure out # cores to use for parallelizationgrfn¦Takes an Integer as a Bitsize value to operate on range [2 ^ y, 2 ^ y + 1 - 1] Provide an integer input and it should generate a tuple of a number in the range [2^y, 2^y+1 -1] and its prime factors. if it throws up a value below 2^n then do again. 50% of the time it should result in success. grfnóAn operator to compare the Right first value of the (Int, [Int]) to an Int for Truth-value of lesser-than predicategrfnÏThis is the Entry Function with a Integer bound. This is the core of the Kalai algorithm Provide an integer input and it should generate a tuple of a number less than the input integer and its prime factorsgrfnàProvided an Integer List, throws up a candidate Int and its prime factors for further assessmentgrfn*parallel filter with 3 optional strategiesgrfn’Reduction of a composite list of integers into primefactors Select the parallel (or not) strategy based on the size range. Use Parallel > BilliongrfnÕProvided an Integer, throws up a candidate Int and its factors for further evaluationgrfnúProvided an Integer, creates a sequence of random integers LTE n in decreasing order, possibly with multiples ending at 1grfnÀGet a Random Integer with uniform probability in the range (l,u)grfnªLeft-to-right Kleisli composition of monads plus prepend elem to List using applicative Late edit: there may be something in Control.arrow that already does exactly thisgrfnïTrue if input is prime or 1 Primality testing is one key to peformance of this algo the isOdd and greater than 3 is for the use of bailliePSW primality using bailliePSW in place of the standard isPrime leads to 75% reduction in time !!!grfnfrom Data.Function.predicategrfn if then else made concise  grfn-1.0.0.0-inplaceFactoredRandomNumbersgrfnpreFactoredNumOfBitSizeParpreFactoredNumOfBitSizegenARandomPreFactoredNumberLTEn $fEqStratsStratspreFactoredNumOfBitSizeParMaybe spinUpThreads_spinUpActionssync-2.2.5-6252f32d!Control.Concurrent.Async.Internalrace _spinUpForks _raceJust _raceJustU coresToUse<|filterPrimesProduct parFilteronlyPrimesFrompotentialResultmkList getRndMInt>=>: isPrimeOr1isif'